From bd0e50eecf0f6a9571b4b6d550012e909f32660f Mon Sep 17 00:00:00 2001 From: Mark Shinwell Date: Mon, 7 Jul 2008 11:15:21 +0000 Subject: [PATCH] * config/m68k/lb1sf68.asm: Add PIC macros for Linux targets. From-SVN: r137558 --- gcc/ChangeLog | 4 ++++ gcc/config/m68k/lb1sf68.asm | 36 +++++++++++++++++++++++++++++++----- 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a8b6c4a119e..3e5a68d790e 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2008-07-07 Mark Shinwell + + * config/m68k/lb1sf68.asm: Add PIC macros for Linux targets. + 2008-07-07 Maxim Kuvyrkov Nathan Sidwell diff --git a/gcc/config/m68k/lb1sf68.asm b/gcc/config/m68k/lb1sf68.asm index d09213fc033..e03b7b30d87 100644 --- a/gcc/config/m68k/lb1sf68.asm +++ b/gcc/config/m68k/lb1sf68.asm @@ -129,10 +129,11 @@ Boston, MA 02110-1301, USA. */ #else /* __PIC__ */ - /* Common for -mid-shared-libary and -msep-data */ + /* Common for Linux and uClinux, the latter with either + -mid-shared-library or -msep-data. */ .macro PICCALL addr -#if defined (__mcoldfire__) && !defined (__mcfisab__) +#if defined (__mcoldfire__) && !defined (__mcfisab__) && !defined (__mcfisac__) lea \addr-.-8,a0 jsr pc@(a0) #else @@ -141,6 +142,9 @@ Boston, MA 02110-1301, USA. */ .endm .macro PICJUMP addr + /* ISA C has no bra.l instruction, and since this assembly file + gets assembled into multiple object files, we avoid the + bra instruction entirely. */ #if defined (__mcoldfire__) && !defined (__mcfisab__) lea \addr-.-8,a0 jmp pc@(a0) @@ -149,7 +153,11 @@ Boston, MA 02110-1301, USA. */ #endif .endm -# if defined(__ID_SHARED_LIBRARY__) +# if defined (__uClinux__) + + /* Versions for uClinux */ + +# if defined(__ID_SHARED_LIBRARY__) /* -mid-shared-library versions */ @@ -163,7 +171,7 @@ Boston, MA 02110-1301, USA. */ movel \sym@GOT(\areg), sp@- .endm -# else /* !__ID_SHARED_LIBRARY__ */ +# else /* !__ID_SHARED_LIBRARY__ */ /* Versions for -msep-data */ @@ -175,7 +183,25 @@ Boston, MA 02110-1301, USA. */ movel \sym@GOT(a5), sp@- .endm -# endif /* !__ID_SHARED_LIBRARY__ */ +# endif + +# else /* !__uClinux__ */ + + /* Versions for Linux */ + + .macro PICLEA sym, reg + movel #_GLOBAL_OFFSET_TABLE_@GOTPC, \reg + lea (-6, pc, \reg), \reg + movel \sym@GOT(\reg), \reg + .endm + + .macro PICPEA sym, areg + movel #_GLOBAL_OFFSET_TABLE_@GOTPC, \areg + lea (-6, pc, \areg), \areg + movel \sym@GOT(\areg), sp@- + .endm + +# endif #endif /* __PIC__ */ -- 2.30.2