summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2012-02-06 18:05:54 +0000
committerJoseph Myers <joseph@codesourcery.com>2012-02-06 18:05:54 +0000
commit314054eaef2aec965d2f1bced7e86abca118463e (patch)
treec03cbc61bd1fa1c67fff971903fafca1088a3df3
parentd8e0ca509a83e832123f6ab508fce620159fb2dc (diff)
downloadglibc-314054eaef2aec965d2f1bced7e86abca118463e.tar.gz
Match x86 PIC thunk names to compiler version.
-rw-r--r--ChangeLog6
-rw-r--r--sysdeps/i386/sysdep.h19
2 files changed, 22 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index 1925407e9b..b0e625b24d 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2012-02-06 Joseph Myers <joseph@codesourcery.com>
+
+ * sysdeps/i386/sysdep.h: Include <features.h>.
+ (GET_PC_THUNK, GET_PC_THUNK_STR): Define conditionally on compiler
+ version.
+
2012-02-05 Joseph Myers <joseph@codesourcery.com>
* sysdeps/i386/sysdep.h (SETUP_PIC_REG_STR, LOAD_PIC_REG_STR):
diff --git a/sysdeps/i386/sysdep.h b/sysdeps/i386/sysdep.h
index 2c0aafa75b..1dbb8e12a9 100644
--- a/sysdeps/i386/sysdep.h
+++ b/sysdeps/i386/sysdep.h
@@ -20,10 +20,23 @@
#include <sysdeps/generic/sysdep.h>
-#ifdef __ASSEMBLER__
-# define GET_PC_THUNK(reg) __i686.get_pc_thunk.reg
+#include <features.h> /* For __GNUC_PREREQ. */
+
+/* It is desirable that the names of PIC thunks match those used by
+ GCC so that multiple copies are eliminated by the linker. */
+
+#ifdef __ASSEMBLER__
+# if __GNUC_PREREQ (4, 7)
+# define GET_PC_THUNK(reg) __x86.get_pc_thunk.reg
+# else
+# define GET_PC_THUNK(reg) __i686.get_pc_thunk.reg
+# endif
#else
-# define GET_PC_THUNK_STR(reg) "__i686.get_pc_thunk." #reg
+# if __GNUC_PREREQ (4, 7)
+# define GET_PC_THUNK_STR(reg) "__x86.get_pc_thunk." #reg
+# else
+# define GET_PC_THUNK_STR(reg) "__i686.get_pc_thunk." #reg
+# endif
#endif
#ifdef __ASSEMBLER__