aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorBernd Schmidt <bernd.schmidt@analog.com>2005-11-16 13:20:06 +0000
committerBernd Schmidt <bernds@gcc.gnu.org>2005-11-16 13:20:06 +0000
commit0d88914b25756f154732e2bf12b8d37b58ddd2de (patch)
tree5234c6d769e7112a6c52e85b575489334593043a /gcc
parentb381d30b050fc2564453690d5dde1cfb6964f366 (diff)
downloadgcc-0d88914b25756f154732e2bf12b8d37b58ddd2de.zip
gcc-0d88914b25756f154732e2bf12b8d37b58ddd2de.tar.gz
gcc-0d88914b25756f154732e2bf12b8d37b58ddd2de.tar.bz2
crti.s (__init, __fini): Use appropriate prologue if __PIC__ is defined.
* 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__. From-SVN: r107083
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog9
-rw-r--r--gcc/config/bfin/bfin.h5
-rw-r--r--gcc/config/bfin/crti.s17
-rw-r--r--gcc/config/bfin/crtn.s6
-rw-r--r--gcc/config/bfin/t-bfin-elf2
5 files changed, 36 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 86d9228..dc84b22 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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
diff --git a/gcc/config/bfin/bfin.h b/gcc/config/bfin/bfin.h
index 0e6da5c..be4e565 100644
--- a/gcc/config/bfin/bfin.h
+++ b/gcc/config/bfin/bfin.h
@@ -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
diff --git a/gcc/config/bfin/crti.s b/gcc/config/bfin/crti.s
index 7324e27..84a9859 100644
--- a/gcc/config/bfin/crti.s
+++ b/gcc/config/bfin/crti.s
@@ -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
diff --git a/gcc/config/bfin/crtn.s b/gcc/config/bfin/crtn.s
index 78ad7bb..69421fc 100644
--- a/gcc/config/bfin/crtn.s
+++ b/gcc/config/bfin/crtn.s
@@ -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;
diff --git a/gcc/config/bfin/t-bfin-elf b/gcc/config/bfin/t-bfin-elf
index 928129c..aab2a1b 100644
--- a/gcc/config/bfin/t-bfin-elf
+++ b/gcc/config/bfin/t-bfin-elf
@@ -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