Re: Build error 4.6.1 for x86_64

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 8 August 2011 23:17, Jonathan Wakely wrote:
> On 8 August 2011 23:03,  <david.hagood@xxxxxxxxx> wrote:
>>> Why don't you look in the libc headers and see how it defines
>>> uintptr_t.  In my native x86_64 system I see:
>>>
>>> /* Types for `void *' pointers.  */
>>> #if __WORDSIZE == 64
>>> ...
>>> typedef unsigned long int   uintptr_t;
>>> #else
>>> ...
>>> typedef unsigned int        uintptr_t;
>>> #endif
>>>
>>> If your headers look sensible, figure out what is wrong when you
>>> compile libmudflap such that the wrong definition is used.
>>
>> xgcc is pointing at my sysroot, and the libraries are there. This looks
>> like a problem when cross-compiling gcc for X86_64.
>>
>>
>>>  Noone else
>>> has access to the files on your system so you're in the best position
>>> to investigate it.
>>>
>> That's easy to fix. I've attached the makefile I use to do this, and the
>> one patch file I created (incorporating Ian's suggestion about patching
>> mf-runtime.c). All the other files are either straight from the gnu.org
>> servers:
>>  binutils-2.20.1.tar.bz2, gcc-4.6.1.tar.bz2, glibc-2.14.tar.bz2,
>> make-3.81.tar.bz2
>> or straight from kernel.org:
>>  linux-2.6.39.4.tar.bz2
>>
>> Drop the patch and tarballs into ~/Downloads (or where-ever, and set
>> TARBALL_SOURCE to point there), and do a "make clean all" on an X86-64
>> machine.
>
> No thanks, I'm busy :)
>
> Why don't you add some debugging to the files that are failing to
> compile, figure out which preprocessor macros are defined, add
> #warning or #error  lines to your sysroot headers, see what's defined
> and if it seems correct. Check the typedefs are correct.

Any progress?

You could repeat the last compilation command that fails, adding -E
-dD to the end of the command, and inspecting the output file to see
what the preprocessor output is.

Check the contents of your $SYSROOT/usr/include/bits/wordsize.h, it
should look like:

#if defined __x86_64__
# define __WORDSIZE 64
# define __WORDSIZE_COMPAT32    1
#else
# define __WORDSIZE 32
#endif

to work for a biarch x86_64 compiler.

What does your bits/wordsize.h look like?  If it's wrong you'd get the
wrong type defined as uintptr_t.

In your makefile you have:

build_glibc: build_glibc_main build_glibc32

Does that mean you overwrite the 64-bit glibc with a 32-bit one?
Does that result in a broken bits/wordsize.h file?



[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux