Will Newton
7b70956dc8
bfd/elf-ifunc.c: Add header size arg to _bfd_elf_allocate_ifunc_dyn_relocs.
...
bfd/ChangeLog:
2013-05-07 Will Newton <will.newton@linaro.org>
* elf-ifunc.c (_bfd_elf_allocate_ifunc_dyn_relocs): Add a
plt_header_size argument for ports where it differs from
plt_entry_size.
* elf-bfd.h: Likewise.
* elf32-i386.c: Pass plt_header_size to
_bfd_elf_allocate_ifunc_dyn_relocs.
* elf64-x86-64.c: Likewise.
2013-05-07 17:03:52 +00:00
H.J. Lu
61315175ad
Set non_ir_ref if a symbol is referenced by a non-shared object
...
bfd/
PR ld/15323
* elf32-i386.c (elf_i386_check_relocs): Set non_ir_ref if a
symbol is referenced by a non-shared object.
* elf64-x86-64.c (elf_x86_64_check_relocs): Likewise.
ld/testsuite/
PR ld/15323
* ld-plugin/lto.exp (lto_link_tests): Add pr15323a-r.o.
(lto_run_tests): Add a test for PR ld/15323.
* ld-plugin/pr15323.out: New file.
* ld-plugin/pr15323a.c: Likewise.
* ld-plugin/pr15323b.c: Likewise.
2013-03-30 00:38:39 +00:00
Alan Modra
7e612e9848
* elf-bfd.h (enum elf_reloc_type_class): Add reloc_class_ifunc.
...
(struct elf_backend_data <elf_backed_reloc_type_class>): Add
bfd_link_info* and asection* params.
(_bfd_elf_reloc_type_class): Likewise.
* elf.c (_bfd_elf_reloc_type_class): Likewise.
* elflink.c (elf_link_sort_cmp2): Sort first on reloc class.
(elf_link_sort_relocs): Update elf_backed_reloc_type_class call.
* elf32-ppc.c (ppc_elf_reloc_type_class): Return reloc_class_ifunc
for any reliplt reloc. Don't return reloc_class_plt for
R_PPC_REL24 and R_PPC_ADDR24.
* elf64-ppc.c (allocate_got): Formatting.
(ppc64_elf_reloc_type_class): Return reloc_class_ifunc for any
reliplt reloc.
* elf-m10300.c, * elf32-arm.c, * elf32-bfin.c, * elf32-cr16.c,
* elf32-cris.c, * elf32-hppa.c, * elf32-i386.c, * elf32-lm32.c,
* elf32-m32r.c, * elf32-m68k.c, * elf32-metag.c, * elf32-nios2.c,
* elf32-s390.c, * elf32-sh.c, * elf32-sparc.c, * elf32-tilepro.c,
* elf32-vax.c, * elf32-xtensa.c, * elf64-aarch64.c, * elf64-alpha.c,
* elf64-hppa.c, * elf64-ia64-vms.c, * elf64-s390.c, * elf64-sparc.c,
* elf64-x86-64.c, * elfnn-ia64.c, * elfxx-tilegx.c, * elfxx-tilegx.h:
Add extra params to the various reloc_type_class functions.
2013-03-27 13:37:51 +00:00
Alan Modra
228e534f16
* elf-bfd.h (struct core_elf_obj_tdata): New.
...
(struct elf_obj_tdata): Delete core_signal, core_pid, core_lwpid,
core_program, and core_command. Add "core".
* elf.c (bfd_elf_mkcorefile): Allocate "core" struct.
Update all refs to tdata core fields.
* elf32-am33lin.c, * elf32-arm.c, * elf32-cris.c, * elf32-frv.c,
* elf32-hppa.c, * elf32-i386.c, * elf32-m68k.c, * elf32-mips.c,
* elf32-nios2.c, * elf32-ppc.c, * elf32-s390.c, * elf32-score.c,
* elf32-score7.c, * elf32-sh.c, * elf32-sparc.c, * elf32-tilegx.c,
* elf32-tilepro.c, * elf32-xtensa.c, * elf64-aarch64.c,
* elf64-hppa.c, * elf64-mips.c, * elf64-ppc.c, * elf64-tilegx.c,
* elf64-x86-64.c, * elfcore.h, * elfn32-mips.c: Update all refs
to tdata core fields.
2013-02-21 03:02:30 +00:00
Alan Modra
9f7c3e5e99
* elfcode.h (elf_checksum_contents): Free contents.
...
* elf-bfd.h (_bfd_elf_link_hash_table_free): Declare.
* elflink.c (_bfd_elf_link_hash_table_free): New function.
(elf_final_link_free): New function, extracted from..
(bfd_elf_final_link): ..here. Always call
_bfd_elf_write_section_eh_frame_hdr.
* elfxx-target.h (bfd_elfNN_bfd_link_hash_table_free): Default to
_bfd_elf_link_hash_table_free.
* libbfd-in.h (_bfd_merge_sections_free): Declare.
* libbfd.h: Regenerate.
* merge.c (_bfd_merge_sections_free): New function.
* elf-eh-frame.c (_bfd_elf_write_section_eh_frame_hdr): Free
hdr_info->array.
* elf-m10300.c (elf32_mn10300_link_hash_table_free): Call
_bfd_elf_link_hash_table_free.
* elf32-arm.c (elf32_arm_link_hash_table_free): Likewise.
* elf32-avr.c (elf32_avr_link_hash_table_free): Likewise.
* elf32-hppa.c (elf32_hppa_link_hash_table_free): Likewise.
* elf32-i386.c (elf_i386_link_hash_table_free): Likewise.
* elf32-m68hc1x.c (m68hc11_elf_hash_table_free): Likewise.
* elf32-m68k.c (elf_m68k_link_hash_table_free): Likewise.
* elf32-metag.c (elf_metag_link_hash_table_free): Likewise.
* elf32-xgate.c (xgate_elf_bfd_link_hash_table_free): Likewise.
* elf64-aarch64.c (elf64_aarch64_link_hash_table_free): Likewise.
* elf64-ia64-vms.c (elf64_ia64_hash_table_free): Likewise.
* elf64-ppc.c (ppc64_elf_link_hash_table_free): Likewise.
* elf64-x86-64.c (elf_x86_64_link_hash_table_free): Likewise.
* elfnn-ia64.c (elfNN_ia64_hash_table_free): Likewise.
* elf32-cr16.c (elf32_cr16_link_hash_table_free): Delete.
(bfd_elf32_bfd_link_hash_table_free): Don't define.
* elf32-tic6x.c (elf32_tic6x_link_hash_table_free): Delete.
(bfd_elf32_bfd_link_hash_table_free): Dont' define.
2013-02-11 05:30:54 +00:00
Alan Modra
7bf52ea2ca
* coff-arm.c (coff_arm_link_hash_table_create): Use bfd_zmalloc.
...
* coff-h8300.c (h8300_coff_link_hash_table_create): Likewise.
* m68klinux.c (linux_link_hash_table_create): Likewise.
* sparclinux.c (linux_link_hash_table_create): Likewise.
* sunos.c (sunos_link_hash_table_create): Likewise.
* xcofflink.c (_bfd_xcoff_bfd_link_hash_table_create): Likewise.
* elf-m10300.c (elf32_mn10300_link_hash_table_create): Likewise.
* elf32-arm.c (elf32_arm_link_hash_table_create): Likewise.
* elf32-avr.c (elf32_avr_link_hash_table_create): Likewise.
* elf32-cr16.c (elf32_cr16_link_hash_table_create): Likewise.
* elf32-cris.c (elf_cris_link_hash_table_create): Likewise.
* elf32-hppa.c (elf32_hppa_link_hash_table_create): Likewise.
* elf32-i386.c (elf_i386_link_hash_table_create): Likewise.
* elf32-lm32.c (lm32_elf_link_hash_table_create): Likewise.
* elf32-m32r.c (m32r_elf_link_hash_table_create): Likewise.
* elf32-m68hc1x.c (m68hc11_elf_hash_table_create): Likewise.
* elf32-m68k.c (elf_m68k_link_hash_table_create): Likewise.
* elf32-metag.c (elf_metag_link_hash_table_create): Likewise.
* elf32-nios2.c (nios2_elf32_link_hash_table_create): Likewise.
* elf32-s390.c (elf_s390_link_hash_table_create): Likewise.
* elf32-score.c (elf32_score_link_hash_table_create): Likewise.
* elf32-spu.c (spu_elf_link_hash_table_create): Likewise.
* elf32-tic6x.c (elf32_tic6x_link_hash_table_create): Likewise.
* elf32-vax.c (elf_vax_link_hash_table_create): Likewise.
* elf32-xgate.c (xgate_elf_bfd_link_hash_table_create): Likewise.
* elf32-xtensa.c (elf_xtensa_link_hash_table_create): Likewise.
* elf64-aarch64.c (elf64_aarch64_link_hash_table_create): Likewise.
* elf64-s390.c (elf_s390_link_hash_table_create): Likewise.
* elf64-sh64.c (sh64_elf64_link_hash_table_create): Likewise.
* elf64-x86-64.c (elf_x86_64_link_hash_table_create): Likewise.
* elfxx-mips.c (_bfd_mips_elf_link_hash_table_create): Likewise.
* elflink.c (_bfd_elf_link_hash_table_create): Likewise.
(_bfd_elf_link_hash_table_init): Assume zero fill table on entry.
2013-02-10 04:36:33 +00:00
H.J. Lu
20e52bd2b8
Don't resolve size relocation against non-zero TLS symbol
...
bfd/
* elf32-i386.c (elf_i386_allocate_dynrelocs): Don't clear pc_count
for non-zero TLS symbol.
(elf_i386_relocate_section): Don't resolve size relocation against
non-zero TLS symbol.
* elf64-x86-64.c (elf_x86_64_allocate_dynrelocs): Don't clear
pc_count for non-zero TLS symbol.
(elf_x86_64_relocate_section): Don't resolve size relocation
against non-zero TLS symbol.
ld/testsuite/
* ld-size/size-10.rd: Updated.
* ld-size/size-8.rd: Likewise.
* ld-size/size32-2-i386.d: Likewise.
* ld-size/size32-2-x32.d: Likewise.
* ld-size/size32-2-x86-64.d: Likewise.
* ld-size/size64-2-x32.d: Likewise.
* ld-size/size64-2-x86-64.d: Likewise.
* ld-size/size.exp (run_time_tests): Pass --hash-styl=gnu to
linker for size-8 test.
2013-02-07 02:15:30 +00:00
H.J. Lu
3bea1fcb8b
Resolve size relocation against non-zero TLS symbol
...
bfd/
* elf32-i386.c (elf_i386_allocate_dynrelocs): Clear pc_count for
non-zero TLS symbol.
(elf_i386_relocate_section): Resolve size relocation against
non-zero TLS symbol.
* elf64-x86-64.c (elf_x86_64_allocate_dynrelocs): Clear pc_count
for non-zero TLS symbol.
(elf_x86_64_relocate_section): Resolve size relocation against
non-zero TLS symbol.
ld/testsuite/
* ld-size/size-10.rd: Updated.
* ld-size/size-8.rd: Likewise.
* ld-size/size32-2-i386.d: Likewise.
* ld-size/size32-2-x32.d: Likewise.
* ld-size/size32-2-x86-64.d: Likewise.
* ld-size/size64-2-x32.d: Likewise.
* ld-size/size64-2-x86-64.d: Likewise.
2013-01-18 22:50:30 +00:00
H.J. Lu
06a6a421f2
Count size relocation as PC-relative relocation
...
bfd/
* elf32-i386.c (elf_i386_check_relocs): Count size relocation as
PC-relative relocation.
* elf64-x86-64.c (elf_x86_64_check_relocs): Count size relocation
as PC-relative relocation.
ld/testsuite/
* ld-size/size32-3-i386.d: New file.
* ld-size/size32-3-x32.d: Likewise.
* ld-size/size32-3-x86-64.d: Likewise.
* ld-size/size32-3.s: Likewise.
2013-01-17 23:36:10 +00:00
H.J. Lu
6a3e1baeae
Update x86 size relocation check
...
* elf32-i386.c (elf_i386_check_relocs): Update R_386_SIZE32
check.
(elf_i386_relocate_section): Don't check TLS for R_386_SIZE32.
* elf64-x86-64.c (elf_x86_64_check_relocs): Update R_X86_64_SIZE32
and R_X86_64_SIZE64 check.
(elf_x86_64_relocate_section): Don't check TLS for R_X86_64_SIZE32
nor R_X86_64_SIZE64.
2013-01-16 22:41:03 +00:00
H.J. Lu
1788fc08f7
Add x86 size relocation support to bfd
...
* bfd-in2.h: Regenerated.
* libbfd.h: Likewise.
* elf32-i386.c (elf_howto_table): Fill R_386_SIZE32 entry.
(elf_i386_reloc_type_lookup): Support BFD_RELOC_SIZE32.
(elf_i386_check_relocs): Handle R_386_SIZE32.
(elf_i386_gc_sweep_hook): Likewise.
(elf_i386_relocate_section): Likewise.
* elf64-x86-64.c (x86_64_elf_howto_table): Fill R_X86_64_SIZE32
and R_X86_64_SIZE64 entries.
(x86_64_reloc_map): Add BFD_RELOC_SIZE32 and BFD_RELOC_SIZE64,
(elf_x86_64_rtype_to_howto): Handle R_X86_64_SIZE32 for x32.
(elf_x86_64_reloc_name_lookup): Likewise.
(elf_x86_64_check_relocs): Handle R_X86_64_SIZE32 and
R_X86_64_SIZE64.
(elf_x86_64_gc_sweep_hook): Likewise.
(elf_x86_64_relocate_section): Likewise.
* reloc.c (bfd_reloc_code_type): Add BFD_RELOC_SIZE32 and
BFD_RELOC_SIZE64.
2013-01-16 21:34:46 +00:00
H.J. Lu
68c4a57ee6
Set bfd errror for normal and TLS symbol access
...
* elf32-i386.c (elf_i386_check_relocs): Set bfd errror for
normal and TLS symbol access.
* elf64-x86-64.c (elf_x86_64_check_relocs): Likewise.
2013-01-13 00:30:20 +00:00
H.J. Lu
a5479e5ff4
Properly adjust h->plt.refcount
...
bfd/
PR ld/14980
* elf32-i386.c (elf_i386_adjust_dynamic_symbol): Properly
adjust h->plt.refcount.
* elf64-x86-64.c (elf_x86_64_adjust_dynamic_symbol): Likewise.
ld/testsuite/
PR ld/14980
* ld-ifunc/ifunc-14c.s: New file.
* ld-ifunc/ifunc-14e-i386.d: Likewise.
* ld-ifunc/ifunc-14e-x86-64.d: Likewise.
* ld-ifunc/ifunc-14f-i386.d: Likewise.
* ld-ifunc/ifunc-14f-x86-64.d: Likewise.
2012-12-21 18:15:22 +00:00
H.J. Lu
c3b0209786
Fix indentation in the last checkin
2012-12-19 19:50:40 +00:00
H.J. Lu
59d6ffb2c9
Fix and use elf_append_rel
...
* elf32-i386.c (elf_i386_relocate_section): Replace
bfd_elf32_swap_reloc_out with elf_append_rel.
(elf_i386_finish_dynamic_symbol): Likewise.
* elflink.c (elf_append_rel): Call swap_reloc_out instead of
swap_reloca_out.
2012-12-19 19:45:43 +00:00
H.J. Lu
13ca314985
Reindent elf_i386_finish_dynamic_symbol
...
* elf32-i386.c (elf_i386_finish_dynamic_symbol): Reindent.
2012-12-19 19:41:18 +00:00
H.J. Lu
ad1e85de41
Don't check IFUNC relocations in elf_*_check_relocs
...
* elf32-i386.c (elf_i386_check_relocs): Don't check IFUNC
relocations here.
* elf64-x86-64.c (elf_x86_64_check_relocs): Likewise.
2012-12-16 23:01:13 +00:00
H.J. Lu
73bcf23385
Also check local IFUNC references
...
bfd/
PR ld/14968
* elf32-i386.c (elf_i386_adjust_dynamic_symbol): Also check
local IFUNC references.
* elf64-x86-64.c (elf_x86_64_adjust_dynamic_symbol): Likewise.
ld/testsuite/
PR ld/14968
* ld-ifunc/ifunc-18a-i386.d: New file.
* ld-ifunc/ifunc-18a-x86-64.d: Likewise.
* ld-ifunc/ifunc-18a.s: Likewise.
* ld-ifunc/ifunc-18b-i386.d: Likewise.
* ld-ifunc/ifunc-18b-x86-64.d: Likewise.
* ld-ifunc/ifunc-18b.s: Likewise.
* ld-ifunc/ifunc-19a-i386.d: Likewise.
* ld-ifunc/ifunc-19a-x86-64.d: Likewise.
* ld-ifunc/ifunc-19a.s: Likewise.
* ld-ifunc/ifunc-19b-i386.d: Likewise.
* ld-ifunc/ifunc-19b-x86-64.d: Likewise.
* ld-ifunc/ifunc-19b.s: Likewise.
2012-12-16 20:31:08 +00:00
H.J. Lu
5ca5bb3545
Check local IFUNC calls
...
bfd/
2012-12-13 H.J. Lu <hongjiu.lu@intel.com>
PR ld/14956
* elf32-i386.c (elf_i386_adjust_dynamic_symbol): Check local
IFUNC calls.
* elf64-x86-64.c (elf_x86_64_adjust_dynamic_symbol): Likewise.
ld/testsuite/
2012-12-13 H.J. Lu <hongjiu.lu@intel.com>
PR ld/14956
* ld-ifunc/ifunc-14-i386.d: Renamed to ...
* ld-ifunc/ifunc-14a-i386.d: This.
* ld-ifunc/ifunc-14-x86-64.d: Renamed to ...
* ld-ifunc/ifunc-14a-x86-64.d: This.
* ld-ifunc/ifunc-14b-i386.d: New file.
* ld-ifunc/ifunc-14b-x86-64.d: Likewise.
* ld-ifunc/ifunc-14c-i386.d: Likewise.
* ld-ifunc/ifunc-14c-x86-64.d: Likewise.
* ld-ifunc/ifunc-14d-i386.d: Likewise.
* ld-ifunc/ifunc-14d-x86-64.d: Likewise.
2012-12-13 21:07:16 +00:00
H.J. Lu
9d4b2dba0e
Replace _GLOBAL_OFFSET_TABLE_ lookup with htab->elf.hgot
...
* elf32-i386.c (elf_i386_size_dynamic_sections): Replace
_GLOBAL_OFFSET_TABLE_ lookup with htab->elf.hgot.
* elf64-x86-64.c (elf_x86_64_size_dynamic_sections): Likewise.
2012-10-25 13:36:08 +00:00
H.J. Lu
fbdc86d9c9
Ignore discarded section when converting mov to lea
...
* elf32-i386.c (elf_i386_convert_mov_to_lea): Ignore discarded
section.
* elf64-x86-64.c (elf_x86_64_convert_mov_to_lea): Likewise.
2012-09-18 00:41:59 +00:00
H.J. Lu
cec7f46ac2
Replace return FALSE with abort in x86 finish_dynamic_symbol
...
* elf32-i386.c (elf_i386_finish_dynamic_symbol): Replace return
FALSE with abort.
* elf64-x86-64.c (elf_x86_64_finish_dynamic_symbol): Likewise.
2012-09-17 18:31:15 +00:00
H.J. Lu
9637f6ef78
Add hdynamic to elf_link_hash_table for _DYNAMIC
...
* elf-bfd.h (elf_link_hash_table): Add hdynamic for the
_DYNAMIC symbol.
* elflink.c (_bfd_elf_link_create_dynamic_sections): Set
hdynamic.
* elf-m10300.c (_bfd_mn10300_elf_finish_dynamic_symbol): Check
hdynamic instead of "_DYNAMIC".
* elf32-arm.c (elf32_arm_finish_dynamic_symbol): Likewise.
* elf32-cr16.c (elf32_arm_finish_dynamic_symbol): Likewise.
* elf32-cris.c (elf_cris_finish_dynamic_symbol): Likewise.
* elf32-hppa.c (elf32_hppa_finish_dynamic_symbol): Likewise.
* elf32-i386.c (elf_i386_convert_mov_to_lea): Likewise.
* elf32-lm32.c (lm32_elf_finish_dynamic_symbol): Likewise.
* elf32-m32r.c (m32r_elf_finish_dynamic_symbol): Likewise.
* elf32-s390.c (elf_s390_finish_dynamic_symbol): Likewise.
* elf32-sh.c (sh_elf_finish_dynamic_symbol): Likewise.
* elf32-tic6x.c (elf32_tic6x_finish_dynamic_symbol): Likewise.
* elf32-tilepro.c (tilepro_elf_finish_dynamic_symbol): Likewise.
* elf32-vax.c (elf_vax_finish_dynamic_symbol): Likewise.
* elf32-xtensa.c (elf_xtensa_finish_dynamic_symbol): Likewise.
* elf64-aarch64.c elf64_aarch64_finish_dynamic_symbol(): Likewise.
* elf64-alpha.c (elf64_alpha_finish_dynamic_symbol): Likewise.
* elf64-ia64-vms.c (elf64_ia64_finish_dynamic_symbol): Likewise.
* elf64-s390.c (elf_s390_finish_dynamic_symbol): Likewise.
* elf64-sh64.c (sh64_elf64_finish_dynamic_symbol): Likewise.
* elf64-x86-64.c (elf_x86_64_convert_mov_to_lea): Likewise.
* elfnn-ia64.c (elfNN_ia64_finish_dynamic_symbol): Likewise.
* elfxx-mips.c (_bfd_mips_elf_finish_dynamic_symbol): Likewise.
* elfxx-sparc.c (_bfd_sparc_elf_finish_dynamic_symbol): Likewise.
* elfxx-tilegx.c (tilegx_elf_finish_dynamic_symbol): Likewise.
* elf32-microblaze.c (microblaze_elf_finish_dynamic_symbol): Check
hdynamic, hgot, hplt instead of _DYNAMIC, _GLOBAL_OFFSET_TABLE_,
_PROCEDURE_LINKAGE_TABLE_.
* elf32-score.c (s3_bfd_score_elf_finish_dynamic_symbol): Likewise.
* elf32-score7.c (s7_bfd_score_elf_finish_dynamic_symbol): Likewise.
2012-09-02 12:17:27 +00:00
H.J. Lu
3f65f59941
Don't optimize relocation against _DYNAMIC
...
bfd/
* elf32-i386.c (elf_i386_convert_mov_to_lea): Don't optimize
_DYNAMIC.
* elf64-x86-64.c (elf_x86_64_convert_mov_to_lea): Likewise.
ld/testsuite/
* ld-i386/i386.exp: Run mov1a, mov1b.
* ld-x86-64/x86-64.exp: Run mov1a, mov1b, mov1c, mov1d.
* ld-i386/mov1.s: New file.
* ld-i386/mov1a.d: Likewise.
* ld-i386/mov1b.d: Likewise.
* ld-x86-64/mov1.s: Likewise.
* ld-x86-64/mov1a.d: Likewise.
* ld-x86-64/mov1b.d: Likewise.
* ld-x86-64/mov1c.d: Likewise.
* ld-x86-64/mov1d.d: Likewise.
2012-09-01 02:50:14 +00:00
H.J. Lu
daa6760707
Convert mov to lea in size_dynamic_sections
...
bfd/
* elf32-i386.c (elf_i386_convert_mov_to_lea): New.
(elf_i386_size_dynamic_sections): Use it on input sections.
(elf_i386_relocate_section): Don't convert
"mov foo@GOT(%reg), %reg" to "lea foo@GOTOFF(%reg), %reg"
for local symbols here.
* elf64-x86-64.c (elf_x86_64_convert_mov_to_lea): New.
(elf_x86_64_size_dynamic_sections): Use it on input sections.
(elf_x86_64_relocate_section): Don't convert
"mov foo@GOTPCREL(%rip), %reg" to "lea foo@GOTOFF(%reg), %reg"
for local symbols.
ld/testsuite/
* ld-i386/i386.exp: Run lea1d, lea1f, lea1f.
* ld-x86-64/x86-64.exp: Run lea1g, lea1h, lea1i, lea1j, lea1k,
lea1l.
* ld-ifunc/ifunc-13-i386.d: Remove R_386_RELATIVE entry.
* ld-i386/lea1d.d: New file.
* ld-i386/lea1e.d: Likewise.
* ld-i386/lea1f.d: Likewise.
* ld-x86-64/lea1g.d: Likewise.
* ld-x86-64/lea1h.d: Likewise.
* ld-x86-64/lea1i.d: Likewise.
* ld-x86-64/lea1j.d: Likewise.
* ld-x86-64/lea1k.d: Likewise.
* ld-x86-64/lea1l.d: Likewise.
2012-08-31 20:41:41 +00:00
H.J. Lu
80d873266d
Convert mov to lea for loading local function address
...
bfd/
* elf32-i386.c (elf_i386_relocate_section): Convert
"mov foo@GOT(%reg), %reg" to "lea foo@GOTOFF(%reg), %reg"
for local symbols.
* elf64-x86-64.c (elf_x86_64_relocate_section): Convert
"mov foo@GOTPCREL(%rip), %reg" to "lea foo(%rip), %reg"
for local symbols.
ld/testsuite/
* ld-i386/i386.exp: Run lea1a, lea1b, lea1c.
* ld-x86-64/x86-64.exp: Run lea1a, lea1b, lea1c, lea1d, lea1e,
lea1f.
* ld-i386/lea1.s: New file.
* ld-i386/lea1a.d: Likewise.
* ld-i386/lea1b.d: Likewise.
* ld-i386/lea1c.d: Likewise.
* ld-x86-64/lea1.s: Likewise.
* ld-x86-64/lea1a.d: Likewise.
* ld-x86-64/lea1b.d: Likewise.
* ld-x86-64/lea1c.d: Likewise.
* ld-x86-64/lea1d.d: Likewise.
* ld-x86-64/lea1e.d: Likewise.
* ld-x86-64/lea1f.d: Likewise.
2012-08-31 04:26:17 +00:00
Alan Modra
3d4d4302b9
* section.c (bfd_get_linker_section): New function.
...
* elf32-arm.c: When retrieving SEC_LINKER_CREATED sections, use
the above throughout rather than bfd_get_section_by_name. Use
bfd_make_section_anyway rather than bfd_make_section when creating
them.
* elf32-bfin.c: Likewise.
* elf32-cr16.c: Likewise.
* elf32-cris.c: Likewise.
* elf32-frv.c: Likewise.
* elf32-hppa.c: Likewise.
* elf32-i370.c: Likewise.
* elf32-i386.c: Likewise.
* elf32-lm32.c: Likewise.
* elf32-m32c.c: Likewise.
* elf32-m32r.c: Likewise.
* elf32-m68k.c: Likewise.
* elf32-microblaze.c: Likewise.
* elf32-ppc.c: Likewise.
* elf32-rl78.c: Likewise.
* elf32-s390.c: Likewise.
* elf32-score.c: Likewise.
* elf32-score7.c: Likewise.
* elf32-sh.c: Likewise.
* elf32-tic6x.c: Likewise.
* elf32-tilepro.c: Likewise.
* elf32-vax.c: Likewise.
* elf32-xstormy16.c: Likewise.
* elf32-xtensa.c: Likewise.
* elf64-alpha.c: Likewise.
* elf64-hppa.c: Likewise.
* elf64-ia64-vms.c: Likewise.
* elf64-ppc.c: Likewise.
* elf64-s390.c: Likewise.
* elf64-sh64.c: Likewise.
* elf64-sparc.c: Likewise.
* elf64-x86-64.c: Likewise.
* elfnn-ia64.c: Likewise.
* elfxx-mips.c: Likewise.
* elfxx-sparc.c: Likewise.
* elfxx-tilegx.c: Likewise.
* elflink.c: Likewise.
* elf-vxworks.c: Likewise.
* elf-m10300.c: Likewise. Also make use of htab plt, got and
gotplt shortcuts.
* bfd-in2.h: Regenerate.
* elf32-lm32.c (lm32_elf_check_relocs): Use the correct bfd when
calling create_rofixup_section.
* elflink.c (bfd_elf_final_link): Simplify test for .dynstr.
2012-06-29 14:46:03 +00:00
H.J. Lu
bbf96e4eef
Don't use dynamic_sec_flags on PLT .eh_frame section
...
* elf32-i386.c (elf_i386_create_dynamic_sections): Don't use
dynamic_sec_flags to create PLT .eh_frame section.
* elf64-x86-64.c (elf_x86_64_create_dynamic_sections): Likewise.
2012-05-25 16:20:15 +00:00
Alan Modra
9a2a56cc5a
PR ld/13909
...
* elf-eh-frame.c (_bfd_elf_eh_frame_present): New function.
(_bfd_elf_maybe_strip_eh_frame_hdr): Use it here.
* elf-bfd.h (_bfd_elf_eh_frame_present): Declare.
* elflink.c (bfd_elf_size_dynamic_sections): Let the backend
size dynamic sections before stripping eh_frame_hdr.
(bfd_elf_gc_sections): Handle multiple .eh_frame sections.
* elf32-ppc.c (ppc_elf_size_dynamic_sections): Drop glink_eh_frame
if no other .eh_frame sections exist.
* elf64-ppc.c (ppc64_elf_size_stubs): Likewise.
* elf32-i386.c (elf_i386_create_dynamic_sections): Don't size
or alloc plt_eh_frame here..
(elf_i386_size_dynamic_sections): ..do it here instead. Don't
specially keep sgotplt, iplt, tgotplt, sdynbss for symbols.
(elf_i386_finish_dynamic_sections): Check plt_eh_frame->contents
before writing plt offset.
* elf64-x86-64.c (elf_x86_64_create_dynamic_sections): Don't size
or alloc plt_eh_frame here..
(elf_x86_64_size_dynamic_sections): ..do it here instead.
(elf_x86_64_finish_dynamic_sections): Check plt_eh_frame->contents
before writing plt offset.
2012-05-25 01:12:20 +00:00
H.J. Lu
e4de50d447
Revert the change for PR ld/r13909
...
bfd/
PR ld/13909
* elf32-i386.c (elf_i386_create_dynamic_sections): Revert the
last change.
* elf64-x86-64.c (elf_x86_64_create_dynamic_sections): Likewise.
ld/testsuite/
2012-05-22 H.J. Lu <hongjiu.lu@intel.com>
PR ld/13909
* ld-i386/i386.exp: Revert the last change.
* ld-x86-64/x86-64.exp: Likewise.
* ld-i386/dummy.s: Removed.
* ld-i386/pr13909.d: Likewise.
* ld-x86-64/pr13909.d: Likewise.
2012-05-22 15:55:01 +00:00
H.J. Lu
5d4f7eb2f0
Create PLT eh_frame section if there is .eh_frame section
...
bfd/
PR ld/13909
* elf32-i386.c (elf_i386_create_dynamic_sections): Create PLT
eh_frame section if there is an input .eh_frame section.
* elf64-x86-64.c (elf_x86_64_create_dynamic_sections): Likewise.
ld/testsuite/
PR ld/13909
* ld-i386/i386.exp: Run pr13909.
* ld-x86-64/x86-64.exp: Likewise.
* ld-i386/dummy.s: New file.
* ld-i386/pr13909.d: Likewise.
* ld-x86-64/pr13909.d: Likewise.
2012-05-22 14:46:44 +00:00
H.J. Lu
2fe0fd0638
Always create PLT eh_frame section for i386/x86-64
...
bfd/
2012-05-22 H.J. Lu <hongjiu.lu@intel.com>
PR ld/14105
* elf32-i386.c (elf_i386_create_dynamic_sections): Always
create PLT eh_frame section with SEC_LINKER_CREATED.
* elf64-x86-64.c (elf_x86_64_create_dynamic_sections): Likewise.
ld/testsuite/
2012-05-20 H.J. Lu <hongjiu.lu@intel.com>
PR ld/14105
* ld-elf/eh4.d: Add PLT eh_frame.
* ld-i386/i386.exp: Run pr12570a and pr12570b.
* ld-x86-64/x86-64.exp: Likewise.
* ld-i386/pr12570a.d: New file.
* ld-i386/pr12570a.s: Likewise.
* ld-i386/pr12570b.s: Likewise.
* ld-i386/pr12570b.s: Likewise.
* ld-x86-64/pr12570a.d: Likewise.
* ld-x86-64/pr12570a.s: Likewise.
* ld-x86-64/pr12570b.d: Likewise.
* ld-x86-64/pr12570b.s: Likewise.
2012-05-22 14:05:21 +00:00
H.J. Lu
220cf8092f
Don't make _DYNAMIC/_GLOBAL_OFFSET_TABLE_ absolute
...
bfd/
* elf32-i386.c (elf_i386_finish_dynamic_symbol): Don't make
_DYNAMIC nor _GLOBAL_OFFSET_TABLE_ absolute.
* elf64-x86-64.c (elf_x86_64_finish_dynamic_symbol): Likewise.
ld/testsuite/
* ld-i386/tlsdesc-nacl.rd: Update for dynamic sym changes.
* ld-i386/tlsdesc.rd: Likewise.
* ld-i386/tlsgdesc-nacl.rd: Likewise.
* ld-i386/tlsgdesc.rd: Likewise.
* ld-i386/tlsnopic-nacl.rd: Likewise.
* ld-i386/tlsnopic.rd: Likewise.
* ld-i386/tlspic-nacl.rd: Likewise.
* ld-i386/tlspic.rd: Likewise.
* ld-x86-64/tlsdesc-nacl.rd: Likewise.
* ld-x86-64/tlsdesc.rd: Likewise.
* ld-x86-64/tlsgdesc-nacl.rd: Likewise.
* ld-x86-64/tlsgdesc.rd: Likewise.
* ld-x86-64/tlspic-nacl.rd: Likewise.
* ld-x86-64/tlspic.rd: Likewise.
2012-05-18 22:26:18 +00:00
Maciej W. Rozycki
545fd46b6b
* elf-bfd.h (RELOC_AGAINST_DISCARDED_SECTION): Handle compound
...
relocations.
* elfxx-mips.c (mips_reloc_against_discarded_section): New
function.
(_bfd_mips_elf_relocate_section): Call it, in place of
RELOC_AGAINST_DISCARDED_SECTION.
* elf-m10200.c (mn10200_elf_relocate_section): Update arguments
to RELOC_AGAINST_DISCARDED_SECTION.
* elf-m10300.c (mn10300_elf_relocate_section): Likewise.
* elf32-arm.c (elf32_arm_relocate_section): Likewise.
* elf32-avr.c (elf32_avr_relocate_section): Likewise.
* elf32-bfin.c (bfin_relocate_section): Likewise.
(bfinfdpic_relocate_section): Likewise.
* elf32-cr16.c (elf32_cr16_relocate_section): Likewise.
* elf32-cr16c.c (elf32_cr16c_relocate_section): Likewise.
* elf32-cris.c (cris_elf_relocate_section): Likewise.
* elf32-crx.c (elf32_crx_relocate_section): Likewise.
* elf32-d10v.c (elf32_d10v_relocate_section): Likewise.
* elf32-epiphany.c (epiphany_elf_relocate_section): Likewise.
* elf32-fr30.c (fr30_elf_relocate_section): Likewise.
* elf32-frv.c (elf32_frv_relocate_section): Likewise.
* elf32-h8300.c (elf32_h8_relocate_section): Likewise.
* elf32-hppa.c (elf32_hppa_relocate_section): Likewise.
* elf32-i370.c (i370_elf_relocate_section): Likewise.
* elf32-i386.c (elf_i386_relocate_section): Likewise.
* elf32-i860.c (elf32_i860_relocate_section): Likewise.
* elf32-ip2k.c (ip2k_elf_relocate_section): Likewise.
* elf32-iq2000.c (iq2000_elf_relocate_section): Likewise.
* elf32-lm32.c (lm32_elf_relocate_section): Likewise.
* elf32-m32c.c (m32c_elf_relocate_section): Likewise.
* elf32-m32r.c (m32r_elf_relocate_section): Likewise.
* elf32-m68hc1x.c (elf32_m68hc11_relocate_section): Likewise.
* elf32-m68k.c (elf_m68k_relocate_section): Likewise.
* elf32-mcore.c (mcore_elf_relocate_section): Likewise.
* elf32-mep.c (mep_elf_relocate_section): Likewise.
* elf32-moxie.c (moxie_elf_relocate_section): Likewise.
* elf32-msp430.c (elf32_msp430_relocate_section): Likewise.
* elf32-mt.c (mt_elf_relocate_section): Likewise.
* elf32-openrisc.c (openrisc_elf_relocate_section): Likewise.
* elf32-ppc.c (ppc_elf_relocate_section): Likewise.
* elf32-rl78.c (rl78_elf_relocate_section): Likewise.
* elf32-rx.c (rx_elf_relocate_section): Likewise.
* elf32-s390.c (elf_s390_relocate_section): Likewise.
* elf32-score.c (s3_bfd_score_elf_relocate_section): Likewise.
* elf32-score7.c (s7_bfd_score_elf_relocate_section): Likewise.
* elf32-sh.c (sh_elf_relocate_section): Likewise.
* elf32-spu.c (spu_elf_relocate_section): Likewise.
* elf32-tic6x.c (elf32_tic6x_relocate_section): Likewise.
* elf32-tilepro.c (tilepro_elf_relocate_section): Likewise.
* elf32-v850.c (v850_elf_relocate_section): Likewise.
* elf32-vax.c (elf_vax_relocate_section): Likewise.
* elf32-xc16x.c (elf32_xc16x_relocate_section): Likewise.
* elf32-xstormy16.c (xstormy16_elf_relocate_section): Likewise.
* elf32-xtensa.c (elf_xtensa_relocate_section): Likewise.
* elf64-alpha.c (elf64_alpha_relocate_section_r): Likewise.
(elf64_alpha_relocate_section): Likewise.
* elf64-hppa.c (elf64_hppa_relocate_section): Likewise.
* elf64-mmix.c (mmix_elf_relocate_section): Likewise.
* elf64-ppc.c (ppc64_elf_relocate_section): Likewise.
* elf64-s390.c (elf_s390_relocate_section): Likewise.
* elf64-sh64.c (sh_elf64_relocate_section): Likewise.
* elf64-x86-64.c (elf_x86_64_relocate_section): Likewise.
* elfnn-ia64.c (elfNN_ia64_relocate_section): Likewise.
* elfxx-sparc.c (_bfd_sparc_elf_relocate_section): Likewise.
* elfxx-tilegx.c (tilegx_elf_relocate_section): Likewise.
2012-05-07 03:27:52 +00:00
Alan Modra
dbaa201145
PR ld/13991
...
bfd/
* bfd/elf-bfd.h (_bfd_elf_link_just_syms): Define as
_bfd_generic_link_just_syms.
* bfd/elflink.c (_bfd_elf_link_just_syms): Delete.
* bfd/linker.c (_bfd_generic_link_just_syms): Set sec_info_type.
* bfd/bfd-in.h (discarded_section): Renamed from elf_discarded_section.
* bfd/section.c (SEC_INFO_TYPE_NONE, SEC_INFO_TYPE_STABS,
SEC_INFO_TYPE_MERGE, SEC_INFO_TYPE_EH_FRAME,
SEC_INFO_TYPE_JUST_SYMS): Renamed from corresponding ELF_INFO_TYPE.
* bfd/elf-eh-frame.c, * bfd/elf-m10200.c, * bfd/elf-m10300.c,
* bfd/elf.c, * bfd/elf32-arm.c, * bfd/elf32-avr.c, * bfd/elf32-bfin.c,
* bfd/elf32-cr16.c, * bfd/elf32-cr16c.c, * bfd/elf32-cris.c,
* bfd/elf32-crx.c, * bfd/elf32-d10v.c, * bfd/elf32-epiphany.c,
* bfd/elf32-fr30.c, * bfd/elf32-frv.c, * bfd/elf32-h8300.c,
* bfd/elf32-hppa.c, * bfd/elf32-i370.c, * bfd/elf32-i386.c,
* bfd/elf32-i860.c, * bfd/elf32-ip2k.c, * bfd/elf32-iq2000.c,
* bfd/elf32-lm32.c, * bfd/elf32-m32c.c, * bfd/elf32-m32r.c,
* bfd/elf32-m68hc1x.c, * bfd/elf32-m68k.c, * bfd/elf32-mcore.c,
* bfd/elf32-mep.c, * bfd/elf32-moxie.c, * bfd/elf32-msp430.c,
* bfd/elf32-mt.c, * bfd/elf32-openrisc.c, * bfd/elf32-ppc.c,
* bfd/elf32-rl78.c, * bfd/elf32-rx.c, * bfd/elf32-s390.c,
* bfd/elf32-score.c, * bfd/elf32-score7.c, * bfd/elf32-sh.c,
* bfd/elf32-spu.c, * bfd/elf32-tic6x.c, * bfd/elf32-tilepro.c,
* bfd/elf32-v850.c, * bfd/elf32-vax.c, * bfd/elf32-xc16x.c,
* bfd/elf32-xstormy16.c, * bfd/elf32-xtensa.c, * bfd/elf64-alpha.c,
* bfd/elf64-hppa.c, * bfd/elf64-ia64-vms.c, * bfd/elf64-mmix.c,
* bfd/elf64-ppc.c, * bfd/elf64-s390.c, * bfd/elf64-sh64.c,
* bfd/elf64-x86-64.c, * bfd/elflink.c, * bfd/elfnn-ia64.c,
* bfd/elfxx-mips.c, * bfd/elfxx-sparc.c, * bfd/elfxx-tilegx.c,
* bfd/reloc.c: Update all references.
* bfd/bfd-in2.h: Regenerate.
ld/
* ld/ldlang.c (size_input_section): Use sec_info_type rather than
usrdata->flags.just_syms.
* ld/ldwrite.c (build_link_order): Likewise.
* ld/emultempl/hppaelf.em (build_section_lists): Likewise.
* ld/emultempl/ppc64elf.em (build_toc_list): Likewise.
* ld/emultempl/armelf.em (build_section_lists): Likewise.
(after_allocation): Update for renamed sec_info_type value.
* ld/emultempl/tic6xdsbt.em: Likewise.
2012-04-24 05:12:40 +00:00
Roland McGrath
5a68afcf73
bfd/
...
2012-04-03 Roland McGrath <mcgrathr@google.com>
* elf-nacl.c: New file.
* elf-nacl.h: New file.
* elf32-i386.c (elf_backend_modify_segment_map): Define for
bfd_elf32_i386_nacl_vec.
(elf_backend_modify_program_headers): Likewise.
* elf64-x86-64.c (elf_backend_modify_segment_map): Define for
bfd_elf64_x86_64_nacl_vec and bfd_elf32_x86_64_nacl_vec.
(elf_backend_modify_program_headers): Likewise.
* Makefile.am (BFD32_BACKENDS, BFD64_BACKENDS): Add elf-nacl.lo here.
(BFD32_BACKENDS_CFILES, BFD64_BACKENDS_CFILES): Add elf-nacl.c here.
* Makefile.in: Regenerated.
* configure.in (bfd_elf64_x86_64_nacl_vec): Add elf-nacl.o to tb here.
(bfd_elf32_x86_64_nacl_vec): Likewise.
(bfd_elf64_x86_64_vec, bfd_elf32_x86_64_vec): Likewise.
(bfd_elf64_x86_64_freebsd_vec, bfd_elf64_x86_64_sol2_vec): Likewise.
(bfd_elf64_l1om_vec, bfd_elf64_l1om_freebsd_vec): Likewise.
(bfd_elf64_k1om_vec, bfd_elf64_k1om_freebsd_vec): Likewise.
(bfd_elf32_i386_nacl_vec): Likewise.
(bfd_elf32_i386_sol2_vec, bfd_elf32_i386_freebsd_vec): Likewise.
(bfd_elf32_i386_vxworks_vec, bfd_elf32_i386_vec): Likewise.
* configure: Regenerated.
binutils/testsuite/
2012-04-03 Roland McGrath <mcgrathr@google.com>
* lib/binutils-common.exp (is_elf_format): Consider *-*-nacl* to
be ELF too.
* binutils-all/elfedit-4.d: Add "#as: --64" option.
* binutils-all/i386/i386.exp: Accept nacl targets too.
* binutils-all/x86-64/x86-64.exp: Likewise.
gas/testsuite/
2012-04-03 Roland McGrath <mcgrathr@google.com>
* gas/i386/k1om.d: Add not-target match for *-*-nacl*.
* gas/i386/l1om.d: Likewise.
ld/
2012-04-03 Roland McGrath <mcgrathr@google.com>
* configure.tgt (i[3-7]86-*-nacl*, x86_64-*-nacl*): Handle them.
* emulparams/elf_nacl.sh: New file.
* emulparams/elf_i386_nacl.sh: New file.
* emulparams/elf32_x86_64_nacl.sh: New file.
* emulparams/elf_x86_64_nacl.sh: New file.
* Makefile.am (ALL_EMULATION_SOURCES): Add eelf_i386_nacl.c here.
(ALL_64_EMULATION_SOURCES): Add eelf32_x86_64_nacl.c and
eelf_x86_64_nacl.c here.
(eelf_i386_nacl.c, eelf32_x86_64_nacl.c, eelf_x86_64_nacl.c):
New targets.
* Makefile.in: Regenerated.
* scripttempl/elf.sc: Handle SEPARATE_CODE cases.
ld/testsuite/
2012-04-03 Roland McGrath <mcgrathr@google.com>
* ld-x86-64/ilp32-4-nacl.d: New file.
* ld-x86-64/x86-64.exp: Run it.
* ld-discard/discard.exp: Accept nacl targets too.
* ld-elf/binutils.exp: Likewise.
* ld-elf/comm-data.exp: Likewise.
* ld-elf/elf.exp: Likewise.
* ld-elf/tls_common.exp: Likewise.
* ld-elfvers/vers.exp: Likewise.
* ld-elfvsb/elfvsb.exp: Likewise.
* ld-elfweak/elfweak.exp: Likewise.
* ld-gc/gc.exp: Likewise.
* ld-ifunc/binutils.exp: Likewise.
* ld-ifunc/ifunc.exp: Likewise.
* ld-linkonce/linkonce.exp:Likewise.
* ld-pie/pie.exp: Likewise.
* ld-shared/shared.exp: Likewise.
* ld-undefined/weak-undef.exp: Likewise.
* ld-unique/unique.exp: Likewise.
* ld-x86-64/dwarfreloc.exp: Likewise.
* ld-x86-64/line.exp: Likewise.
* lib/ld-lib.exp (slurp_options): Support global array
options_regsub to apply substitutions to the contents
of options lines read from the file.
* ld-i386/emit-relocs.d: Renamed to ...
* ld-i386/emit-relocs.rd: ... this.
* ld-i386/i386.exp: Accept nacl targets too.
For them, use options_regsub to replace elf_i386 with
elf_i386_nacl in run_dump_test cases; apply the same
substitution in $i386tests; replace foo.rd expectations
files with foo-nacl.rd in $i386tests.
(i386tests): Change emit-relocs.d to emit-relocs.rd here.
* ld-i386/emit-relocs-nacl.rd: New file.
* ld-i386/plt-nacl.pd: New file.
* ld-i386/plt-pic-nacl.pd: New file.
* ld-i386/tlsbin-nacl.rd: New file.
* ld-i386/tlsbindesc-nacl.rd: New file.
* ld-i386/tlsdesc-nacl.rd: New file.
* ld-i386/tlsgdesc-nacl.rd: New file.
* ld-i386/tlsnopic-nacl.rd: New file.
* ld-i386/tlspic-nacl.rd: New file.
* ld-x86-64/x86-64.exp: Accept nacl targets too.
For them, use options_regsub to replace elf_x86_64 with
elf_x86_64_nacl in run_dump_test cases; apply the same
substitution in $x86_64tests; replace foo.rd expectations
files with foo-nacl.rd in $x86_64tests.
Add explicit -melf_x86_64 to ld options in tests that need it,
in case the default emulation is x32 (as it is for x86_64-nacl).
* ld/testsuite/ld-x86-64/plt-nacl.pd: New file.
* ld/testsuite/ld-x86-64/split-by-file-nacl.rd: New file.
* ld/testsuite/ld-x86-64/tlsbin-nacl.rd: New file.
* ld/testsuite/ld-x86-64/tlsbindesc-nacl.rd: New file.
* ld/testsuite/ld-x86-64/tlsdesc-nacl.pd: New file.
* ld/testsuite/ld-x86-64/tlsdesc-nacl.rd: New file.
* ld/testsuite/ld-x86-64/tlsgdesc-nacl.rd: New file.
* ld/testsuite/ld-x86-64/tlspic-nacl.rd: New file.
* ld-i386/hidden2.d: Loosen regexps to match any file format variant,
and not to depend on exact addresses, displacements, etc. where
they are irrelevant.
* ld-i386/pcrel16.d: Likewise.
* ld-i386/pcrel16abs.d: Likewise.
* ld-i386/pr12718.d: Likewise.
* ld-i386/pr12921.d: Likewise.
* ld-i386/reloc.d: Likewise.
* ld-i386/tlsbin.dd: Likewise.
* ld-i386/tlsbin.sd: Likewise.
* ld-i386/tlsbin.td: Likewise.
* ld-i386/tlsbindesc.dd: Likewise.
* ld-i386/tlsbindesc.sd: Likewise.
* ld-i386/tlsbindesc.td: Likewise.
* ld-i386/tlsdesc.dd: Likewise.
* ld-i386/tlsdesc.sd: Likewise.
* ld-i386/tlsdesc.td: Likewise.
* ld-i386/tlsg.sd: Likewise.
* ld-i386/tlsgdesc.dd: Likewise.
* ld-i386/tlsindntpoff.dd: Likewise.
* ld-i386/tlsnopic.dd: Likewise.
* ld-i386/tlsnopic.sd: Likewise.
* ld-i386/tlspic.dd: Likewise.
* ld-i386/tlspic.sd: Likewise.
* ld-i386/tlspic.td: Likewise.
* ld-i386/tlspie2.d: Likewise.
* ld-x86-64/hidden2.d: Likewise.
* ld-x86-64/pcrel16.d: Likewise.
* ld-x86-64/pr12718.d: Likewise.
* ld-x86-64/pr12921.d: Likewise.
* ld-x86-64/protected3.d: Likewise.
* ld-x86-64/tlsbin.dd: Likewise.
* ld-x86-64/tlsbin.sd: Likewise.
* ld-x86-64/tlsbin.td: Likewise.
* ld-x86-64/tlsbindesc.dd: Likewise.
* ld-x86-64/tlsbindesc.sd: Likewise.
* ld-x86-64/tlsbindesc.td: Likewise.
* ld-x86-64/tlsdesc.dd: Likewise.
* ld-x86-64/tlsdesc.sd: Likewise.
* ld-x86-64/tlsdesc.td: Likewise.
* ld-x86-64/tlsg.sd: Likewise.
* ld-x86-64/tlsgd5.dd: Likewise.
* ld-x86-64/tlsgd6.dd: Likewise.
* ld-x86-64/tlsgdesc.dd: Likewise.
* ld-x86-64/tlspic.dd: Likewise.
* ld-x86-64/tlspic.sd: Likewise.
* ld-x86-64/tlspic.td: Likewise.
* ld-x86-64/ilp32-8.d: Match any file format variant.
Use a -Ttext and adjust expected results, to handle variant layouts.
* ld-x86-64/ilp32-9.d: Likewise.
* ld-i386/alloc.t: Remove superfluous OUTPUT_FORMAT statement.
* ld-i386/pr12627.t: Likewise.
* ld-x86-64/abs-l1om.d: Add target: constraint.
* ld-x86-64/protected2-l1om.d: Likewise.
* ld-x86-64/protected3-l1om.d: Likewise.
* ld-x86-64/ilp32-4.d: Likewise.
* ld-x86-64/plt.s: New file.
* ld-x86-64/pltlib.s: New file.
* ld-x86-64/plt.pd: New file.
* ld-x86-64/x86-64.exp (x86_64tests): Add them.
* ld-i386/plt.s: New file.
* ld-i386/pltlib.s: New file.
* ld-i386/plt.pd: New file.
* ld-i386/plt-pic.s: New file.
* ld-i386/plt-pic.pd: New file.
* ld-i386/i386.exp (i386tests): Add them.
2012-04-03 16:01:38 +00:00
H.J. Lu
bdb892b995
Handle relocation against protected function for -Bsymbolic
...
bfd/
2012-03-20 H.J. Lu <hongjiu.lu@intel.com>
PR ld/13880
* elf32-i386.c (elf_i386_relocate_section): Don't issue an error
for R_386_GOTOFF relocation against protected function if
SYMBOLIC_BIND is true.
* elf64-x86-64.c (elf_x86_64_relocate_section): Don't issue an
error for R_X86_64_GOTOFF64 relocation against protected function
when building executable or SYMBOLIC_BIND is true.
ld/testsuite/
2012-03-20 H.J. Lu <hongjiu.lu@intel.com>
PR ld/13880
* ld-i386/i386.exp: Run protected4 and protected5.
* ld-x86-64/x86-64.exp: Likewise.
* ld-i386/protected4.d: New.
* ld-i386/protected4.s: Likewise.
* ld-i386/protected5.d: Likewise.
* ld-i386/protected5.s: Likewise.
* ld-x86-64/protected4.d: Likewise.
* ld-x86-64/protected4.s: Likewise.
* ld-x86-64/protected5.d: Likewise.
* ld-x86-64/protected5.s: Likewise.
2012-03-20 18:16:38 +00:00
Roland McGrath
caa0075c38
* elf32-i386.c (elf_i386_nacl_pic_plt0_entry): Initialize up
...
to the full size, padding out with nop instructions.
2012-03-14 19:32:11 +00:00
Alan Modra
1d7e9d183f
* elf-m10300.c (_bfd_mn10300_elf_adjust_dynamic_symbol): Don't error
...
on zero size dynbss symbol.
* elf32-arm.c (elf32_arm_adjust_dynamic_symbol): Likewise.
* elf32-cr16.c (_bfd_cr16_elf_adjust_dynamic_symbol): Likewise.
* elf32-cris.c (elf_cris_adjust_dynamic_symbol): Likewise.
* elf32-hppa.c (elf32_hppa_adjust_dynamic_symbol): Likewise.
* elf32-i370.c (i370_elf_adjust_dynamic_symbol): Likewise.
* elf32-i386.c (elf_i386_adjust_dynamic_symbol): Likewise.
* elf32-lm32.c (lm32_elf_adjust_dynamic_symbol): Likewise.
* elf32-m32r.c (m32r_elf_adjust_dynamic_symbol): Likewise.
* elf32-m68k.c (elf_m68k_adjust_dynamic_symbol): Likewise.
* elf32-ppc.c (ppc_elf_adjust_dynamic_symbol): Likewise.
* elf32-s390.c (elf_s390_adjust_dynamic_symbol): Likewise.
* elf32-sh.c (sh_elf_adjust_dynamic_symbol): Likewise.
* elf32-tic6x.c (elf32_tic6x_adjust_dynamic_symbol): Likewise.
* elf32-tilepro.c (tilepro_elf_adjust_dynamic_symbol): Likewise.
* elf32-vax.c (elf_vax_adjust_dynamic_symbol): Likewise.
* elf64-ppc.c (ppc64_elf_adjust_dynamic_symbol): Likewise.
* elf64-s390.c (elf_s390_adjust_dynamic_symbol): Likewise.
* elf64-sh64.c (sh64_elf64_adjust_dynamic_symbol): Likewise.
* elf64-x86-64.c (elf_x86_64_adjust_dynamic_symbol): Likewise.
* elfxx-sparc.c (_bfd_sparc_elf_adjust_dynamic_symbol): Likewise.
* elfxx-tilegx.c (tilegx_elf_adjust_dynamic_symbol): Likewise.
2012-03-13 06:04:37 +00:00
H.J. Lu
56b8aada47
Restore R_386_IRELATIVE and R_X86_64_IRELATIVE
...
bfd/
2012-03-09 H.J. Lu <hongjiu.lu@intel.com>
PR ld/13817
* bfd/elf32-i386.c (elf_i386_relocate_section): Restore
R_386_IRELATIVE.
* * elf64-x86-64.c (elf_x86_64_relocate_section): Restore
R_X86_64_IRELATIVE.
ld/testsuite/
2012-03-09 H.J. Lu <hongjiu.lu@intel.com>
PR ld/13817
* ld-i386/pr13302.d: Updated.
* ld-x86-64/pr13082-5b.d: Likewise.
* ld-x86-64/pr13082-6a.d: Likewise.
* ld-x86-64/pr13082-6b.d: Likewise.
2012-03-09 16:28:38 +00:00
H.J. Lu
9892017203
Replace IRELATIVE relocations with RELATIVE in .rel.dyn.
...
bfd/
2011-10-21 H.J. Lu <hongjiu.lu@intel.com>
PR ld/13302
* elf32-i386.c (elf_i386_relocate_section): Replace
R_386_IRELATIVE with R_386_RELATIVE.
* elf64-x86-64.c (elf_x86_64_relocate_section): Replace
R_X86_64_IRELATIVE with R_X86_64_RELATIVE.
ld/testsuite/
2011-10-21 H.J. Lu <hongjiu.lu@intel.com>
PR ld/13302
* ld-i386/i386.exp: Run pr13302.
* ld-i386/pr13302.d: New.
* ld-i386/pr13302.s: Likewise.
* ld-x86-64/pr13082-5b.d: Updated.
* ld-x86-64/pr13082-6a.d: Likewise.
* ld-x86-64/pr13082-6b.d: Likewise.
2011-10-21 19:37:15 +00:00
H.J. Lu
c293fa4964
Fix a typo in comments.
...
2011-10-21 H.J. Lu <hongjiu.lu@intel.com>.
* elf32-i386.c (elf_i386_relocate_section): Fix a typo in
comments.
* elf64-x86-64.c (elf_x86_64_relocate_section): Likewise.
2011-10-21 16:16:51 +00:00
H.J. Lu
e1f987424b
Put IRELATIVE relocations after JUMP_SLOT.
...
bfd/
2011-10-21 H.J. Lu <hongjiu.lu@intel.com>
PR ld/13302
* elf32-i386.c (elf_i386_link_hash_table): Add next_jump_slot_index
and next_irelative_index.
(elf_i386_link_hash_table_create): Initialize next_jump_slot_index
and next_irelative_index.
(elf_i386_allocate_dynrelocs): Increment reloc_count instead of
next_tls_desc_index.
(elf_i386_size_dynamic_sections): Set next_tls_desc_index and
next_irelative_index from reloc_count.
(elf_i386_finish_dynamic_symbol): Put R_386_IRELATIVE after
R_386_JUMP_SLOT.
* elf64-x86-64.c (elf_x86_64_link_hash_table): Add
next_jump_slot_index and next_irelative_index.
(elf_x86_64_link_hash_table_create): Initialize
next_jump_slot_index and next_irelative_index.
(elf_x86_64_size_dynamic_sections): Set next_irelative_index
from reloc_count.
(elf_x86_64_finish_dynamic_symbol): Put R_X86_64_IRELATIVE after
R_X86_64_JUMP_SLOT.
ld/testsuite/
2011-10-21 H.J. Lu <hongjiu.lu@intel.com>
PR ld/13302
* ld-ifunc/ifunc-16-i386.d: New.
* ld-ifunc/ifunc-16-x86-64.d: Likewise.
* ld-ifunc/ifunc-16-x86.s: Likewise.
2011-10-21 15:13:37 +00:00
Alan Modra
fa289a5fde
* elf32-i386.c (i386_opcode16): Delete.
...
(elf_i386_check_tls_transition): Use memcmp to compare contents.
* elf64-x86-64.c (x86_64_opcode16, x86_64_opcode32): Delete.
(elf_x86_64_check_tls_transition): Use memcmp to compare contents.
2011-10-19 23:02:50 +00:00
Alan Modra
1d5316ab67
PR ld/13177
...
bfd/
* elflink.c (_bfd_elf_gc_mark_rsec): Set symbol "mark".
(elf_gc_sweep_symbol): Don't test plt/got refcounts, instead test
"mark". Hide undefweak too. Clear def_regular and ref_regular.
* elf-m10300.c (mn10300_elf_relocate_section): Ignore unresolved
reloc errors from garbage-collected code.
* elf32-arm.c (elf32_arm_relocate_section): Likewise.
* elf32-bfin.c (bfin_relocate_section): Likewise.
(bfinfdpic_relocate_section): Likewise.
* elf32-cris.c (cris_elf_relocate_section): Likewise.
* elf32-frv.c (elf32_frv_relocate_section): Likewise.
* elf32-i386.c (elf_i386_relocate_section): Likewise.
* elf32-m32r.c (m32r_elf_relocate_section): Likewise.
* elf32-m68k.c (elf_m68k_relocate_section): Likewise.
* elf32-ppc.c (ppc_elf_relocate_section): Likewise.
* elf32-s390.c (elf_s390_relocate_section): Likewise.
* elf32-sh.c (sh_elf_relocate_section): Likewise.
* elf32-spu.c (spu_elf_relocate_section): Likewise.
* elf32-tilepro.c (tilepro_elf_relocate_section): Likewise.
* elf32-xtensa.c (elf_xtensa_relocate_section): Likewise.
* elf64-alpha.c (elf64_alpha_relocate_section): Likewise.
* elf64-ppc.c (ppc64_elf_relocate_section): Likewise.
* elf64-s390.c (elf_s390_relocate_section): Likewise.
* elf64-sh64.c (sh_elf64_relocate_section): Likewise.
* elf64-x86-64.c (elf_x86_64_relocate_section): Likewise.
* elfxx-sparc.c (_bfd_sparc_elf_relocate_section): Likewise.
* elfxx-tilegx.c (tilegx_elf_relocate_section): Likewise.
ld/testsuite/
* ld-elf/elf.exp: Move test for shared lib support..
* lib/ld-lib.exp (check_shared_lib_support): ..to here. Add m68hc1*,
and s/ms1/mt/.
(check_gc_sections_available): Match hppa*64 not hppa64. Comment.
* ld-gc/libpersonality.s: New.
* ld-gc/personality.s, * ld-gc/personality.d: New.
* ld-gc/gc.exp: Run personality test.
2011-10-19 07:17:21 +00:00
Roland McGrath
a27e437177
BFD vector for elf32-i386-nacl:
...
bfd/
* elf32-i386.c (NACL_PLT_ENTRY_SIZE, NACLMASK): New macros.
(elf_i386_nacl_plt0_entry): New variable.
(elf_i386_plt_entry): New variable.
(elf_i386_nacl_pic_plt0_entry): New variable.
(elf_i386_nacl_pic_plt_entry): New variable.
(elf_i386_nacl_plt, elf_i386_nacl_arch_bed): New variables.
(elf_backend_arch_data): New macro setting for elf_i386_nacl_vec stanza.
(elf_backend_plt_alignment): Likewise.
* config.bfd: Handle i[3-7]86-*-nacl*.
* elf32-i386.c (bfd_elf32_i386_nacl_vec): New backend vector stanza.
* targets.c: Support bfd_elf32_i386_nacl_vec.
* configure.in: Likewise.
* configure: Regenerated.
2011-07-28 22:35:15 +00:00
Roland McGrath
25e762b98d
Parameterize elf32-i386 PLT generation:
...
* elf32-i386.c (struct elf_i386_plt_layout): New type.
(GET_PLT_ENTRY_SIZE): New macro.
(elf_i386_plt): New variable.
(struct elf_i386_backend_data): New member `plt'.
(elf_i386_arch_bed): Add initializer for it.
(elf_i386_vxworks_arch_bed): Likewise.
(elf_i386_allocate_dynrelocs): Use GET_PLT_ENTRY_SIZE.
(elf_i386_plt_sym_val): Likewise.
(elf_i386_relocate_section): Likewise.
(elf_i386_finish_dynamic_symbol): Likewise.
Also use other elf_i386_plt_layout members for PLT details.
(elf_i386_finish_dynamic_sections): Likewise.
2011-07-28 18:47:56 +00:00
Roland McGrath
23209a7853
Clean up elf32-i386-vxworks:
...
* elf32-i386.c (struct elf_i386_backend_data): New type.
(get_elf_i386_backend_data): New macro.
(elf_i386_arch_bed): New variable.
(elf_backend_arch_data): New macro.
(struct elf_i386_link_hash_table): Remove plt0_pad_byte and is_vxworks.
(elf_i386_link_hash_table_create): Don't initialize them.
(elf_i386_create_dynamic_sections): Find is_vxworks flags in
elf_i386_backend_data, not elf_i386_link_hash_table.
(elf_i386_adjust_dynamic_symbol): Likewise.
(elf_i386_allocate_dynrelocs): Likewise.
(elf_i386_readonly_dynrelocs): Likewise.
(elf_i386_size_dynamic_sections): Likewise.
(elf_i386_relocate_section): Likewise.
(elf_i386_finish_dynamic_symbol): Likewise.
(elf_i386_finish_dynamic_sections): Likewise. Same for plt0_pad_byte.
(elf_i386_vxworks_link_hash_table_create): Function removed.
(elf_i386_vxworks_arch_bed): New variable.
(elf_backend_arch_data): New macro in elf32-i386-vxworks stanza.
* elf-bfd.h (elf_backend_data): New member arch_backend_data.
* elfxx-target.h (elf_backend_arch_data): New macro.
(elfNN_bed): Use it as initializer for the new member.
2011-07-28 17:39:20 +00:00
Ian Lance Taylor
28ede8be33
* elf32-i386.c (elf_i386_eh_frame_plt): Correct expression: change
...
DW_OP_lit3 to DW_OP_lit2.
2011-07-01 22:14:56 +00:00
Jan Kratochvil
332ce62bf3
bfd/
...
* elf64-x86-64.c (elf_x86_64_link_hash_table_create): Initialize
PLT_EH_FRAME.
* elf32-i386.c (elf_i386_link_hash_table): Likewise.
2011-06-25 00:43:15 +00:00