mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-23 10:03:47 +08:00
[GAS][AARCH64]Add BFD_RELOC_AARCH64_MOVW_GOTOFF_G1 Support.
bfd/ 2015-10-02 Renlin Li <renlin.li@arm.com> * reloc.c (BFD_RELOC_AARCH64_MOVW_GOTOFF_G1): New. * elfnn-aarch64.c (elfNN_aarch64_howto_table): New entry for MOVW_GOTOFF_G1. * libbfd.h: Regenerate. * bfd-in2.h: Regenerate. gas/ 2015-10-02 Renlin Li <renlin.li@arm.com> * config/tc-aarch64.c (reloc_table): New relocation modifier gotoff_g1. (process_movw_reloc_info): Support newly added modifier. (md_apply_fix): Likewise. gas/testsuite/ 2015-10-02 Renlin Li <renlin.li@arm.com> * gas/aarch64/reloc-gotoff_g1.s: New. * gas/aarch64/reloc-gotoff_g1.d: New.
This commit is contained in:
parent
a2e1db00c7
commit
654248e7f7
@ -1,3 +1,11 @@
|
||||
2015-010-02 Renlin Li <renlin.li@arm.com>
|
||||
|
||||
* reloc.c (BFD_RELOC_AARCH64_MOVW_GOTOFF_G1): New.
|
||||
* elfnn-aarch64.c (elfNN_aarch64_howto_table): New entry for
|
||||
MOVW_GOTOFF_G1.
|
||||
* libbfd.h: Regenerate.
|
||||
* bfd-in2.h: Regenerate.
|
||||
|
||||
2015-10-02 Renlin Li <renlin.li@arm.com>
|
||||
|
||||
* elfnn-aarch64.c (aarch64_reloc_got_type): Add
|
||||
|
@ -5754,6 +5754,10 @@ the GOT entry for this symbol. Used in conjunction with
|
||||
BFD_RELOC_AARCH64_ADR_GOTPAGE. Valid in ILP32 ABI only. */
|
||||
BFD_RELOC_AARCH64_LD32_GOT_LO12_NC,
|
||||
|
||||
/* Unsigned 16 bit byte higher offset for 64 bit load/store from the GOT entry
|
||||
for this symbol. Valid in LP64 ABI only. */
|
||||
BFD_RELOC_AARCH64_MOVW_GOTOFF_G1,
|
||||
|
||||
/* Unsigned 15 bit byte offset for 64 bit load/store from the page of
|
||||
the GOT entry for this symbol. Valid in LP64 ABI only. */
|
||||
BFD_RELOC_AARCH64_LD64_GOTOFF_LO15,
|
||||
|
@ -884,6 +884,21 @@ static reloc_howto_type elfNN_aarch64_howto_table[] =
|
||||
0xffc, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* Higher 16 bits of GOT offset for the symbol. */
|
||||
HOWTO64 (AARCH64_R (MOVW_GOTOFF_G1), /* type */
|
||||
16, /* rightshift */
|
||||
2, /* size (0 = byte, 1 = short, 2 = long) */
|
||||
16, /* bitsize */
|
||||
FALSE, /* pc_relative */
|
||||
0, /* bitpos */
|
||||
complain_overflow_unsigned, /* complain_on_overflow */
|
||||
bfd_elf_generic_reloc, /* special_function */
|
||||
AARCH64_R_STR (MOVW_GOTOFF_G1), /* name */
|
||||
FALSE, /* partial_inplace */
|
||||
0xffff, /* src_mask */
|
||||
0xffff, /* dst_mask */
|
||||
FALSE), /* pcrel_offset */
|
||||
|
||||
/* LD64: GOT offset for the symbol. */
|
||||
HOWTO64 (AARCH64_R (LD64_GOTOFF_LO15), /* type */
|
||||
3, /* rightshift */
|
||||
|
@ -2747,6 +2747,7 @@ static const char *const bfd_reloc_code_real_names[] = { "@@uninitialized@@",
|
||||
"BFD_RELOC_AARCH64_ADR_GOT_PAGE",
|
||||
"BFD_RELOC_AARCH64_LD64_GOT_LO12_NC",
|
||||
"BFD_RELOC_AARCH64_LD32_GOT_LO12_NC",
|
||||
"BFD_RELOC_AARCH64_MOVW_GOTOFF_G1",
|
||||
"BFD_RELOC_AARCH64_LD64_GOTOFF_LO15",
|
||||
"BFD_RELOC_AARCH64_LD32_GOTPAGE_LO14",
|
||||
"BFD_RELOC_AARCH64_LD64_GOTPAGE_LO15",
|
||||
|
@ -6789,6 +6789,11 @@ ENUMDOC
|
||||
Unsigned 12 bit byte offset for 32 bit load/store from the page of
|
||||
the GOT entry for this symbol. Used in conjunction with
|
||||
BFD_RELOC_AARCH64_ADR_GOTPAGE. Valid in ILP32 ABI only.
|
||||
ENUM
|
||||
BFD_RELOC_AARCH64_MOVW_GOTOFF_G1
|
||||
ENUMDOC
|
||||
Unsigned 16 bit byte higher offset for 64 bit load/store from the GOT entry
|
||||
for this symbol. Valid in LP64 ABI only.
|
||||
ENUM
|
||||
BFD_RELOC_AARCH64_LD64_GOTOFF_LO15
|
||||
ENUMDOC
|
||||
|
@ -1,3 +1,10 @@
|
||||
2015-10-02 Renlin Li <renlin.li@arm.com>
|
||||
|
||||
* config/tc-aarch64.c (reloc_table): New relocation modifier
|
||||
gotoff_g1.
|
||||
(process_movw_reloc_info): Support newly added modifier.
|
||||
(md_apply_fix): Likewise.
|
||||
|
||||
2015-09-29 Dominik Vogt <vogt@linux.vnet.ibm.com>
|
||||
|
||||
* doc/c-s390.texi: Add documentation.
|
||||
|
@ -2455,6 +2455,15 @@ static struct reloc_table_entry reloc_table[] = {
|
||||
BFD_RELOC_AARCH64_LD_GOT_LO12_NC,
|
||||
0},
|
||||
|
||||
/* Most significant bits 16-31 of address/value: MOVZ. */
|
||||
{"gotoff_g1", 0,
|
||||
0, /* adr_type */
|
||||
0,
|
||||
BFD_RELOC_AARCH64_MOVW_GOTOFF_G1,
|
||||
0,
|
||||
0,
|
||||
0},
|
||||
|
||||
/* 15 bit offset into the page containing GOT entry for that symbol. */
|
||||
{"gotoff_lo15", 0,
|
||||
0, /* adr_type */
|
||||
@ -4676,6 +4685,7 @@ process_movw_reloc_info (void)
|
||||
case BFD_RELOC_AARCH64_MOVW_G1:
|
||||
case BFD_RELOC_AARCH64_MOVW_G1_NC:
|
||||
case BFD_RELOC_AARCH64_MOVW_G1_S:
|
||||
case BFD_RELOC_AARCH64_MOVW_GOTOFF_G1:
|
||||
case BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1:
|
||||
case BFD_RELOC_AARCH64_TLSLD_MOVW_DTPREL_G1_NC:
|
||||
case BFD_RELOC_AARCH64_TLSLE_MOVW_TPREL_G1:
|
||||
@ -6794,6 +6804,7 @@ md_apply_fix (fixS * fixP, valueT * valP, segT seg)
|
||||
case BFD_RELOC_AARCH64_MOVW_G1:
|
||||
case BFD_RELOC_AARCH64_MOVW_G1_NC:
|
||||
case BFD_RELOC_AARCH64_MOVW_G1_S:
|
||||
case BFD_RELOC_AARCH64_MOVW_GOTOFF_G1:
|
||||
scale = 16;
|
||||
goto movw_common;
|
||||
case BFD_RELOC_AARCH64_MOVW_G2:
|
||||
@ -6824,6 +6835,7 @@ md_apply_fix (fixS * fixP, valueT * valP, segT seg)
|
||||
case BFD_RELOC_AARCH64_MOVW_G1:
|
||||
case BFD_RELOC_AARCH64_MOVW_G2:
|
||||
case BFD_RELOC_AARCH64_MOVW_G3:
|
||||
case BFD_RELOC_AARCH64_MOVW_GOTOFF_G1:
|
||||
if (unsigned_overflow (value, scale + 16))
|
||||
as_bad_where (fixP->fx_file, fixP->fx_line,
|
||||
_("unsigned value out of range"));
|
||||
|
@ -1,3 +1,8 @@
|
||||
2015-10-02 Renlin Li <renlin.li@arm.com>
|
||||
|
||||
* gas/aarch64/reloc-gotoff_g1.s: New.
|
||||
* gas/aarch64/reloc-gotoff_g1.d: New.
|
||||
|
||||
2015-09-30 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* gas/ppc/ppc.exp (e500-ill): Pass -me500.
|
||||
|
9
gas/testsuite/gas/aarch64/reloc-gotoff_g1.d
Normal file
9
gas/testsuite/gas/aarch64/reloc-gotoff_g1.d
Normal file
@ -0,0 +1,9 @@
|
||||
#objdump: -dr
|
||||
|
||||
.*: file format .*
|
||||
|
||||
Disassembly of section \.text:
|
||||
|
||||
0000000000000000 <.*>:
|
||||
0: d2a0001c movz x28, #0x0, lsl #16
|
||||
0: R_AARCH64_MOVW_GOTOFF_G1 x
|
5
gas/testsuite/gas/aarch64/reloc-gotoff_g1.s
Normal file
5
gas/testsuite/gas/aarch64/reloc-gotoff_g1.s
Normal file
@ -0,0 +1,5 @@
|
||||
// Test file for AArch64 GAS -- gotoff_g1
|
||||
|
||||
func:
|
||||
// BFD_RELOC_AARCH64_MOVW_GOTOFF_G1
|
||||
movz x28, #:gotoff_g1:x
|
Loading…
Reference in New Issue
Block a user