arm.h (NEED_PLT_GOT): Fix mistake in last change.
authorPhilip Blundell <pb@nexus.co.uk>
Wed, 26 May 1999 01:29:10 +0000 (01:29 +0000)
committerJeff Law <law@gcc.gnu.org>
Wed, 26 May 1999 01:29:10 +0000 (19:29 -0600)

        * arm.h (NEED_PLT_GOT): Fix mistake in last change.
        (GOT_PCREL): New macro.  Define to 1 if not already defined.
        * arm/elf.h (GOT_PCREL): Define to 0.
        * arm.c (arm_finalize_pic): Take into account the setting of
        GOT_PCREL.

From-SVN: r27156

gcc/ChangeLog
gcc/config/arm/arm.c
gcc/config/arm/arm.h
gcc/config/arm/elf.h

index 663c118..9bd4023 100644 (file)
@@ -1,3 +1,11 @@
+Wed May 26 02:19:31 1999  Philip Blundell  <pb@nexus.co.uk>
+
+       * arm.h (NEED_PLT_GOT): Fix mistake in last change.
+       (GOT_PCREL): New macro.  Define to 1 if not already defined.
+       * arm/elf.h (GOT_PCREL): Define to 0.
+       * arm.c (arm_finalize_pic): Take into account the setting of
+       GOT_PCREL.
+
 Tue May 25 14:06:06 1999  Jeffrey A Law  (law@cygnus.com)
 
        * output.h (STRIP_NAME_ENCODING): Provide default definition.
index b60f552..eb18be7 100644 (file)
@@ -1566,8 +1566,11 @@ arm_finalize_pic ()
   /* On the ARM the PC register contains 'dot + 8' at the time of the
      addition.  */
   pic_tmp = plus_constant (gen_rtx_LABEL_REF (Pmode, l1), 8);
-  pic_tmp2 = gen_rtx_CONST (VOIDmode,
+  if (GOT_PCREL)
+    pic_tmp2 = gen_rtx_CONST (VOIDmode,
                            gen_rtx_PLUS (Pmode, global_offset_table, pc_rtx));
+  else
+    pic_tmp2 = gen_rtx_CONST (VOIDmode, global_offset_table);
 
   pic_rtx = gen_rtx_CONST (Pmode, gen_rtx_MINUS (Pmode, pic_tmp2, pic_tmp));
   
index 6b40bc5..87a141a 100644 (file)
@@ -483,6 +483,21 @@ extern int arm_is_6_or_7;
 #ifndef NEED_PLT_GOT
 #define NEED_PLT_GOT   0
 #endif
+
+/* Nonzero if we need to refer to the GOT with a PC-relative
+   offset.  In other words, generate
+
+   .word       _GLOBAL_OFFSET_TABLE_ - [. - (.Lxx + 8)]  
+
+   rather than
+
+   .word       _GLOBAL_OFFSET_TABLE_ - (.Lxx + 8)
+
+   The default is true, which matches NetBSD.  Subtargets can 
+   override this if required.  */
+#ifndef GOT_PCREL
+#define GOT_PCREL   1
+#endif
 \f
 /* Target machine storage Layout.  */
 
index d2ba8bb..b282004 100644 (file)
@@ -338,4 +338,7 @@ do {                                                \
 /* For PIC code we need to explicitly specify (PLT) and (GOT) relocs.  */
 #define NEED_PLT_GOT   flag_pic
 
+/* The ELF assembler handles GOT addressing differently to NetBSD.  */
+#define GOT_PCREL      0
+
 #include "arm/aout.h"