patches/glibc/ports-2.10.1/290-undefine-__i686.patch
author "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
Sun Sep 12 23:38:18 2010 +0200 (2010-09-12)
changeset 2120 48de021b3a9e
permissions -rw-r--r--
arch/mips: add experimental mips64 samples

Both toolchains were tested to successfully:
- _build_ busybox, giving respectively an n32 and an n64 binary
although it has not been run-tested.
- build linux-2.6.36-rc3 for Loongson, giving an n64 vmlinux
(which is expected, due to the way the kernel is built),
and the kernel properly boots!

Credits are due to Julien MOUTHINO (julm on freenode#uClibc) for
testing that the kernel boots on his hardware! Cheers! ;-)

Signed-off-by: "Yann E. MORIN" <yann.morin.1998@anciens.enib.fr>
     1 If gcc is configured to generate i686 code or better by default (like 
     2 when using the --with-arch=pentium3 configure option), then the __i686
     3 macro will always be defined automatically and thus screw up the
     4 compilation of some .S files.
     5 http://bugs.gentoo.org/131108
     6 http://sourceware.org/ml/libc-alpha/2006-04/msg00090.html
     7 
     8 2006-04-25  Mike Frysinger  <vapier@gentoo.org>
     9 
    10 	* sysdeps/i386/sysdep.h (__i686): Undefine.
    11 
    12 diff -durN glibc-2.10.1.orig/nptl/sysdeps/pthread/pt-initfini.c glibc-2.10.1/nptl/sysdeps/pthread/pt-initfini.c
    13 --- glibc-2.10.1.orig/nptl/sysdeps/pthread/pt-initfini.c	2007-06-17 20:02:01.000000000 +0200
    14 +++ glibc-2.10.1/nptl/sysdeps/pthread/pt-initfini.c	2009-11-13 00:50:22.000000000 +0100
    15 @@ -45,6 +45,9 @@
    16  /* Embed an #include to pull in the alignment and .end directives. */
    17  asm ("\n#include \"defs.h\"");
    18  
    19 +/* Embed an #include to pull in asm settings. */
    20 +asm ("\n#ifdef __i686__\n#include <sysdep.h>\n#endif");
    21 +
    22  /* The initial common code ends here. */
    23  asm ("\n/*@HEADER_ENDS*/");
    24  
    25 diff -durN glibc-2.10.1.orig/sysdeps/i386/sysdep.h glibc-2.10.1/sysdeps/i386/sysdep.h
    26 --- glibc-2.10.1.orig/sysdeps/i386/sysdep.h	2006-10-28 08:44:03.000000000 +0200
    27 +++ glibc-2.10.1/sysdeps/i386/sysdep.h	2009-11-13 00:50:22.000000000 +0100
    28 @@ -18,6 +18,14 @@
    29     Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
    30     02111-1307 USA.  */
    31  
    32 +/*
    33 + * When building for i686 targets or better, gcc automatically defines
    34 + * '__i686' to '1' for us which causes trouble when using section names
    35 + * like '__i686.get_pc_thunk.reg'.  Since we check for __i686__ in the
    36 + * code, killing '__i686' shouldn't be a problem.
    37 + */
    38 +#undef __i686
    39 +
    40  #include <sysdeps/generic/sysdep.h>
    41  
    42  #ifdef	__ASSEMBLER__