OSDN Git Service

* config/bfin/crti.s (__init, __fini): Use appropriate prologue if
authorbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 16 Nov 2005 13:20:06 +0000 (13:20 +0000)
committerbernds <bernds@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 16 Nov 2005 13:20:06 +0000 (13:20 +0000)
__PIC__ is defined.
* config/bfin/crtn.s: Change epilogues to match.
* config/bfin/t-bfin-elf (EXTRA_MULTILIB_PARTS): Define.
* config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): If flag_pic, define
__PIC__ and __pic__.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@107083 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/config/bfin/bfin.h
gcc/config/bfin/crti.s
gcc/config/bfin/crtn.s
gcc/config/bfin/t-bfin-elf

index 86d9228..dc84b22 100644 (file)
@@ -1,3 +1,12 @@
+2005-11-16  Bernd Schmidt  <bernd.schmidt@analog.com>
+
+       * config/bfin/crti.s (__init, __fini): Use appropriate prologue if
+       __PIC__ is defined.
+       * config/bfin/crtn.s: Change epilogues to match.
+       * config/bfin/t-bfin-elf (EXTRA_MULTILIB_PARTS): Define.
+       * config/bfin/bfin.h (TARGET_CPU_CPP_BUILTINS): If flag_pic, define
+       __PIC__ and __pic__.
+
 2005-11-16  Tobias Schl"uter  <tobias.schlueter@physik.uni-muenchen.de>
 
        PR 24357
index 0e6da5c..be4e565 100644 (file)
@@ -41,6 +41,11 @@ extern int target_flags;
     {                                           \
       builtin_define ("bfin");                  \
       builtin_define ("BFIN");                  \
+      if (flag_pic)                            \
+       {                                       \
+         builtin_define ("__PIC__");           \
+         builtin_define ("__pic__");           \
+       }                                       \
     }                                           \
   while (0)
 #endif
index 7324e27..84a9859 100644 (file)
@@ -38,10 +38,21 @@ Boston, MA 02110-1301, USA.  */
        .globl  __init
        .type   __init,@function
 __init:
-       LINK 0;
-
+#if defined __PIC__
+       [--SP] = P5;
+#endif
+       LINK 12;
+#if defined __PIC__
+       P5 = [P5 + _current_shared_library_p5_offset_]
+#endif 
        .section .fini
        .globl  __fini
        .type   __fini,@function
 __fini:
-       LINK 0; 
+#if defined __PIC__
+       [--SP] = P5; 
+#endif
+       LINK 12; 
+#if defined __PIC__
+       P5 = [P5 + _current_shared_library_p5_offset_]
+#endif 
index 78ad7bb..69421fc 100644 (file)
@@ -36,8 +36,14 @@ Boston, MA 02110-1301, USA.  */
 
        .section .init
        unlink; 
+#if defined __PIC__
+       P5 = [SP++];
+#endif
        rts;
 
        .section .fini
        unlink;
+#if defined __PIC__
+       P5 = [SP++];
+#endif
        rts;
index 928129c..aab2a1b 100644 (file)
@@ -32,3 +32,5 @@ $(T)crti.o: $(srcdir)/config/bfin/crti.s $(GCC_PASSES)
 $(T)crtn.o: $(srcdir)/config/bfin/crtn.s $(GCC_PASSES)
        $(GCC_FOR_TARGET) $(GCC_CFLAGS) $(MULTILIB_CFLAGS) $(INCLUDES) \
        -c -o $(T)crtn.o -x assembler-with-cpp $(srcdir)/config/bfin/crtn.s
+
+EXTRA_MULTILIB_PARTS= crtbegin.o crtend.o crti.o crtn.o