Browse Source

glibc: fix build for ADK_TARGET_CFLAGS="-march=i686"

Signed-off-by: Phil Sutter <phil.sutter@viprinet.com>
Phil Sutter 14 years ago
parent
commit
3adbe63f92
1 changed files with 38 additions and 0 deletions
  1. 38 0
      toolchain/glibc/patches/i686_define_bug.patch

+ 38 - 0
toolchain/glibc/patches/i686_define_bug.patch

@@ -0,0 +1,38 @@
+	Fix for compiling glibc with -march=i686 specified.
+	The patch below found at: http://permalink.gmane.org/gmane.linux.lfs.devel/9758,
+	a nice discussion (with a comment of the glibc maintainer) can be found here:
+	http://old.nabble.com/-RFC-PATCH--glibc-doesn%27t-build-with-%22gcc--march%3Di686%22-td17442608.html
+	
+	To me, this simply shows once more how fucked up things can be. E.g. the (related) bug report here:
+	http://bugs.gentoo.org/show_bug.cgi?id=201815. There are lots of duplicates to it, many people are
+	affected, one can find really elaborate reports. And the responsible gentoo developers are too
+	elite to even point to the actual patch fixing the issue.
+diff -Naur glibc-2.11.1-orig/nptl/sysdeps/pthread/pt-initfini.c glibc-2.11.1/nptl/sysdeps/pthread/pt-initfini.c
+--- glibc-2.11.1-orig/nptl/sysdeps/pthread/pt-initfini.c	2009-12-08 20:10:20.000000000 +0000
++++ glibc-2.11.1/nptl/sysdeps/pthread/pt-initfini.c	2010-04-17 02:24:02.000000000 +0100
+@@ -45,6 +45,11 @@
+ /* Embed an #include to pull in the alignment and .end directives. */
+ asm ("\n#include \"defs.h\"");
+ 
++asm ("\n#if defined __i686 && defined __ASSEMBLER__");
++asm ("\n#undef __i686");
++asm ("\n#define __i686 __i686");
++asm ("\n#endif");
++
+ /* The initial common code ends here. */
+ asm ("\n/*@HEADER_ENDS*/");
+ 
+diff -Naur glibc-2.11.1-orig/sysdeps/unix/sysv/linux/i386/sysdep.h glibc-2.11.1/sysdeps/unix/sysv/linux/i386/sysdep.h
+--- glibc-2.11.1-orig/sysdeps/unix/sysv/linux/i386/sysdep.h	2009-12-08 20:10:20.000000000 +0000
++++ glibc-2.11.1/sysdeps/unix/sysv/linux/i386/sysdep.h	2010-04-17 02:24:02.000000000 +0100
+@@ -29,6 +29,10 @@
+ #include <dl-sysdep.h>
+ #include <tls.h>
+ 
++#if defined __i686 && defined __ASSEMBLER__
++#undef __i686
++#define __i686 __i686
++#endif
+ 
+ /* For Linux we can use the system call table in the header file
+ 	/usr/include/asm/unistd.h