This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


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: Data representation and cross compiles


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


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