aboutsummaryrefslogtreecommitdiff
path: root/bfd
AgeCommit message (Collapse)AuthorFilesLines
2016-05-10Allow stubs without associated input section in ARM backendThomas Preud'homme4-4/+25
2016-05-10 Thomas Preud'homme <thomas.preudhomme@arm.com> bfd/ * bfd-in.h (elf32_arm_size_stubs): Add an output section parameter. * bfd-in2.h: Regenerated. * elf32-arm.c (struct elf32_arm_link_hash_table): Add an output section parameter to add_stub_section callback. (elf32_arm_create_or_find_stub_sec): Get output section from link_sec and pass it down to add_stub_section. (elf32_arm_add_stub): Set section to stub_sec if NULL before using it for error message. (elf32_arm_size_stubs): Add output section parameter to add_stub_section function pointer parameter. ld/ * emultempl/armelf.em (elf32_arm_add_stub_section): Add output_section parameter and rename input_section parameter to after_input_section. Append input stub section to the output section if after_input_section is NULL.
2016-05-10Factor our stub creation in ARM backendThomas Preud'homme2-67/+114
2016-05-10 Thomas Preud'homme <thomas.preudhomme@arm.com> bfd/ * elf32-arm.c (elf32_arm_create_stub): New function. (elf32_arm_size_stubs): Use elf32_arm_create_stub for stub creation.
2016-05-10Refactor Cortex-A8 erratum workaround in preparationThomas Preud'homme2-73/+76
2016-05-10 Thomas Preud'homme <thomas.preudhomme@arm.com> bfd/ * elf32-arm.c (enum elf32_arm_stub_type): Delete arm_stub_a8_veneer_lwm enumerator. (arm_stub_a8_veneer_lwm): New unsigned constant to replace aforementioned enumerator. (struct elf32_arm_stub_hash_entry): Delete target_addend field and add source_value. (struct a8_erratum_fix): Delete addend field and add target_offset. (stub_hash_newfunc): Initialize source_value field amd remove initialization for target_addend. (arm_build_one_stub): Stop special casing Thumb relocations: promote the else to being always executed, moving the arm_stub_a8_veneer_b_cond specific code in it. Remove stub_entry->target_addend from points_to computation. (cortex_a8_erratum_scan): Store in a8_erratum_fix structure the offset to target symbol from start of section rather than the offset from the stub address. (elf32_arm_size_stubs): Set stub_entry's source_value and target_value fields from struct a8_erratum_fix's offset and target_offset respectively. (make_branch_to_a8_stub): Rename target variable to loc. Compute veneered_insn_loc and loc using stub_entry's source_value.
2016-05-10Add support for ARMv8-M Mainline with DSP extensionThomas Preud'homme2-0/+30
2016-05-10 Thomas Preud'homme <thomas.preudhomme@arm.com> bfd/ (elf32_arm_merge_eabi_attributes): Add merging logic for Tag_DSP_extension. binutils/ * readelf.c (display_arm_attribute): Add output for Tag_DSP_extension. (arm_attr_public_tags): Define DSP_extension attribute. gas/ * NEWS: Document ARMv8-M and ARMv8-M Security and DSP Extensions. * config/tc-arm.c (arm_ext_dsp): New feature for Thumb DSP instructions. (arm_extensions): Add dsp extension for ARMv8-M Mainline. (aeabi_set_public_attributes): Memorize the feature bits of the architecture selected for Tag_CPU_arch. Use it to set Tag_DSP_extension to 1 for ARMv8-M Mainline with DSP extension. (arm_convert_symbolic_attribute): Define Tag_DSP_extension. * testsuite/gas/arm/arch7em-bad.d: Rename to ... * testsuite/gas/arm/arch7em-bad-1.d: This. * testsuite/gas/arm/arch7em-bad-2.d: New file. * testsuite/gas/arm/arch7em-bad-3.d: Likewise. * testsuite/gas/arm/archv8m-main-dsp-1.d: Likewise. * testsuite/gas/arm/archv8m-main-dsp-2.d: Likewise. * testsuite/gas/arm/archv8m-main-dsp-3.d: Likewise. * testsuite/gas/arm/archv8m-main-dsp-4.d: Likewise. * testsuite/gas/arm/archv8m-main-dsp-5.d: Likewise. * testsuite/gas/arm/attr-march-armv8m.main.dsp.d: Likewise. include/ * elf/arm.h (Tag_DSP_extension): Define. ld/ * testsuite/ld-arm/arm-elf.exp (EABI attribute merging 10 (DSP)): New test. * testsuite/ld-arm/attr-merge-10b-dsp.s: New file. * testsuite/ld-arm/attr-merge-10-dsp.attr: Likewise.
2016-05-10PR 20059 _bfd_elf_copy_link_hash_symbol_type segfaultPip Cet2-5/+15
PR ld/20059 * elfxx-target.h (bfd_elfNN_bfd_copy_link_hash_symbol_type): Define as _bfd_generic_copy_link_hash_symbol_type when using generic hash table.
2016-05-10Automatic date update in version.inGDB Administrator1-1/+1
2016-05-09Fix seg fault objdumping a corrupt binary with an invalid sh_link field.Nick Clifton2-5/+17
PR binutils/20063 * elf.c (bfd_elf_get_elf_syms): Check for out of range sh_link field before accessing sections array. * readelf.c (get_32bit_section_headers): Warn if an out of range sh_link or sh_info field is encountered. (get_64bit_section_headers): Likewise.
2016-05-09[ARM/STM32L4XX] PR 20030: --fix-stm32l4xx-629360 fails to create vldm/vpop ↵Christophe Monat2-45/+68
veneers for double-precision registers bfd/ PR ld/20030 * elf32-arm.c (is_thumb2_vldm): Account for T1 (DP) encoding. (stm32l4xx_need_create_replacing_stub): Rename ambiguous nb_regs to nb_words. (create_instruction_vldmia): Add is_dp to disambiguate SP/DP encoding. (create_instruction_vldmdb): Likewise. (stm32l4xx_create_replacing_stub_vldm): is_dp detects DP encoding, uses it to re-encode. ld/ PR ld/20030 * testsuite/ld-arm/arm-elf.exp: Run new stm32l4xx-fix-vldm-dp tests. Fix misnamed stm32l4xx-fix-all. * testsuite/ld-arm/stm32l4xx-fix-vldm-dp.s: New tests for multiple loads with DP registers. * testsuite/ld-arm/stm32l4xx-fix-vldm-dp.d: New reference file. * testsuite/ld-arm/stm32l4xx-fix-vldm.s: Add missing comment. * testsuite/ld-arm/stm32l4xx-fix-all.s: Add tests for multiple loads with DP registers. * testsuite/ld-arm/stm32l4xx-fix-all.d: Update reference.
2016-05-09Revert accidental commit.Nick Clifton2-2/+6
PR 19938 * elf32-arm.c (elf32_arm_adjust_dynamic_symbol): Revert accidental commit.
2016-05-09Regenerate configureAlan Modra1-7/+10
2016-05-09Redundant hash table checkAlan Modra2-2/+4
* elf64-ppc.c (ppc64_elf_init_stub_bfd): Remove redundant NULL check.
2016-05-09Automatic date update in version.inGDB Administrator1-1/+1
2016-05-08Automatic date update in version.inGDB Administrator1-1/+1
2016-05-07Automatic date update in version.inGDB Administrator1-1/+1
2016-05-06Strip global symbol defined in discarded sectionH.J. Lu3-1/+25
When a global symbol is defined in COMDAT group, we shouldn't leave an undefined symbol in symbol table when the symbol section is discarded unless there is a reference to the symbol outside of COMDAT group. bfd/ PR ld/17550 * elf-bfd.h (elf_link_hash_entry): Update comments for indx, documenting that indx == -3 if symbol is defined in a discarded section. * elflink.c (elf_link_add_object_symbols): Set indx to -3 if symbol is defined in a discarded section. (elf_link_output_extsym): Strip a global symbol defined in a discarded section. ld/ PR ld/17550 * testsuite/ld-elf/pr17550-1.s: New file. * testsuite/ld-elf/pr17550-2.s: Likewise. * testsuite/ld-elf/pr17550-3.s: Likewise. * testsuite/ld-elf/pr17550-4.s: Likewise. * testsuite/ld-elf/pr17550a.d: Likewise. * testsuite/ld-elf/pr17550b.d: Likewise. * testsuite/ld-elf/pr17550c.d: Likewise. * testsuite/ld-elf/pr17550d.d: Likewise.
2016-05-06Define elf_backend_add_symbol_hook for Intel MCUH.J. Lu2-0/+8
elf_backend_add_symbol_hook is undefined for FreeBSD. Define it for Intel MCU to support STB_GNU_UNIQUE for Intel MCU and NaCl. * elf32-i386.c (elf_backend_add_symbol_hook): Defined for Intel MCU.
2016-05-06Automatic date update in version.inGDB Administrator1-1/+1
2016-05-05Extract convert_load_reloc from x86 convert_loadH.J. Lu3-670/+714
* elf32-i386.c (elf_i386_convert_load): Extract the GOT load conversion to ... (elf_i386_convert_load_reloc): This. New function. * elf64-x86-64.c (elf_x86_64_convert_load): Extract the GOT load conversion to ... (elf_x86_64_convert_load_reloc): This. New function.
2016-05-05Cache the section contents in x86 check_relocsH.J. Lu3-53/+93
Cache the section contents in x86 check_relocs for sections without TLS relocations. * elf32-i386.c (elf_i386_check_tls_transition): Remove abfd. Don't check if contents == NULL. (elf_i386_tls_transition): Add from_relocate_section. Check from_relocate_section instead of contents != NULL. Update elf_i386_check_tls_transition call. (elf_i386_check_relocs): Cache the section contents if keep_memory is FALSE. Pass FALSE as from_relocate_section to elf_i386_tls_transition. (elf_i386_relocate_section): Pass TRUE as from_relocate_section to elf_i386_tls_transition. (elf_backend_caches_rawsize): New. * elf64-x86-64.c (elf_x86_64_check_tls_transition): Don't check if contents == NULL. (elf_x86_64_tls_transition): Add from_relocate_section. Check from_relocate_section instead of contents != NULL. (elf_x86_64_check_relocs): Cache the section contents if keep_memory is FALSE. Pass FALSE as from_relocate_section to elf_x86_64_tls_transition. (elf_x86_64_relocate_section): Pass TRUE as from_relocate_section to elf_x86_64_tls_transition. (elf_backend_caches_rawsize): New.
2016-05-05Automatic date update in version.inGDB Administrator1-1/+1
2016-05-04Automatic date update in version.inGDB Administrator1-1/+1
2016-05-03PR 10549: MIPS/LD: Handle OSABI setting for STB_GNU_UNIQUEMaciej W. Rozycki2-0/+11
Add missing OSABI handling for MIPS/LD, complementing: commit f64b2e8d60f277b705c96d4b4e585f5f7c847cc4 Author: Nick Clifton <nickc@redhat.com> Date: Mon Apr 11 08:13:22 2011 +0000 Adjust test coverage accordingly. bfd/ PR 10549 * elfxx-mips.c (_bfd_mips_elf_add_symbol_hook): Handle STB_GNU_UNIQUE. ld/ PR 10549 * testsuite/ld-unique/unique.exp: Also run for `mips*-*-*'.
2016-05-03[AArch64] Also puts value in place for R_AARCH64_RELATIVEJiong Wang4-5/+20
When handling absolute relocations for global symbols bind within the shared object, AArch64 will generate one dynamic RELATIVE relocation, but won't apply the value for this absolution relocations at static linking stage. This is different from AArch64 gold linker and x86-64. This is not a bug as AArch64 is RELA, there is only guarantee that relocation addend is placed in the relocation entry. But some system softwares originally writen for x86-64 might assume AArch64 bfd linker gets the same behavior as x86-64, then they could take advantage of this buy skipping those RELATIVE dynamic relocations if the load address is the same as the static linking address. This patch makes AArch64 BFD linker applies absolution relocations at static linking stage for scenario described above. Meanwhile old AArch64 android loader has a bug (PR19163) which relies on current linker behavior as a workaround, so the same option --no-apply-dynamic-relocs added.
2016-05-03Automatic date update in version.inGDB Administrator1-1/+1
2016-05-02Automatic date update in version.inGDB Administrator1-1/+1
2016-05-01Automatic date update in version.inGDB Administrator1-1/+1
2016-04-30Automatic date update in version.inGDB Administrator1-1/+1
2016-04-29Set interpreter in x86 create_dynamic_sectionsH.J. Lu3-28/+31
Set interpreter in x86 create_dynamic_sections to make this information available to x86 check_relocs. * elf32-i386.c (elf_i386_size_dynamic_sections): Move interp setting to ... (elf_i386_create_dynamic_sections): Here. * elf64-x86-64.c (elf_x86_64_size_dynamic_sections): Move interp setting to ... (elf_x86_64_create_dynamic_sections): Here.
2016-04-29Pass GOT_RELOC to UNDEFINED_WEAK_RESOLVED_TO_ZEROH.J. Lu3-11/+47
When UNDEFINED_WEAK_RESOLVED_TO_ZERO is checked to convert load via GOT, has_got_reloc is always TRUE. This patch adds GOT_RELOC, which is TRUE in x86 convert_load, to UNDEFINED_WEAK_RESOLVED_TO_ZERO. * elf32-i386.c (UNDEFINED_WEAK_RESOLVED_TO_ZERO): Take GOT_RELOC and replace (EH)->has_got_reloc with GOT_RELOC. (elf_i386_fixup_symbol): Pass has_got_reloc to UNDEFINED_WEAK_RESOLVED_TO_ZERO. (elf_i386_allocate_dynrelocs): Likewise. (elf_i386_relocate_section): Likewise. (elf_i386_finish_dynamic_symbol): Likewise. (elf_i386_convert_load): Pass TRUE to UNDEFINED_WEAK_RESOLVED_TO_ZERO. * elf64-x86-64.c (UNDEFINED_WEAK_RESOLVED_TO_ZERO): Take GOT_RELOC and replace (EH)->has_got_reloc with GOT_RELOC. (elf_x86_64_fixup_symbol): Pass has_got_reloc to UNDEFINED_WEAK_RESOLVED_TO_ZERO. (elf_x86_64_allocate_dynrelocs): Likewise. (elf_x86_64_relocate_section): Likewise. (elf_x86_64_finish_dynamic_symbol): Likewise. (elf_x86_64_convert_load): Pass TRUE to UNDEFINED_WEAK_RESOLVED_TO_ZERO.
2016-04-29i386: Don't relocate section when check_relocs failedH.J. Lu2-16/+34
No need to relocate section when check_relocs failed. * elf32-i386.c (check_relocs_failed): New. (elf_i386_check_relocs): Set check_relocs_failed on error. (elf_i386_relocate_section): Skip if check_relocs failed.
2016-04-29X86-64: Set check_relocs_failed on errorH.J. Lu2-17/+29
When checking relocations, set check_relocs_failed on error. * elf64-x86-64.c (elf_x86_64_check_relocs): Set check_relocs_failed on error.
2016-04-29Enhance support for copying and stripping Solaris and ARM binaries.Nick Clifton8-142/+334
PR 19938 bfd * elf-bfd.h (struct elf_backend_data): Rename elf_backend_set_special_section_info_and_link to elf_backend_copy_special_section_fields. * elfxx-target.h: Likewise. * elf.c (section_match): Ignore the SHF_INFO_LINK flag when comparing section flags. (copy_special_section_fields): New function. (_bfd_elf_copy_private_bfd_data): Copy the EI_ABIVERSION field. Perform two scans over special sections. The first one looks for a direct mapping between the output section and an input section. The second scan looks for a possible match based upon section characteristics. * elf32-arm.c (elf32_arm_copy_special_section_fields): New function. Handle setting the sh_link field of SHT_ARM_EXIDX sections. * elf32-i386.c (elf32_i386_set_special_info_link): Rename to elf32_i386_copy_solaris_special_section_fields. * elf32-sparc.c (elf32_sparc_set_special_section_info_link): Rename to elf32_sparc_copy_solaris_special_section_fields. * elf64-x86-64.c (elf64_x86_64_set_special_info_link): Rename to elf64_x86_64_copy_solaris_special_section_fields. binutils* readelf.c (get_solaris_segment_type): New function. (get_segment_type): Call it.
2016-04-29Automatic date update in version.inGDB Administrator1-1/+1
2016-04-28Updated Chinese (simplified) translations for bfd, binutils and gold.Nick Clifton2-61/+54
2016-04-28Automatic date update in version.inGDB Administrator1-1/+1
2016-04-27Skip debug sections when estimating distancesH.J. Lu2-11/+20
Skip debug sections when estimating distances between output sections since compressed_size is used to compress debug sections and debug sections aren't excluded from distances between output sections. bfd/ PR ld/20006 * elf64-x86-64.c (elf_x86_64_convert_load): Skip debug sections when estimating distances between output sections. ld/ PR ld/20006 * testsuite/ld-elfvsb/elfvsb.exp (COMPRESS_LDFLAG): New. (visibility_run): Pass COMPRESS_LDFLAG to visibility_test on ELF targets.
2016-04-27Cache result of scan for __start_* and __stop_* sectionsAlan Modra3-20/+63
include/ * bfdlink.h (struct bfd_link_hash_entry): Add "section" field to undef. Formatting. bfd/ * elflink.c (_bfd_elf_is_start_stop): New function. (_bfd_elf_gc_mark_rsec): Use it. * elf-bfd.h (_bfd_elf_is_start_stop): Declare.
2016-04-26add casts to avoid arithmetic on void *Trevor Saunders3-5/+11
arithmetic on void * is undefined in ISO C, so we should avoid it. In GNU C sizeof void * is defined as 1, and that is pretty clearly what this code wants, so change it to do arithmetic on bfd_byte *. Unfortunately most of the argument types come from virtual function interfaces so changing the types to bfd_byte * isn't trivial though it might make the code clearer. So for the moment its easiest to leave the variable types as void * and cast before doing arithmetic. bfd/ChangeLog: 2016-04-26 Trevor Saunders <tbsaunde+binutils@tbsaunde.org> * elf32-rx.c (rx_set_section_contents): Avoid arithmetic on void *. * mmo.c (mmo_get_section_contents): Likewise. (mmo_set_section_contents): Likewise.
2016-04-27Automatic date update in version.inGDB Administrator1-1/+1
2016-04-26Always count the NULL entry in dynamic symbol tableH.J. Lu3-19/+24
There is an unused NULL entry at the head of dynamic symbol table which we must account for in our count even if the table is empty or unused since it is intended for the mandatory DT_SYMTAB tag (.dynsym section) in .dynamic section. * elf-bfd.h (elf_link_hash_table): Update comments for dynsymcount. * elflink.c (_bfd_elf_link_renumber_dynsyms): Always count for the unused NULL entry at the head of dynamic symbol table. (bfd_elf_size_dynsym_hash_dynstr): Remove dynsymcount != 0 checks.
2016-04-26Automatic date update in version.inGDB Administrator1-1/+1
2016-04-25Automatic date update in version.inGDB Administrator1-1/+1
2016-04-24Automatic date update in version.inGDB Administrator1-1/+1
2016-04-23Automatic date update in version.inGDB Administrator1-1/+1
2016-04-21Exclude linker created file from dynobjH.J. Lu2-1/+7
Some ELF targets create a "linker stubs" fake bfd. Don't use it to set dynobj. * elflink.c (_bfd_elf_link_create_dynstrtab): Exclude linker created file from dynobj.
2016-04-21Set dynobj to a normal input file if possibleH.J. Lu2-1/+22
When check_relocs is called after gc-sections has run, _bfd_elf_link_create_dynstrtab may be called with an dynamic object and hash_table->dynobj may be NULL. We may not set dynobj, an input file holding linker created dynamic sections to the dynamic object, which has its own dynamic sections. We need to find a normal input file to hold linker created sections if possible. Otherwise ld will crash during LTO input rescan when linker created dynamic section overrides input dynamic section. * elflink.c (_bfd_elf_link_create_dynstrtab): Set dynobj to a normal input file if possible.
2016-04-22Automatic date update in version.inGDB Administrator1-1/+1
2016-04-21Add support for non-ELF targets to check their relocs.Nick Clifton34-8/+143
bfd * aout-adobe.c: Use _bfd_generic_link_check_relocs. * aout-target.h: Likewise. * aout-tic30.c: Likewise. * binary.c: Likewise. * bout.c: Likewise. * coff-alpha.c: Likewise. * coff-rs6000.c: Likewise. * coff64-rs6000.c: Likewise. * coffcode.h: Likewise. * i386msdos.c: Likewise. * i386os9k.c: Likewise. * ieee.c: Likewise. * ihex.c: Likewise. * libbfd-in.h: Likewise. * libecoff.h: Likewise. * mach-o-target.c: Likewise. * mmo.c: Likewise. * nlm-target.h: Likewise. * oasys.c: Likewise. * pef.c: Likewise. * plugin.c: Likewise. * ppcboot.c: Likewise. * som.c: Likewise. * srec.c: Likewise. * tekhex.c: Likewise. * versados.c: Likewise. * vms-alpha.c: Likewise. * xsym.c: Likewise. * elfxx-target.h: Use _bfd_elf_link_check_relocs. * linker.c (bfd_link_check_relocs): New function. (_bfd_generic_link_check_relocs): New function. * targets.c (BFD_JUMP_TABLE_LINK): Add initialization of _bfd_link_check_relocs field. (struct bfd_target)L Add _bfd_link_check_relocs field. * bfd-in2.h: Regenerate. * libbfd.h: Regenerate. ld * ldlang.c (lang_check_relocs): Use bfd_link_check_relocs in prefernce to _bfd_elf_link_check_relocs. Drop test for ELF targets. Do not stop the checks when problems are encountered. include * bfdlink.h: Add prototype for bfd_link_check_relocs.
2016-04-20Remove x86 gc_sweep_hookH.J. Lu3-327/+7
Since x86 backends never see the removed sections, there is no need for gc_sweep_hook. * elf32-i386.c (elf_i386_gc_sweep_hook): Removed. (elf_backend_gc_sweep_hook): Likewise. * elf64-x86-64.c (elf_x86_64_gc_sweep_hook): Likewise. (elf_backend_gc_sweep_hook): Likewise.
2016-04-20Don't check relocations in excluded sectionsH.J. Lu2-0/+7
When checking relocations after gc-sections has run, the unused sections have been removed. Don't check relocations in excluded sections. * elflink.c (_bfd_elf_link_check_relocs): Don't check relocations in excluded sections