This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Data representation and cross compiles
- From: Daniel Jacobowitz <drow at mvista dot com>
- To: Gabriel Dos Reis <gdr at integrable-solutions dot net>
- Cc: gcc at gcc dot gnu dot org
- Date: Wed, 28 Aug 2002 10:01:16 -0400
- Subject: Re: Data representation and cross compiles
- References: <m33cszqifi.fsf@soliton.integrable-solutions.net>
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