mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-30 09:09:16 +08:00
bfd/
2010-03-15 Wei Guozhi <carrot@google.com> PR gas/11323 * bfd-in2.h (enum bfd_reloc_code_real): New BFD_RELOC_GOT_PREL type. * elf32-arm.c (elf32_arm_reloc_map): BFD_RELOC_GOT_PREL to R_ARM_GOT_PREL map. * libbfd.h (bfd_reloc_code_real_names): BFD_RELOC_GOT_PREL name. * reloc.c (comments): Document the new relocation. gas/ 2010-03-15 Wei Guozhi <carrot@google.com> PR gas/11323 * config/tc-arm.c (reloc_names): New relocation names. (md_apply_fix): New case for BFD_RELOC_ARM_GOT_PREL. (tc_gen_reloc): New case for BFD_RELOC_ARM_GOT_PREL. * doc/c-arm.texi (ARM-Relocations): Document the new relocation. gas/testsuite 2010-03-15 Wei Guozhi <carrot@google.com> PR gas/11323 * gas/arm/got_prel.s: New test case. * gas/arm/got_prel.d: Likewise.
This commit is contained in:
@ -1,3 +1,12 @@
|
|||||||
|
2010-03-18 Wei Guozhi <carrot@google.com>
|
||||||
|
|
||||||
|
PR gas/11323
|
||||||
|
* elf32-arm.c (elf32_arm_reloc_map): Map BFD_RELOC_ARM_GOT_PREL to
|
||||||
|
R_ARM_GOT_PREL.
|
||||||
|
* reloc.c (BFD_RELOC_ARM_GOT_PREL): New ARM relocation.
|
||||||
|
* bfd-in2.h: Regenerate.
|
||||||
|
* libbfd.h: Regenerate.
|
||||||
|
|
||||||
2010-03-17 H.J. Lu <hongjiu.lu@intel.com>
|
2010-03-17 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
* reloc.c (BFD_RELOC_SPU_PIC18): Removed.
|
* reloc.c (BFD_RELOC_SPU_PIC18): Removed.
|
||||||
|
@ -3114,6 +3114,7 @@ pc-relative or some form of GOT-indirect relocation. */
|
|||||||
BFD_RELOC_ARM_RELATIVE,
|
BFD_RELOC_ARM_RELATIVE,
|
||||||
BFD_RELOC_ARM_GOTOFF,
|
BFD_RELOC_ARM_GOTOFF,
|
||||||
BFD_RELOC_ARM_GOTPC,
|
BFD_RELOC_ARM_GOTPC,
|
||||||
|
BFD_RELOC_ARM_GOT_PREL,
|
||||||
|
|
||||||
/* ARM thread-local storage relocations. */
|
/* ARM thread-local storage relocations. */
|
||||||
BFD_RELOC_ARM_TLS_GD32,
|
BFD_RELOC_ARM_TLS_GD32,
|
||||||
|
@ -1721,6 +1721,7 @@ static const struct elf32_arm_reloc_map elf32_arm_reloc_map[] =
|
|||||||
{BFD_RELOC_ARM_RELATIVE, R_ARM_RELATIVE},
|
{BFD_RELOC_ARM_RELATIVE, R_ARM_RELATIVE},
|
||||||
{BFD_RELOC_ARM_GOTOFF, R_ARM_GOTOFF32},
|
{BFD_RELOC_ARM_GOTOFF, R_ARM_GOTOFF32},
|
||||||
{BFD_RELOC_ARM_GOTPC, R_ARM_GOTPC},
|
{BFD_RELOC_ARM_GOTPC, R_ARM_GOTPC},
|
||||||
|
{BFD_RELOC_ARM_GOT_PREL, R_ARM_GOT_PREL},
|
||||||
{BFD_RELOC_ARM_GOT32, R_ARM_GOT32},
|
{BFD_RELOC_ARM_GOT32, R_ARM_GOT32},
|
||||||
{BFD_RELOC_ARM_PLT32, R_ARM_PLT32},
|
{BFD_RELOC_ARM_PLT32, R_ARM_PLT32},
|
||||||
{BFD_RELOC_ARM_TARGET1, R_ARM_TARGET1},
|
{BFD_RELOC_ARM_TARGET1, R_ARM_TARGET1},
|
||||||
|
@ -1330,6 +1330,7 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
|
|||||||
"BFD_RELOC_ARM_RELATIVE",
|
"BFD_RELOC_ARM_RELATIVE",
|
||||||
"BFD_RELOC_ARM_GOTOFF",
|
"BFD_RELOC_ARM_GOTOFF",
|
||||||
"BFD_RELOC_ARM_GOTPC",
|
"BFD_RELOC_ARM_GOTPC",
|
||||||
|
"BFD_RELOC_ARM_GOT_PREL",
|
||||||
"BFD_RELOC_ARM_TLS_GD32",
|
"BFD_RELOC_ARM_TLS_GD32",
|
||||||
"BFD_RELOC_ARM_TLS_LDO32",
|
"BFD_RELOC_ARM_TLS_LDO32",
|
||||||
"BFD_RELOC_ARM_TLS_LDM32",
|
"BFD_RELOC_ARM_TLS_LDM32",
|
||||||
|
@ -2936,6 +2936,8 @@ ENUMX
|
|||||||
BFD_RELOC_ARM_GOTOFF
|
BFD_RELOC_ARM_GOTOFF
|
||||||
ENUMX
|
ENUMX
|
||||||
BFD_RELOC_ARM_GOTPC
|
BFD_RELOC_ARM_GOTPC
|
||||||
|
ENUMX
|
||||||
|
BFD_RELOC_ARM_GOT_PREL
|
||||||
ENUMDOC
|
ENUMDOC
|
||||||
Relocations for setting up GOTs and PLTs for shared libraries.
|
Relocations for setting up GOTs and PLTs for shared libraries.
|
||||||
|
|
||||||
|
@ -1,3 +1,11 @@
|
|||||||
|
2010-03-18 Wei Guozhi <carrot@google.com>
|
||||||
|
|
||||||
|
PR gas/11323
|
||||||
|
* config/tc-arm.c (reloc_names): New relocation names.
|
||||||
|
(md_apply_fix): New case for BFD_RELOC_ARM_GOT_PREL.
|
||||||
|
(tc_gen_reloc): New case for BFD_RELOC_ARM_GOT_PREL.
|
||||||
|
* doc/c-arm.texi (ARM-Relocations): Document the new relocation.
|
||||||
|
|
||||||
2010-03-15 Thomas Schwinge <thomas@codesourcery.com>
|
2010-03-15 Thomas Schwinge <thomas@codesourcery.com>
|
||||||
|
|
||||||
* dw2gencfi.c (output_cie): Consider emitting the S augmentation in all
|
* dw2gencfi.c (output_cie): Consider emitting the S augmentation in all
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/* tc-arm.c -- Assemble for the ARM
|
/* tc-arm.c -- Assemble for the ARM
|
||||||
Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
|
Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
|
||||||
2004, 2005, 2006, 2007, 2008, 2009
|
2004, 2005, 2006, 2007, 2008, 2009, 2010
|
||||||
Free Software Foundation, Inc.
|
Free Software Foundation, Inc.
|
||||||
Contributed by Richard Earnshaw (rwe@pegasus.esprit.ec.org)
|
Contributed by Richard Earnshaw (rwe@pegasus.esprit.ec.org)
|
||||||
Modified by David Taylor (dtaylor@armltd.co.uk)
|
Modified by David Taylor (dtaylor@armltd.co.uk)
|
||||||
@ -16191,7 +16191,8 @@ static struct reloc_entry reloc_names[] =
|
|||||||
{ "tlsldm", BFD_RELOC_ARM_TLS_LDM32}, { "TLSLDM", BFD_RELOC_ARM_TLS_LDM32},
|
{ "tlsldm", BFD_RELOC_ARM_TLS_LDM32}, { "TLSLDM", BFD_RELOC_ARM_TLS_LDM32},
|
||||||
{ "tlsldo", BFD_RELOC_ARM_TLS_LDO32}, { "TLSLDO", BFD_RELOC_ARM_TLS_LDO32},
|
{ "tlsldo", BFD_RELOC_ARM_TLS_LDO32}, { "TLSLDO", BFD_RELOC_ARM_TLS_LDO32},
|
||||||
{ "gottpoff",BFD_RELOC_ARM_TLS_IE32}, { "GOTTPOFF",BFD_RELOC_ARM_TLS_IE32},
|
{ "gottpoff",BFD_RELOC_ARM_TLS_IE32}, { "GOTTPOFF",BFD_RELOC_ARM_TLS_IE32},
|
||||||
{ "tpoff", BFD_RELOC_ARM_TLS_LE32}, { "TPOFF", BFD_RELOC_ARM_TLS_LE32}
|
{ "tpoff", BFD_RELOC_ARM_TLS_LE32}, { "TPOFF", BFD_RELOC_ARM_TLS_LE32},
|
||||||
|
{ "got_prel", BFD_RELOC_ARM_GOT_PREL}, { "GOT_PREL", BFD_RELOC_ARM_GOT_PREL}
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -20478,6 +20479,11 @@ md_apply_fix (fixS * fixP,
|
|||||||
md_number_to_chars (buf, 0, 4);
|
md_number_to_chars (buf, 0, 4);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case BFD_RELOC_ARM_GOT_PREL:
|
||||||
|
if (fixP->fx_done || !seg->use_rela_p)
|
||||||
|
md_number_to_chars (buf, value, 4);
|
||||||
|
break;
|
||||||
|
|
||||||
case BFD_RELOC_ARM_TARGET2:
|
case BFD_RELOC_ARM_TARGET2:
|
||||||
/* TARGET2 is not partial-inplace, so we need to write the
|
/* TARGET2 is not partial-inplace, so we need to write the
|
||||||
addend here for REL targets, because it won't be written out
|
addend here for REL targets, because it won't be written out
|
||||||
@ -21062,6 +21068,7 @@ tc_gen_reloc (asection *section, fixS *fixp)
|
|||||||
#ifdef OBJ_ELF
|
#ifdef OBJ_ELF
|
||||||
case BFD_RELOC_ARM_GOT32:
|
case BFD_RELOC_ARM_GOT32:
|
||||||
case BFD_RELOC_ARM_GOTOFF:
|
case BFD_RELOC_ARM_GOTOFF:
|
||||||
|
case BFD_RELOC_ARM_GOT_PREL:
|
||||||
case BFD_RELOC_ARM_PLT32:
|
case BFD_RELOC_ARM_PLT32:
|
||||||
case BFD_RELOC_ARM_TARGET1:
|
case BFD_RELOC_ARM_TARGET1:
|
||||||
case BFD_RELOC_ARM_ROSEGREL32:
|
case BFD_RELOC_ARM_ROSEGREL32:
|
||||||
|
@ -452,7 +452,8 @@ The following relocations are supported:
|
|||||||
@code{TLSGD},
|
@code{TLSGD},
|
||||||
@code{TLSLDM},
|
@code{TLSLDM},
|
||||||
@code{TLSLDO},
|
@code{TLSLDO},
|
||||||
@code{GOTTPOFF}
|
@code{GOTTPOFF},
|
||||||
|
@code{GOT_PREL}
|
||||||
and
|
and
|
||||||
@code{TPOFF}.
|
@code{TPOFF}.
|
||||||
|
|
||||||
|
@ -1,3 +1,9 @@
|
|||||||
|
2010-03-18 Wei Guozhi <carrot@google.com>
|
||||||
|
|
||||||
|
PR gas/11323
|
||||||
|
* gas/arm/got_prel.s: New test case.
|
||||||
|
* gas/arm/got_prel.d: Expected disassembly.
|
||||||
|
|
||||||
2010-03-17 H.J. Lu <hongjiu.lu@intel.com>
|
2010-03-17 H.J. Lu <hongjiu.lu@intel.com>
|
||||||
|
|
||||||
* gas/i386/i386.exp: Run list-1, list-2 and list-3 only for
|
* gas/i386/i386.exp: Run list-1, list-2 and list-3 only for
|
||||||
|
19
gas/testsuite/gas/arm/got_prel.d
Normal file
19
gas/testsuite/gas/arm/got_prel.d
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
# name: R_ARM_GOT_PREL relocation
|
||||||
|
# source: got_prel.s
|
||||||
|
# as: -march=armv5te -meabi=5
|
||||||
|
# readelf: -x 4 -r
|
||||||
|
# target: *-*-*eabi *-*-symbianelf *-*-linux-* *-*-elf
|
||||||
|
|
||||||
|
Relocation section '.rel.text.foo' at offset 0x3f0 contains 1 entries:
|
||||||
|
Offset Info Type Sym.Value Sym. Name
|
||||||
|
00000010 00000c60 R_ARM_GOT_PREL 00000000 i
|
||||||
|
|
||||||
|
Relocation section '.rel.ARM.exidx.text.foo' at offset 0x3f8 contains 2 entries:
|
||||||
|
Offset Info Type Sym.Value Sym. Name
|
||||||
|
00000000 0000042a R_ARM_PREL31 00000000 .text.foo
|
||||||
|
00000000 00000d00 R_ARM_NONE 00000000 __aeabi_unwind_cpp_pr0
|
||||||
|
|
||||||
|
Hex dump of section '.text.foo':
|
||||||
|
NOTE: This section has relocations against it, but these have NOT been applied to this dump.
|
||||||
|
0x00000000 034b7b44 1b681a68 1860101c 7047c046 .K{D.h.h.`..pG.F
|
||||||
|
0x00000010 0a000000 ....
|
23
gas/testsuite/gas/arm/got_prel.s
Normal file
23
gas/testsuite/gas/arm/got_prel.s
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
.code 16
|
||||||
|
.text
|
||||||
|
.Ltext0:
|
||||||
|
.section .text.foo,"ax",%progbits
|
||||||
|
.align 2
|
||||||
|
.global foo
|
||||||
|
.code 16
|
||||||
|
.thumb_func
|
||||||
|
.type foo, %function
|
||||||
|
foo:
|
||||||
|
.fnstart
|
||||||
|
ldr r3, .L3
|
||||||
|
.LPIC0:
|
||||||
|
add r3, pc
|
||||||
|
ldr r3, [r3]
|
||||||
|
ldr r2, [r3]
|
||||||
|
str r0, [r3]
|
||||||
|
mov r0, r2
|
||||||
|
bx lr
|
||||||
|
.align 2
|
||||||
|
.L3:
|
||||||
|
.word i(GOT_PREL) + (. - (.LPIC0+4))
|
||||||
|
.fnend
|
Reference in New Issue
Block a user