Commit 84306176 by Philip Blundell Committed by Jeff Law

arm.h (NEED_PLT_GOT): Fix mistake in last change.

�
        * 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
parent d238a237
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) Tue May 25 14:06:06 1999 Jeffrey A Law (law@cygnus.com)
* output.h (STRIP_NAME_ENCODING): Provide default definition. * output.h (STRIP_NAME_ENCODING): Provide default definition.
......
...@@ -1566,8 +1566,11 @@ arm_finalize_pic () ...@@ -1566,8 +1566,11 @@ arm_finalize_pic ()
/* On the ARM the PC register contains 'dot + 8' at the time of the /* On the ARM the PC register contains 'dot + 8' at the time of the
addition. */ addition. */
pic_tmp = plus_constant (gen_rtx_LABEL_REF (Pmode, l1), 8); 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)); 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)); pic_rtx = gen_rtx_CONST (Pmode, gen_rtx_MINUS (Pmode, pic_tmp2, pic_tmp));
......
...@@ -483,6 +483,21 @@ extern int arm_is_6_or_7; ...@@ -483,6 +483,21 @@ extern int arm_is_6_or_7;
#ifndef NEED_PLT_GOT #ifndef NEED_PLT_GOT
#define NEED_PLT_GOT 0 #define NEED_PLT_GOT 0
#endif #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
/* Target machine storage Layout. */ /* Target machine storage Layout. */
......
...@@ -338,4 +338,7 @@ do { \ ...@@ -338,4 +338,7 @@ do { \
/* For PIC code we need to explicitly specify (PLT) and (GOT) relocs. */ /* For PIC code we need to explicitly specify (PLT) and (GOT) relocs. */
#define NEED_PLT_GOT flag_pic #define NEED_PLT_GOT flag_pic
/* The ELF assembler handles GOT addressing differently to NetBSD. */
#define GOT_PCREL 0
#include "arm/aout.h" #include "arm/aout.h"
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment