summaryrefslogtreecommitdiff
path: root/bfd/elf32-frv.c
diff options
context:
space:
mode:
authorAlan Modra <amodra@bigpond.net.au>2005-05-07 02:55:55 +0000
committerAlan Modra <amodra@bigpond.net.au>2005-05-07 02:55:55 +0000
commit09fb0f7be64e0883fe5a2507f7d929c7a71950be (patch)
tree6bfc0c90f5bdd84002d415d9b4643494d1ed5564 /bfd/elf32-frv.c
parent297a22b395fe67afdd3394fecc80464c089c0d53 (diff)
downloadbinutils-redhat-09fb0f7be64e0883fe5a2507f7d929c7a71950be.tar.gz
bfd/
* elf-bfd.h (struct elf_backend_data): Remove got_symbol_offset. * elfxx-target.h (elf_backend_got_symbol_offset): Delete. * elflink.c (_bfd_elf_create_got_section): Use zero in place of got_symbol_offset. * elf-m10300.c (_bfd_mn10300_elf_create_got_section): Likewise. * elf32-frv.c (_frv_create_got_section): Likewise. * elf32-i370.c (i370_elf_finish_dynamic_sections): Delete ppc code. (elf_backend_got_symbol_offset): Don't define. * elf64-ppc.c (elf_backend_got_symbol_offset): Don't define. * elf32-ppc.c (struct ppc_elf_link_hash_table): Add got_header_size and got_gap. (ppc_elf_create_got): Tidy. (ppc_elf_create_dynamic_sections): Don't set SEC_IN_MEMORY for .plt. (ppc_elf_check_relocs): Reduce string comparisons by using elf.hgot. (ppc_elf_gc_sweep_hook): Likewise. (ppc_elf_relocate_section): Likewise. (ppc_elf_finish_dynamic_symbol): Likewise. (allocate_got): New function. (allocate_dynrelocs): Use allocate_got. (ppc_elf_size_dynamic_sections): Likewise. Delay tlsld_got allocation so that local got can refcount it. Set got_header_size. (ppc_elf_relocate_section): Use value of elf.hgot rather than hard- coded 4. (ppc_elf_finish_dynamic_sections): Likewise. (elf_backend_got_symbol_offset): Don't define. (elf_backend_got_header_size): Ditto. ld/testsuite/ * ld-powerpc/tlsexe32.d: Update for changed got layout. * ld-powerpc/tlsexe32.g: Likewise. * ld-powerpc/tlsexe32.r: Likewise. * ld-powerpc/tlsso32.d: Likewise. * ld-powerpc/tlsso32.g: Likewise. * ld-powerpc/tlsso32.r: Likewise.
Diffstat (limited to 'bfd/elf32-frv.c')
-rw-r--r--bfd/elf32-frv.c255
1 files changed, 127 insertions, 128 deletions
diff --git a/bfd/elf32-frv.c b/bfd/elf32-frv.c
index 49768adfa1..5ff7791a8d 100644
--- a/bfd/elf32-frv.c
+++ b/bfd/elf32-frv.c
@@ -112,7 +112,7 @@ static reloc_howto_type elf32_frv_howto_table [] =
FALSE), /* pcrel_offset */
/* A 16 bit pc-relative relocation. */
- HOWTO (R_FRV_LABEL16, /* type */
+ HOWTO (R_FRV_LABEL16, /* type */
2, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
16, /* bitsize */
@@ -124,10 +124,10 @@ static reloc_howto_type elf32_frv_howto_table [] =
FALSE, /* partial_inplace */
0xffff, /* src_mask */
0xffff, /* dst_mask */
- TRUE), /* pcrel_offset */
+ TRUE), /* pcrel_offset */
/* A 24-bit pc-relative relocation. */
- HOWTO (R_FRV_LABEL24, /* type */
+ HOWTO (R_FRV_LABEL24, /* type */
2, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
26, /* bitsize */
@@ -139,9 +139,9 @@ static reloc_howto_type elf32_frv_howto_table [] =
FALSE, /* partial_inplace */
0x7e03ffff, /* src_mask */
0x7e03ffff, /* dst_mask */
- TRUE), /* pcrel_offset */
+ TRUE), /* pcrel_offset */
- HOWTO (R_FRV_LO16, /* type */
+ HOWTO (R_FRV_LO16, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
16, /* bitsize */
@@ -153,9 +153,9 @@ static reloc_howto_type elf32_frv_howto_table [] =
FALSE, /* partial_inplace */
0xffff, /* src_mask */
0xffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ FALSE), /* pcrel_offset */
- HOWTO (R_FRV_HI16, /* type */
+ HOWTO (R_FRV_HI16, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
16, /* bitsize */
@@ -167,9 +167,9 @@ static reloc_howto_type elf32_frv_howto_table [] =
FALSE, /* partial_inplace */
0xffff, /* src_mask */
0xffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ FALSE), /* pcrel_offset */
- HOWTO (R_FRV_GPREL12, /* type */
+ HOWTO (R_FRV_GPREL12, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
12, /* bitsize */
@@ -177,13 +177,13 @@ static reloc_howto_type elf32_frv_howto_table [] =
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
- "R_FRV_GPREL12", /* name */
+ "R_FRV_GPREL12", /* name */
FALSE, /* partial_inplace */
- 0xfff, /* src_mask */
- 0xfff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ 0xfff, /* src_mask */
+ 0xfff, /* dst_mask */
+ FALSE), /* pcrel_offset */
- HOWTO (R_FRV_GPRELU12, /* type */
+ HOWTO (R_FRV_GPRELU12, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
12, /* bitsize */
@@ -191,13 +191,13 @@ static reloc_howto_type elf32_frv_howto_table [] =
0, /* bitpos */
complain_overflow_dont, /* complain_on_overflow */
bfd_elf_generic_reloc, /* special_function */
- "R_FRV_GPRELU12", /* name */
+ "R_FRV_GPRELU12", /* name */
FALSE, /* partial_inplace */
- 0xfff, /* src_mask */
- 0x3f03f, /* dst_mask */
- FALSE), /* pcrel_offset */
+ 0xfff, /* src_mask */
+ 0x3f03f, /* dst_mask */
+ FALSE), /* pcrel_offset */
- HOWTO (R_FRV_GPREL32, /* type */
+ HOWTO (R_FRV_GPREL32, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
32, /* bitsize */
@@ -207,11 +207,11 @@ static reloc_howto_type elf32_frv_howto_table [] =
bfd_elf_generic_reloc, /* special_function */
"R_FRV_GPREL32", /* name */
FALSE, /* partial_inplace */
- 0xffffffff, /* src_mask */
+ 0xffffffff, /* src_mask */
0xffffffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ FALSE), /* pcrel_offset */
- HOWTO (R_FRV_GPRELHI, /* type */
+ HOWTO (R_FRV_GPRELHI, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
16, /* bitsize */
@@ -221,11 +221,11 @@ static reloc_howto_type elf32_frv_howto_table [] =
bfd_elf_generic_reloc, /* special_function */
"R_FRV_GPRELHI", /* name */
FALSE, /* partial_inplace */
- 0xffff, /* src_mask */
+ 0xffff, /* src_mask */
0xffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ FALSE), /* pcrel_offset */
- HOWTO (R_FRV_GPRELLO, /* type */
+ HOWTO (R_FRV_GPRELLO, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
16, /* bitsize */
@@ -235,13 +235,13 @@ static reloc_howto_type elf32_frv_howto_table [] =
bfd_elf_generic_reloc, /* special_function */
"R_FRV_GPRELLO", /* name */
FALSE, /* partial_inplace */
- 0xffff, /* src_mask */
+ 0xffff, /* src_mask */
0xffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ FALSE), /* pcrel_offset */
/* A 12-bit signed operand with the GOT offset for the address of
the symbol. */
- HOWTO (R_FRV_GOT12, /* type */
+ HOWTO (R_FRV_GOT12, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
12, /* bitsize */
@@ -251,13 +251,13 @@ static reloc_howto_type elf32_frv_howto_table [] =
bfd_elf_generic_reloc, /* special_function */
"R_FRV_GOT12", /* name */
FALSE, /* partial_inplace */
- 0xfff, /* src_mask */
- 0xfff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ 0xfff, /* src_mask */
+ 0xfff, /* dst_mask */
+ FALSE), /* pcrel_offset */
/* The upper 16 bits of the GOT offset for the address of the
symbol. */
- HOWTO (R_FRV_GOTHI, /* type */
+ HOWTO (R_FRV_GOTHI, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
16, /* bitsize */
@@ -267,13 +267,13 @@ static reloc_howto_type elf32_frv_howto_table [] =
bfd_elf_generic_reloc, /* special_function */
"R_FRV_GOTHI", /* name */
FALSE, /* partial_inplace */
- 0xffff, /* src_mask */
+ 0xffff, /* src_mask */
0xffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ FALSE), /* pcrel_offset */
/* The lower 16 bits of the GOT offset for the address of the
symbol. */
- HOWTO (R_FRV_GOTLO, /* type */
+ HOWTO (R_FRV_GOTLO, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
16, /* bitsize */
@@ -285,7 +285,7 @@ static reloc_howto_type elf32_frv_howto_table [] =
FALSE, /* partial_inplace */
0xffff, /* src_mask */
0xffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ FALSE), /* pcrel_offset */
/* The 32-bit address of the canonical descriptor of a function. */
HOWTO (R_FRV_FUNCDESC, /* type */
@@ -314,9 +314,9 @@ static reloc_howto_type elf32_frv_howto_table [] =
bfd_elf_generic_reloc, /* special_function */
"R_FRV_FUNCDESC_GOT12", /* name */
FALSE, /* partial_inplace */
- 0xfff, /* src_mask */
- 0xfff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ 0xfff, /* src_mask */
+ 0xfff, /* dst_mask */
+ FALSE), /* pcrel_offset */
/* The upper 16 bits of the GOT offset for the address of the
canonical descriptor of a function. */
@@ -332,7 +332,7 @@ static reloc_howto_type elf32_frv_howto_table [] =
FALSE, /* partial_inplace */
0xffff, /* src_mask */
0xffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ FALSE), /* pcrel_offset */
/* The lower 16 bits of the GOT offset for the address of the
canonical descriptor of a function. */
@@ -348,7 +348,7 @@ static reloc_howto_type elf32_frv_howto_table [] =
FALSE, /* partial_inplace */
0xffff, /* src_mask */
0xffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ FALSE), /* pcrel_offset */
/* The 64-bit descriptor of a function. */
HOWTO (R_FRV_FUNCDESC_VALUE, /* type */
@@ -377,9 +377,9 @@ static reloc_howto_type elf32_frv_howto_table [] =
bfd_elf_generic_reloc, /* special_function */
"R_FRV_FUNCDESC_GOTOFF12", /* name */
FALSE, /* partial_inplace */
- 0xfff, /* src_mask */
- 0xfff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ 0xfff, /* src_mask */
+ 0xfff, /* dst_mask */
+ FALSE), /* pcrel_offset */
/* The upper 16 bits of the GOT offset for the address of the
canonical descriptor of a function. */
@@ -395,7 +395,7 @@ static reloc_howto_type elf32_frv_howto_table [] =
FALSE, /* partial_inplace */
0xffff, /* src_mask */
0xffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ FALSE), /* pcrel_offset */
/* The lower 16 bits of the GOT offset for the address of the
canonical descriptor of a function. */
@@ -411,11 +411,11 @@ static reloc_howto_type elf32_frv_howto_table [] =
FALSE, /* partial_inplace */
0xffff, /* src_mask */
0xffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ FALSE), /* pcrel_offset */
/* A 12-bit signed operand with the GOT offset for the address of
the symbol. */
- HOWTO (R_FRV_GOTOFF12, /* type */
+ HOWTO (R_FRV_GOTOFF12, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
12, /* bitsize */
@@ -425,13 +425,13 @@ static reloc_howto_type elf32_frv_howto_table [] =
bfd_elf_generic_reloc, /* special_function */
"R_FRV_GOTOFF12", /* name */
FALSE, /* partial_inplace */
- 0xfff, /* src_mask */
- 0xfff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ 0xfff, /* src_mask */
+ 0xfff, /* dst_mask */
+ FALSE), /* pcrel_offset */
/* The upper 16 bits of the GOT offset for the address of the
symbol. */
- HOWTO (R_FRV_GOTOFFHI, /* type */
+ HOWTO (R_FRV_GOTOFFHI, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
16, /* bitsize */
@@ -443,7 +443,7 @@ static reloc_howto_type elf32_frv_howto_table [] =
FALSE, /* partial_inplace */
0xffff, /* src_mask */
0xffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ FALSE), /* pcrel_offset */
/* The lower 16 bits of the GOT offset for the address of the
symbol. */
@@ -459,7 +459,7 @@ static reloc_howto_type elf32_frv_howto_table [] =
FALSE, /* partial_inplace */
0xffff, /* src_mask */
0xffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ FALSE), /* pcrel_offset */
/* A 24-bit pc-relative relocation referencing the TLS PLT entry for
a thread-local symbol. If the symbol number is 0, it refers to
@@ -476,7 +476,7 @@ static reloc_howto_type elf32_frv_howto_table [] =
FALSE, /* partial_inplace */
0x7e03ffff, /* src_mask */
0x7e03ffff, /* dst_mask */
- TRUE), /* pcrel_offset */
+ TRUE), /* pcrel_offset */
/* A 64-bit TLS descriptor for a symbol. This relocation is only
valid as a REL, dynamic relocation. */
@@ -496,7 +496,7 @@ static reloc_howto_type elf32_frv_howto_table [] =
/* A 12-bit signed operand with the GOT offset for the TLS
descriptor of the symbol. */
- HOWTO (R_FRV_GOTTLSDESC12, /* type */
+ HOWTO (R_FRV_GOTTLSDESC12, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
12, /* bitsize */
@@ -506,13 +506,13 @@ static reloc_howto_type elf32_frv_howto_table [] =
bfd_elf_generic_reloc, /* special_function */
"R_FRV_GOTTLSDESC12", /* name */
FALSE, /* partial_inplace */
- 0xfff, /* src_mask */
- 0xfff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ 0xfff, /* src_mask */
+ 0xfff, /* dst_mask */
+ FALSE), /* pcrel_offset */
/* The upper 16 bits of the GOT offset for the TLS descriptor of the
symbol. */
- HOWTO (R_FRV_GOTTLSDESCHI, /* type */
+ HOWTO (R_FRV_GOTTLSDESCHI, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
16, /* bitsize */
@@ -524,7 +524,7 @@ static reloc_howto_type elf32_frv_howto_table [] =
FALSE, /* partial_inplace */
0xffff, /* src_mask */
0xffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ FALSE), /* pcrel_offset */
/* The lower 16 bits of the GOT offset for the TLS descriptor of the
symbol. */
@@ -540,11 +540,11 @@ static reloc_howto_type elf32_frv_howto_table [] =
FALSE, /* partial_inplace */
0xffff, /* src_mask */
0xffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ FALSE), /* pcrel_offset */
/* A 12-bit signed operand with the offset from the module base
address to the thread-local symbol address. */
- HOWTO (R_FRV_TLSMOFF12, /* type */
+ HOWTO (R_FRV_TLSMOFF12, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
12, /* bitsize */
@@ -554,13 +554,13 @@ static reloc_howto_type elf32_frv_howto_table [] =
bfd_elf_generic_reloc, /* special_function */
"R_FRV_TLSMOFF12", /* name */
FALSE, /* partial_inplace */
- 0xfff, /* src_mask */
- 0xfff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ 0xfff, /* src_mask */
+ 0xfff, /* dst_mask */
+ FALSE), /* pcrel_offset */
/* The upper 16 bits of the offset from the module base address to
the thread-local symbol address. */
- HOWTO (R_FRV_TLSMOFFHI, /* type */
+ HOWTO (R_FRV_TLSMOFFHI, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
16, /* bitsize */
@@ -572,7 +572,7 @@ static reloc_howto_type elf32_frv_howto_table [] =
FALSE, /* partial_inplace */
0xffff, /* src_mask */
0xffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ FALSE), /* pcrel_offset */
/* The lower 16 bits of the offset from the module base address to
the thread-local symbol address. */
@@ -588,11 +588,11 @@ static reloc_howto_type elf32_frv_howto_table [] =
FALSE, /* partial_inplace */
0xffff, /* src_mask */
0xffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ FALSE), /* pcrel_offset */
/* A 12-bit signed operand with the GOT offset for the TLSOFF entry
for a symbol. */
- HOWTO (R_FRV_GOTTLSOFF12, /* type */
+ HOWTO (R_FRV_GOTTLSOFF12, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
12, /* bitsize */
@@ -602,13 +602,13 @@ static reloc_howto_type elf32_frv_howto_table [] =
bfd_elf_generic_reloc, /* special_function */
"R_FRV_GOTTLSOFF12", /* name */
FALSE, /* partial_inplace */
- 0xfff, /* src_mask */
- 0xfff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ 0xfff, /* src_mask */
+ 0xfff, /* dst_mask */
+ FALSE), /* pcrel_offset */
/* The upper 16 bits of the GOT offset for the TLSOFF entry for a
symbol. */
- HOWTO (R_FRV_GOTTLSOFFHI, /* type */
+ HOWTO (R_FRV_GOTTLSOFFHI, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
16, /* bitsize */
@@ -620,7 +620,7 @@ static reloc_howto_type elf32_frv_howto_table [] =
FALSE, /* partial_inplace */
0xffff, /* src_mask */
0xffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ FALSE), /* pcrel_offset */
/* The lower 16 bits of the GOT offset for the TLSOFF entry for a
symbol. */
@@ -636,7 +636,7 @@ static reloc_howto_type elf32_frv_howto_table [] =
FALSE, /* partial_inplace */
0xffff, /* src_mask */
0xffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ FALSE), /* pcrel_offset */
/* The 32-bit offset from the thread pointer (not the module base
address) to a thread-local symbol. */
@@ -707,7 +707,7 @@ static reloc_howto_type elf32_frv_howto_table [] =
/* A 32-bit offset from the module base address to
the thread-local symbol address. */
- HOWTO (R_FRV_TLSMOFF, /* type */
+ HOWTO (R_FRV_TLSMOFF, /* type */
0, /* rightshift */
2, /* size (0 = byte, 1 = short, 2 = long) */
32, /* bitsize */
@@ -719,40 +719,40 @@ static reloc_howto_type elf32_frv_howto_table [] =
FALSE, /* partial_inplace */
0xffffffff, /* src_mask */
0xffffffff, /* dst_mask */
- FALSE), /* pcrel_offset */
+ FALSE), /* pcrel_offset */
};
/* GNU extension to record C++ vtable hierarchy. */
static reloc_howto_type elf32_frv_vtinherit_howto =
- HOWTO (R_FRV_GNU_VTINHERIT, /* type */
- 0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
- 0, /* bitsize */
- FALSE, /* pc_relative */
- 0, /* bitpos */
- complain_overflow_dont, /* complain_on_overflow */
- NULL, /* special_function */
- "R_FRV_GNU_VTINHERIT", /* name */
- FALSE, /* partial_inplace */
- 0, /* src_mask */
- 0, /* dst_mask */
- FALSE); /* pcrel_offset */
+ HOWTO (R_FRV_GNU_VTINHERIT, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 0, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_dont, /* complain_on_overflow */
+ NULL, /* special_function */
+ "R_FRV_GNU_VTINHERIT", /* name */
+ FALSE, /* partial_inplace */
+ 0, /* src_mask */
+ 0, /* dst_mask */
+ FALSE); /* pcrel_offset */
/* GNU extension to record C++ vtable member usage. */
static reloc_howto_type elf32_frv_vtentry_howto =
- HOWTO (R_FRV_GNU_VTENTRY, /* type */
- 0, /* rightshift */
- 2, /* size (0 = byte, 1 = short, 2 = long) */
- 0, /* bitsize */
- FALSE, /* pc_relative */
- 0, /* bitpos */
- complain_overflow_dont, /* complain_on_overflow */
- _bfd_elf_rel_vtable_reloc_fn, /* special_function */
- "R_FRV_GNU_VTENTRY", /* name */
- FALSE, /* partial_inplace */
- 0, /* src_mask */
- 0, /* dst_mask */
- FALSE); /* pcrel_offset */
+ HOWTO (R_FRV_GNU_VTENTRY, /* type */
+ 0, /* rightshift */
+ 2, /* size (0 = byte, 1 = short, 2 = long) */
+ 0, /* bitsize */
+ FALSE, /* pc_relative */
+ 0, /* bitpos */
+ complain_overflow_dont, /* complain_on_overflow */
+ _bfd_elf_rel_vtable_reloc_fn, /* special_function */
+ "R_FRV_GNU_VTENTRY", /* name */
+ FALSE, /* partial_inplace */
+ 0, /* src_mask */
+ 0, /* dst_mask */
+ FALSE); /* pcrel_offset */
/* The following 3 relocations are REL. The only difference to the
entries in the table above are that partial_inplace is TRUE. */
@@ -1872,7 +1872,7 @@ _frvfdpic_emit_got_relocs_plt_entries (struct frvfdpic_relocs_info *entry,
->output_offset,
R_FRV_TLSOFF, idx, ad, entry);
}
-
+
bfd_put_32 (output_bfd, ad,
frvfdpic_got_section (info)->contents
+ frvfdpic_got_initial_offset (info)
@@ -2004,7 +2004,7 @@ _frvfdpic_emit_got_relocs_plt_entries (struct frvfdpic_relocs_info *entry,
{
bfd_byte *plt_code = frvfdpic_plt_section (info)->contents
+ entry->tlsplt_entry;
-
+
if (info->executable
&& (entry->symndx != -1
|| FRVFDPIC_SYM_LOCAL (info, entry->d.h)))
@@ -2032,7 +2032,7 @@ _frvfdpic_emit_got_relocs_plt_entries (struct frvfdpic_relocs_info *entry,
else
idx = 0;
}
-
+
/* *ABS*+addend is special for TLS relocations, use only the
addend for the TLS offset, and take the module id as
0. */
@@ -2044,7 +2044,7 @@ _frvfdpic_emit_got_relocs_plt_entries (struct frvfdpic_relocs_info *entry,
TLS offset to the addend. */
else if (sec)
ad += sec->output_section->vma - tls_biased_base (info);
-
+
if ((bfd_signed_vma)ad >= -(1 << (16 - 1))
&& (bfd_signed_vma)ad < (1 << (16 - 1)))
{
@@ -2974,7 +2974,7 @@ elf32_frv_relocate_section (output_bfd, info, input_bfd, input_section,
(LOCAL_EXEC_P ((info), (picrel)))
#define RELAX_TLSDESC_INITIAL_EXEC_P(info, picrel) \
(INITIAL_EXEC_P ((info), (picrel)))
-
+
#define RELAX_GOTTLSOFF_LOCAL_EXEC_P(info, picrel, value) \
(LOCAL_EXEC_P ((info), (picrel)) \
&& TLSMOFF_IN_RANGE_FOR_SETLOS_P((value), (info)))
@@ -2991,7 +2991,7 @@ elf32_frv_relocate_section (output_bfd, info, input_bfd, input_section,
name, input_bfd, input_section, rel->r_offset);
return FALSE;
}
-
+
if (RELAX_GETTLSOFF_LOCAL_EXEC_P (info, picrel,
relocation + rel->r_addend))
{
@@ -3128,7 +3128,7 @@ elf32_frv_relocate_section (output_bfd, info, input_bfd, input_section,
}
break;
-
+
case R_FRV_GOTTLSDESCLO:
insn = bfd_get_32 (input_bfd, contents + rel->r_offset);
@@ -3176,7 +3176,7 @@ elf32_frv_relocate_section (output_bfd, info, input_bfd, input_section,
}
break;
-
+
case R_FRV_TLSDESC_RELAX:
insn = bfd_get_32 (input_bfd, contents + rel->r_offset);
@@ -3506,12 +3506,12 @@ elf32_frv_relocate_section (output_bfd, info, input_bfd, input_section,
/*
There's nothing to relax in these:
- R_FRV_TLSDESC_VALUE
- R_FRV_TLSOFF
- R_FRV_TLSMOFF12
- R_FRV_TLSMOFFHI
- R_FRV_TLSMOFFLO
- R_FRV_TLSMOFF
+ R_FRV_TLSDESC_VALUE
+ R_FRV_TLSOFF
+ R_FRV_TLSMOFF12
+ R_FRV_TLSMOFFHI
+ R_FRV_TLSMOFFLO
+ R_FRV_TLSMOFF
*/
default:
@@ -3921,7 +3921,7 @@ elf32_frv_relocate_section (output_bfd, info, input_bfd, input_section,
? _frvfdpic_osec_to_segment (output_bfd, sec->output_section)
: tls_segment;
break;
-
+
case R_FRV_TLSDESC_VALUE:
case R_FRV_TLSOFF:
/* These shouldn't be present in input object files. */
@@ -4304,8 +4304,7 @@ _frv_create_got_section (bfd *abfd, struct bfd_link_info *info)
bh = NULL;
if (!(_bfd_generic_link_add_one_symbol
(info, abfd, "_GLOBAL_OFFSET_TABLE_", BSF_GLOBAL, s,
- bed->got_symbol_offset, (const char *) NULL, FALSE,
- bed->collect, &bh)))
+ 0, (const char *) NULL, FALSE, bed->collect, &bh)))
return FALSE;
h = (struct elf_link_hash_entry *) bh;
h->def_regular = 1;
@@ -4321,7 +4320,7 @@ _frv_create_got_section (bfd *abfd, struct bfd_link_info *info)
}
/* The first bit of the global offset table is the header. */
- s->size += bed->got_header_size + bed->got_symbol_offset;
+ s->size += bed->got_header_size;
/* This is the machine-specific part. Create and initialize section
data for the got. */
@@ -4577,7 +4576,7 @@ _frvfdpic_count_tls_entries (struct frvfdpic_relocs_info *entry,
bfd_boolean subtract)
{
const int l = subtract ? -1 : 1;
-
+
/* Allocate space for a GOT entry with the TLS offset of the
symbol. */
if (entry->tlsoff12)
@@ -4761,7 +4760,7 @@ _frvfdpic_relax_tls_entries (struct frvfdpic_relocs_info *entry,
_frvfdpic_count_tls_entries (entry, dinfo, TRUE);
changed = TRUE;
}
-
+
entry->tlsplt =
entry->tlsoff12 = entry->tlsofflos = entry->tlsoffhilo = 0;
}
@@ -5245,7 +5244,7 @@ _frvfdpic_assign_plt_entries (void **entryp, void *info_)
else
size = 16;
}
-
+
frvfdpic_plt_section (dinfo->g.info)->size += size;
}
@@ -5833,7 +5832,7 @@ elf32_frvfdpic_finish_dynamic_sections (bfd *output_bfd,
&& (hend->type == bfd_link_hash_defined
|| hend->type == bfd_link_hash_defweak))
{
- bfd_vma value =
+ bfd_vma value =
frvfdpic_gotfixup_section (info)->output_section->vma
+ frvfdpic_gotfixup_section (info)->output_offset
+ frvfdpic_gotfixup_section (info)->size
@@ -6276,7 +6275,7 @@ elf32_frv_check_relocs (abfd, info, sec, relocs)
case R_FRV_TLSDESC_VALUE:
picrel->relocstlsd++;
goto bad_reloc;
-
+
case R_FRV_GOTTLSDESC12:
picrel->tlsdesc12 = 1;
break;
@@ -6296,13 +6295,13 @@ elf32_frv_check_relocs (abfd, info, sec, relocs)
picrel->tlsoff12 = 1;
info->flags |= DF_STATIC_TLS;
break;
-
+
case R_FRV_GOTTLSOFFHI:
case R_FRV_GOTTLSOFFLO:
picrel->tlsoffhilo = 1;
info->flags |= DF_STATIC_TLS;
break;
-
+
case R_FRV_TLSOFF:
picrel->relocstlsoff++;
info->flags |= DF_STATIC_TLS;