From 7fb60f14789f2b2a90ebd9a1c89596572c286bbd Mon Sep 17 00:00:00 2001 From: rask Date: Wed, 28 Nov 2007 01:04:27 +0000 Subject: [PATCH] * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@130485 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 7 +++++++ gcc/config/i386/linux.h | 5 +++-- gcc/config/i386/sco5.h | 5 +++-- gcc/config/i386/sysv4.h | 5 +++-- 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index cc16b231d79..a4c11ddd03c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2007-11-28 Rask Ingemann Lambertsen + + * 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. + 2007-11-28 Ben Elliston * config/rs6000/aix64.opt (maix64): Add Negative(maix32). diff --git a/gcc/config/i386/linux.h b/gcc/config/i386/linux.h index d59dc04bbc0..ac8149885fc 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 9706846bd23..4f19fd4f85d 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 f9180e27ba5..e1052724937 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 -- 2.11.0