diff options
| -rw-r--r-- | gcc/ChangeLog | 7 | ||||
| -rw-r--r-- | gcc/config/i386/linux.h | 5 | ||||
| -rw-r--r-- | gcc/config/i386/sco5.h | 5 | ||||
| -rw-r--r-- | gcc/config/i386/sysv4.h | 5 |
4 files changed, 16 insertions, 6 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index cc16b23..a4c11dd 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2007-11-28 Rask Ingemann Lambertsen <rask@sygehus.dk> + + * 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 <bje@au.ibm.com> * config/rs6000/aix64.opt (maix64): Add Negative(maix32). 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 |
