Data representation and cross compiles

Daniel Jacobowitz drow@mvista.com
Wed Aug 28 07:00:00 GMT 2002


On Wed, Aug 28, 2002 at 02:25:21PM +0200, Gabriel Dos Reis wrote:
> 
> I'm investigating the V3 build failure reported by the regression
> tester.  I think it doesn't occur on natives, it occurs on
> cross-compilers only.  
> 
> Suppose I configure for a cross-compiler with
> 
>    --build=i686-pc-linux
>    --host=i686-pc-linux
>    --target=mips-elf
> 
> Furthermore, assume:
> 
>   sizeof (host_int) == 4            | sizeof (host_long_double) == 12
>   sizeof (target_int) == 4          | sizeof (target_long_double) == 16
> 
> 
> In the *library* source code, I have something like :
> 
>    sizeof (long double) / sizeof (int)
> 
> I think the above expression should evaluate to 4 -- since the library
> is being built for mips-elf -- but the compiler seems to evaluate
> it to 3 (apparently using i686-pc-linux information).
> 
> Thoughts?

Well, I don't like your assumptions very much :)  mips.h:

/* A C expression for the size in bits of the type `long double' on
   the target machine.  If you don't define this, the default is two
   words.  */
#define LONG_DOUBLE_TYPE_SIZE 64

Long doubles are twelve bytes on i386 and eight bytes on MIPS.  If
you're seeing some sort of size mismatch, I'd bet that was it.


-- 
Daniel Jacobowitz
MontaVista Software                         Debian GNU/Linux Developer



More information about the Gcc mailing list