aboutsummaryrefslogtreecommitdiff
path: root/gcc/config
diff options
context:
space:
mode:
authorRask Ingemann Lambertsen <rask@sygehus.dk>2007-11-28 02:04:27 +0100
committerRask Ingemann Lambertsen <rask@gcc.gnu.org>2007-11-28 01:04:27 +0000
commit296ea027d231d225df9ebb25c98f0e1f694c82d5 (patch)
treeec204572e72278a4058175e18b2552656c856360 /gcc/config
parentd46e0870c0206a50b032a5330760757b9afddc0b (diff)
downloadgcc-296ea027d231d225df9ebb25c98f0e1f694c82d5.zip
gcc-296ea027d231d225df9ebb25c98f0e1f694c82d5.tar.gz
gcc-296ea027d231d225df9ebb25c98f0e1f694c82d5.tar.bz2
linux.h (CRT_GET_RFIB_DATA): Add Intel syntax inline asm to macro.
* config/i386/linux.h (CRT_GET_RFIB_DATA): Add Intel syntax inline asm to macro. * config/i386/sco5.h (CRT_GET_RFIB_DATA): Likewise. * config/i386/sysv4.h (CRT_GET_RFIB_DATA): Likewise. From-SVN: r130485
Diffstat (limited to 'gcc/config')
-rw-r--r--gcc/config/i386/linux.h5
-rw-r--r--gcc/config/i386/sco5.h5
-rw-r--r--gcc/config/i386/sysv4.h5
3 files changed, 9 insertions, 6 deletions
diff --git a/gcc/config/i386/linux.h b/gcc/config/i386/linux.h
index d59dc04..ac81498 100644
--- a/gcc/config/i386/linux.h
+++ b/gcc/config/i386/linux.h
@@ -180,11 +180,12 @@ along with GCC; see the file COPYING3. If not see
#define CRT_GET_RFIB_DATA(BASE) \
__asm__ ("call\t.LPR%=\n" \
".LPR%=:\n\t" \
- "popl\t%0\n\t" \
+ "pop{l}\t%0\n\t" \
/* Due to a GAS bug, this cannot use EAX. That encodes \
smaller than the traditional EBX, which results in the \
offset being off by one. */ \
- "addl\t$_GLOBAL_OFFSET_TABLE_+[.-.LPR%=],%0" \
+ "add{l}\t{$_GLOBAL_OFFSET_TABLE_+[.-.LPR%=],%0" \
+ "|%0,_GLOBAL_OFFSET_TABLE_+(.-.LPR%=)}" \
: "=d"(BASE))
#endif
diff --git a/gcc/config/i386/sco5.h b/gcc/config/i386/sco5.h
index 9706846..4f19fd4 100644
--- a/gcc/config/i386/sco5.h
+++ b/gcc/config/i386/sco5.h
@@ -300,11 +300,12 @@ along with GCC; see the file COPYING3. If not see
#define CRT_GET_RFIB_DATA(BASE) \
__asm__ ("call\t.LPR%=\n" \
".LPR%=:\n\t" \
- "popl\t%0\n\t" \
+ "pop{l}\t%0\n\t" \
/* Due to a GAS bug, this cannot use EAX. That encodes \
smaller than the traditional EBX, which results in the \
offset being off by one. */ \
- "addl\t$_GLOBAL_OFFSET_TABLE_+[.-.LPR%=],%0" \
+ "add{l}\t{$_GLOBAL_OFFSET_TABLE_+[.-.LPR%=],%0" \
+ "|%0,_GLOBAL_OFFSET_TABLE_+(.-.LPR%=)}" \
: "=d"(BASE))
#endif
diff --git a/gcc/config/i386/sysv4.h b/gcc/config/i386/sysv4.h
index f9180e2..e105272 100644
--- a/gcc/config/i386/sysv4.h
+++ b/gcc/config/i386/sysv4.h
@@ -123,10 +123,11 @@ along with GCC; see the file COPYING3. If not see
#define CRT_GET_RFIB_DATA(BASE) \
__asm__ ("call\t.LPR%=\n" \
".LPR%=:\n\t" \
- "popl\t%0\n\t" \
+ "pop{l}\t%0\n\t" \
/* Due to a GAS bug, this cannot use EAX. That encodes \
smaller than the traditional EBX, which results in the \
offset being off by one. */ \
- "addl\t$_GLOBAL_OFFSET_TABLE_+[.-.LPR%=],%0" \
+ "add{l}\t{$_GLOBAL_OFFSET_TABLE_+[.-.LPR%=],%0" \
+ "|%0,_GLOBAL_OFFSET_TABLE_+(.-.LPR%=)}" \
: "=d"(BASE))
#endif