From: Nathan Sidwell Date: Tue, 2 Dec 2008 21:50:02 +0000 (+0000) Subject: lb1sf68.asm (PICCALL, PICJUMP): Use GOT instead of PC-relative addressing when compil... X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=c1af059c2c372c462d2e66d428207be3b59233f3;p=platform%2Fupstream%2Fgcc.git lb1sf68.asm (PICCALL, PICJUMP): Use GOT instead of PC-relative addressing when compiling for uclinux PIC. * config/m68k/lb1sf68.asm (PICCALL, PICJUMP): Use GOT instead of PC-relative addressing when compiling for uclinux PIC. (__cmpdf_internal, __cmpsf_internal): Hide. (__cmpdf, __cmpsf): Use PIC call sequence. Co-Authored-By: Maxim Kuvyrkov From-SVN: r142373 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 280c9e4..bcbb31d 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,11 @@ +2008-12-02 Nathan Sidwell + Maxim Kuvyrkov + + * config/m68k/lb1sf68.asm (PICCALL, PICJUMP): Use GOT instead of + PC-relative addressing when compiling for uclinux PIC. + (__cmpdf_internal, __cmpsf_internal): Hide. + (__cmpdf, __cmpsf): Use PIC call sequence. + 2008-12-02 Andreas Tobler Jack Howarth diff --git a/gcc/config/m68k/lb1sf68.asm b/gcc/config/m68k/lb1sf68.asm index ebfcb88..a3d96d6 100644 --- a/gcc/config/m68k/lb1sf68.asm +++ b/gcc/config/m68k/lb1sf68.asm @@ -129,30 +129,6 @@ Boston, MA 02110-1301, USA. */ #else /* __PIC__ */ - /* Common for Linux and uClinux, the latter with either - -mid-shared-library or -msep-data. */ - - .macro PICCALL addr -#if defined (__mcoldfire__) && !defined (__mcfisab__) && !defined (__mcfisac__) - lea \addr-.-8,a0 - jsr pc@(a0) -#else - bsr \addr -#endif - .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) -#else - bra \addr -#endif - .endm - # if defined (__uClinux__) /* Versions for uClinux */ @@ -171,6 +147,16 @@ Boston, MA 02110-1301, USA. */ movel \sym@GOT(\areg), sp@- .endm + .macro PICCALL addr + PICLEA \addr,a0 + jsr a0@ + .endm + + .macro PICJUMP addr + PICLEA \addr,a0 + jmp a0@ + .endm + # else /* !__ID_SHARED_LIBRARY__ */ /* Versions for -msep-data */ @@ -183,6 +169,27 @@ Boston, MA 02110-1301, USA. */ movel \sym@GOT(a5), sp@- .endm + .macro PICCALL addr +#if defined (__mcoldfire__) && !defined (__mcfisab__) && !defined (__mcfisac__) + lea \addr-.-8,a0 + jsr pc@(a0) +#else + bsr \addr +#endif + .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) +#else + bra \addr +#endif + .endm + # endif # else /* !__uClinux__ */ @@ -201,6 +208,27 @@ Boston, MA 02110-1301, USA. */ movel \sym@GOT(\areg), sp@- .endm + .macro PICCALL addr +#if defined (__mcoldfire__) && !defined (__mcfisab__) && !defined (__mcfisac__) + lea \addr-.-8,a0 + jsr pc@(a0) +#else + bsr \addr +#endif + .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) +#else + bra \addr +#endif + .endm + # endif #endif /* __PIC__ */ @@ -648,6 +676,7 @@ ROUND_TO_MINUS = 3 | round result towards minus infinity .globl SYM (__negdf2) .globl SYM (__cmpdf2) .globl SYM (__cmpdf2_internal) + .hidden SYM (__cmpdf2_internal) .text .even @@ -2410,7 +2439,7 @@ SYM (__cmpdf2): movl a6@(16),sp@- movl a6@(12),sp@- movl a6@(8),sp@- - bsr SYM (__cmpdf2_internal) + PICCALL SYM (__cmpdf2_internal) unlk a6 rts @@ -2562,6 +2591,7 @@ ROUND_TO_MINUS = 3 | round result towards minus infinity .globl SYM (__negsf2) .globl SYM (__cmpsf2) .globl SYM (__cmpsf2_internal) + .hidden SYM (__cmpsf2_internal) | These are common routines to return and signal exceptions. @@ -3816,7 +3846,7 @@ SYM (__cmpsf2): pea 1 movl a6@(12),sp@- movl a6@(8),sp@- - bsr (__cmpsf2_internal) + PICCALL SYM (__cmpsf2_internal) unlk a6 rts