This is the mail archive of the crossgcc@sourceware.org mailing list for the crossgcc project.

See the CrossGCC FAQ for lots more information.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: PowerPC gcc drops incorrect code


Kai, thanks for your reply.

On Thursday 17 November 2005 19:49, Kai Ruottu wrote:
>   I have never used this new 'crosstool' bolshevism, only using my
> own brains for making all the decisions...

<grin> Things like crosstool are great labour-saving things, because you 
can just run them without thinking too hard. However, they hide all the 
details, which is fine until something breaks, then you realise it 
would have been better to have understood the details in the first 
place.

>   As I remember, the '8540' belongs to the 'SPE' variation(s) and so
> the target names 'powerpc-*spe' should be used with it. For instance
> the 'powerpc-linux-gnuspe' when Linux is the target type...

Looking at gcc/config.gcc, it appears that it doesn't do anything with 
the -linux- in the above. The field between the cpu spec and the os 
spec gets ignored by config.gcc. This seems to work ok, though:

    powerpc-something-linuxspe

>   Ok, somewhere there was discussion about the 'e500' types requiring
> different handling and even a different target name, so without
> knowing much about this 'SPE', I built one crosstoolchain more for
> the 'e500' PPC types...

In the data sheet, 'SPE' refers to vector instructions, but in the 
config.gcc it has been hijacked it to mean e500. There's probably a 
good reason for this, but to my mind it would have made more sense to 
call it something like -linuxe500. 

There's also a eabispe option, but this is mutually exclusive with 
linux.

IMHO, the gcc target spec is missing a "cpu variant" field, especially 
with the growing variety of embedded devices available. At present the 
config file only pays attention to the first and last sections of the 
target spec, namely <architecture_type>-<ignore_this>-<os_name>. This 
means the cpu specific things like SPE and whatnot have to get tacked 
onto the end of the operating system name, which doesn't seem very 
logical, particularly when there's a fair degree of orthogonality 
between the os and the target cpu variant. Maybe I just don't really 
understand the target spec. There aren't really any propper docs on it.

Cheers,

James.

------
Want more information?  See the CrossGCC FAQ, http://www.objsw.com/CrossGCC/
Want to unsubscribe? Send a note to crossgcc-unsubscribe@sources.redhat.com


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]