> 
> But there is a difference in the resulting romcc depending on 
> whether you compile it for AMD64 or IA32. I tracked it down 
> to lines 211 and
> 212:
>     /* Long on the destination platform */
>     typedef unsigned long ulong_t;
>     typedef long long_t;
> 
> The IA32 version of the size_of() function will return 4 when 
> it gets a pointer or a long, whereas the AMD64 version will return 8. 
> 
> The function transform_to_arch_instruction checks the result of
> size_of() in the OP_COPY branch of the big case statement and 
> fails with an internal compiler error if the size is not 1, 2 or 4.
> 

Although I certainly don't understand all the implications, I changed
lines 211 and 212 to: 

     typedef unsigned int ulong_t;
     typedef int long_t;

and made romcc on an Opteron based system running the 8.2 beta.  Romcc
got further, but failed with the following:

console.c: 136.35: Incompatible types in initializer

As an experiment I went ahead and commented out the code in console.c
that it was complaining about.  The next failure was a malloc error with
a HUGE malloc value ... So I gave up and built a PC with a standard
Intel 32-bit processor, reloaded everything, and romcc appears to work
just fine.  It built a ROM image, at least.

I thought I might get lucky building on the Opteron system with the
changes, but not today.

Thanks for your help.

Regards,

Craig

==========================================================
Craig C. Forney         email   :       [EMAIL PROTECTED]
Opus Innovations LLC    www   : http://www.opus.com
========================================================== 


_______________________________________________
Linuxbios mailing list
[EMAIL PROTECTED]
http://www.clustermatic.org/mailman/listinfo/linuxbios

Reply via email to