aboutsummaryrefslogtreecommitdiff
path: root/bfd
AgeCommit message (Collapse)AuthorFilesLines
2015-12-18Fix formatting in coff-x86_64.cH.J. Lu2-48/+54
* coff-x86_64.c (coff_amd64_reloc): Fix formatting.
2015-12-18Fix formatting of coff-i386.cNick Clifton2-32/+36
* coff-i386.c (coff_i386_reloc): Fix formatting.
2015-12-18Automatic date update in version.inGDB Administrator1-1/+1
2015-12-17Add forgotten ChangeLog updates for 72d98d16ed09584660d0cbb759d90f8dfeef2343:Christophe Lyon1-0/+12
2015-12-16 Mickael Guene <mickael.guene@st.com> bfd/ * bfd-in2.h: Regenerate. * reloc.c: Add new relocations. * libbfd.h (bfd_reloc_code_real_names): Add new relocations display names. * elf32-arm.c (elf32_arm_howto_table_1): Add HOWTO for new relocations. (elf32_arm_reloc_map): Add bfd/arm mapping for new relocations. (elf32_arm_final_link_relocate): Implement new relocations resolution. gas/ * doc/c-arm.texi: Add documentation about new directives * config/tc-arm.c (group_reloc_table): Add mapping between gas syntax and new relocations. (do_t_add_sub): Keep new relocations for add operand. (do_t_mov_cmp): Keep new relocations for mov operand. (insns): Use 'shifter operand with possible group relocation' operand parse code for movs operand. (md_apply_fix): Implement mov and add encoding when new relocations on them. (tc_gen_reloc): Add new relocations. (arm_fix_adjustable): Since offset has a limited range ([0:255]) we disable adjust_reloc_syms() for new relocations. gas/testsuite/ * gas/arm/adds-thumb1-reloc-local.d: New * gas/arm/adds-thumb1-reloc-local.s: New * gas/arm/movs-thumb1-reloc-local.d: New * gas/arm/movs-thumb1-reloc-local.s: New include/ * elf/arm.h: Add new arm relocations. ld/testsuite/ * ld-arm/arm-elf.exp (armelftests_common): Add new relocations tests. * ld-arm/thumb1-adds.d: New * ld-arm/thumb1-adds.s: New * ld-arm/thumb1-movs.d: New * ld-arm/thumb1-movs.s: New
2015-12-17Automatic date update in version.inGDB Administrator1-1/+1
2015-12-16[ARM] Add support for thumb1 pcrop relocations.Mickael Guene4-1/+107
To support thumb1 execute-only code we need to support four new relocations (R_ARM_THM_ALU_ABS_G0_NC, R_ARM_THM_ALU_ABS_G1_NC, R_ARM_THM_ALU_ABS_G2_NC and R_ARM_THM_ALU_ABS_G3_NC). These relocations allow the static linker to finalize construction of symbol address. Typical sequence of code to get address of the symbol foo is then the following : movs r3, #:upper8_15:#foo lsls r3, #8 adds r3, #:upper0_7:#foo lsls r3, #8 adds r3, #:lower8_15:#foo lsls r3, #8 adds r3, #:lower0_7:#foo This will give following sequence of text and relocations after assembly : 4: 2300 movs r3, #0 4: R_ARM_THM_ALU_ABS_G3_NC foo 6: 021b lsls r3, r3, #8 8: 3300 adds r3, #0 8: R_ARM_THM_ALU_ABS_G2_NC foo a: 021b lsls r3, r3, #8 c: 3300 adds r3, #0 c: R_ARM_THM_ALU_ABS_G1_NC foo e: 021b lsls r3, r3, #8 10: 3300 adds r3, #0 10: R_ARM_THM_ALU_ABS_G0_NC foo
2015-12-16Automatic date update in version.inGDB Administrator1-1/+1
2015-12-15bfd: don't produce corrupt COFF symbol table due to long ELF file name symbolsJan Beulich5-14/+61
The re-writing logic in _bfd_coff_final_link() overwrote the ".file" part of the symbol table entry, due to not coping with the auxiliary entry generated in all cases. Note that while I would have wanted to add a test case, (a) I didn't spot any one testing the base functionality here, and (b) I wasn't able to figure out proper conditionals to use in e.g. ld-elf/elf.exp to check for the necessary PE/PE+ support (which varies by target).
2015-12-15Update the copyright notices in the affected files.Nick Clifton5-12/+12
PR 19339 * elf-vxworks.h: Update copyright notice. * elf-vxworks.c: Update copyright notice. * elf-nacl.h: Update copyright notice. * elf-nacl.c: Update copyright notice.
2015-12-15Automatic date update in version.inGDB Administrator1-1/+1
2015-12-14Automatic date update in version.inGDB Administrator1-1/+1
2015-12-13Automatic date update in version.inGDB Administrator1-1/+1
2015-12-12Automatic date update in version.inGDB Administrator1-1/+1
2015-12-11Automatic date update in version.inGDB Administrator1-1/+1
2015-12-10ld -r doesn't need plugin for slim lto objectH.J. Lu2-1/+8
Plugin isn't required on slim lto object for relocatable link. bfd/ PR ld/19317 * linker.c (_bfd_generic_link_add_one_symbol): Don't complain plugin needed to handle slim lto object for relocatable link. ld/testsuite/ PR ld/19317 * ld-plugin/lto.exp (lto_no_fat): New. (lto_link_tests): Add a test for PR ld/19317. (lto_run_tests): Likewise. (run_ld_link_tests): Likewise.
2015-12-09Fix GOT address computations in initial PLT entries for nios2.Sandra Loosemore2-7/+22
2015-12-09 Sandra Loosemore <sandra@codesourcery.com> bfd/ * elf32-nios2.c (nios2_elf32_finish_dynamic_sections): Correct %hiadj/%lo computations for _GLOBAL_OFFSET_TABLE_ in initial PLT entries. Assert alignment requirements.
2015-12-10Automatic date update in version.inGDB Administrator1-1/+1
2015-12-09Automatic date update in version.inGDB Administrator1-1/+1
2015-12-08rl78: relaxation fixesDJ Delorie2-3/+55
Various fixes to linker relaxation. In general, we need to support relaxing every branch, even if we don't relax it in the assembler, so we can optionally defer relaxation to the linker. * elf32-rl78.c (rl78_offset_for_reloc): Add more relocs. (rl78_elf_relax_section): Add bc/bz/bnc/bnz/bh/bnh. Fix reloc choices. * config/rl78-parse.y: Make all branches relaxable via rl78_linkrelax_branch(). * config/tc-rl78.c (rl78_linkrelax_branch): Mark all relaxable branches with relocs. (options): Add OPTION_NORELAX. (md_longopts): Add -mnorelax. (md_parse_option): Support OPTION_NORELAX. (op_type_T): Add bh, sk, call, and br. (rl78_opcode_type): Likewise. (rl78_relax_frag): Fix not-relaxing logic. Add sk. (md_convert_frag): Fix relocation handling. (tc_gen_reloc): Strip relax relocs when not linker relaxing. (md_apply_fix): Defer overflow handling for anything that needs a PLT, to the linker. * config/tc-rl78.h (TC_FORCE_RELOCATION): Force all relocations to the linker when linker relaxing. * doc/c-rl78.texi (norelax): Add.
2015-12-08rx: Fix p_vaddr reconstruction logic.DJ Delorie2-0/+6
* elf32-rx.c (rx_elf_object_p): Ignore empty and nobits sections.
2015-12-08Automatic date update in version.inGDB Administrator1-1/+1
2015-12-07oops - accidentally omittde from previous delta.Nick Clifton1-0/+7
2015-12-07Fix relaxation in RX linker when --no-keep-memory is specified.Nick Clifton1-26/+16
* elf32-rx.c (elf32_rx_relax_delete_bytes): Add extra parameter - the start of the relocs for the section. Delete code to load in the relocs. (elf32_rx_relax_section): Do not free the loaded relocs.
2015-12-07PowerPC ifunc with local symbolsAlan Modra3-123/+131
This fixes some cases where the linker would incorrectly error on plt relocs to local ifunc symbols. I've also tidied plt and ifunc handling for ppc64, where check_relocs was allowing for the possibility of plt calls via addr14/addr24 relocs but relocate_section was not. * elf32-ppc.c (ppc_elf_check_relocs): Don't error on local ifunc plt call. Wrap long lines. (ppc_elf_relocate_section): Wrap long lines. * elf64-ppc.c (ppc64_elf_check_relocs): Don't error on local ifunc plt calls. Move __tls_get_addr checks later. Don't create plt for addr14/addr24 relocs. (ppc64_elf_gc_sweep_hook): Adjust to suit check_relocs changes. (ppc64_elf_relocate_section): Correct local ifunc handling for PLT64, PLT32 and PLT16 relocs.
2015-12-07PR19323 memory allocation greater than 4GAlan Modra2-1/+15
On 32-bit targets, memory requested for program/section headers on a fuzzed binary can wrap to 0. A bfd_alloc of zero bytes actually returns a one byte allocation rather than a NULL pointer. This then leads to buffer overflows. Making this check unconditional triggers an extremely annoying gcc-5 warning. PR19323 * elfcode.h (elf_object_p): Check for ridiculous e_shnum and e_phnum values.
2015-12-07R_PPC64_ENTRYAlan Modra5-4/+93
Add a new relocation that marks large-model entry code, for edit back to medium-model. include/elf/ * ppc64.h (R_PPC64_ENTRY): Define. bfd/ * reloc.c (BFD_RELOC_PPC64_ENTRY): New. * elf64-ppc.c (reloc_howto_type ppc64_elf_howto_raw): Add entry for R_PPC64_ENTRY. (LD_R2_0R12, ADD_R2_R2_R12, LIS_R2, ADDIS_R2_R12): Define. (ppc64_elf_reloc_type_lookup): Handle R_PPC64_ENTRY. (ppc64_elf_relocate_section): Edit code at R_PPC64_ENTTY. Use new insn defines. * libbfd.h: Regenerate. * bfd-in2.h: Regenerate.
2015-12-07bfd: Mark sh5*-*-* and sh64*-*-* targets as obsolete.Kaz Kojima2-0/+5
2015-12-07Automatic date update in version.inGDB Administrator1-1/+1
2015-12-06Automatic date update in version.inGDB Administrator1-1/+1
2015-12-05Automatic date update in version.inGDB Administrator1-1/+1
2015-12-04Optimize R_386_GOT32/R_386_GOT32X only if addend is 0H.J. Lu2-13/+17
Linker can't optimize R_386_GOT32 and R_386_GOT32X relocations if addend isn't 0. It isn't valid to convert movl foo@GOT+1(%ecx), %eax to leal foo@GOTOFF+1(%ecx), %eax nor to convert movq foo@GOTPCREL+1(%rip), %rax to leaq foo(%rip), %rax for x86-64. We should check if addend is 0 before optimizing R_386_GOT32 and R_386_GOT32X relocations. Testcases are added for i386 and x86-64. bfd/ * elf32-i386.c (elf_i386_convert_load): Skip if addend isn't 0. (elf_i386_relocate_section): Skip R_386_GOT32X optimization if addend isn't 0. ld/testsuite/ * ld-i386/i386.exp: Run mov2a, mov2b and mov3. * ld-i386/mov2.s: New file. * ld-i386/mov2a.d: Likewise. * ld-i386/mov2b.d: Likewise. * ld-i386/mov3.d: Likewise. * ld-i386/mov3.s: Likewise. * ld-x86-64/mov2.s: Likewise. * ld-x86-64/mov2a.d: Likewise. * ld-x86-64/mov2b.d: Likewise. * ld-x86-64/mov2c.d: Likewise. * ld-x86-64/mov2d.d: Likewise. * ld-x86-64/x86-64.exp: Run mov2a, mov2b, mov2c and mov2d.
2015-12-04Remove useless loop in elf.cTristan Gingold2-5/+5
2015-12-04Automatic date update in version.inGDB Administrator1-1/+1
2015-12-03Automatic date update in version.inGDB Administrator1-1/+1
2015-12-02addr2line vs. inlined C functions called from C++Alan Modra3-14/+31
In this case the inlined function doesn't have DW_AT_linkage_name in .debug_info, but the language is C++ so find_nearest_line goes looking in the symbol table. Since the function is inlined the enclosing non-inline function symbol is returned from _bfd_elf_find_function, which is wrong. This patch only uses a symbol if its address matches. PR binutils/19315 * dwarf2.c (_bfd_elf_find_function): Return symbol matched. (_bfd_dwarf2_find_nearest_line): Check symbol returned above against dwarf range. * elf-bfd.h (_bfd_elf_find_function): Update prototype.
2015-12-02Fix powerpc64 segfault caused by zero r_symndx relocs.Alan Modra2-2/+13
Fixes a segfault in ppc64_elf_tls_optimize found when testing R_PPC64_ENTRY, and potential for trouble in other places found by code inspection. * elf64-ppc.c (ppc64_elf_tls_optimize): Don't segfault on NULL symbol section or output section. (ppc64_elf_edit_toc): Similarly for ld -R objects. (ppc64_elf_size_stubs): Likewise.
2015-12-02Automatic date update in version.inGDB Administrator1-1/+1
2015-12-01Properly check symbol defined by assignment in linker scriptH.J. Lu3-13/+25
Symbol defined by a linker assignment may have type bfd_link_hash_new or bfd_link_hash_undefined. And h->def_regular is always set. elf_i386_convert_load and elf_x86_64_convert_load should check h->def_regular as well as bfd_link_hash_undefined and bfd_link_hash_new to see if a symbol is defined by a linker script. bfd/ PR ld/19319 * elf32-i386.c (elf_i386_convert_load): Check h->def_regular instead of bfd_link_hash_new. * elf64-x86-64.c (elf_x86_64_convert_load): Likewise. Skip relocation overflow for bfd_link_hash_undefined and bfd_link_hash_new if h->def_regular is set. ld/testsuite/ PR ld/19319 * ld-i386/i386.exp: Run pr19319 test. * ld-x86-64/x86-64.exp: Likewise. * ld-i386/pr19319.dd: New file. * ld-i386/pr19319a.S: Likewise. * ld-i386/pr19319b.S: Likewise. * ld-x86-64/pr19319.dd: Likewise. * ld-x86-64/pr19319a.S: Likewise. * ld-x86-64/pr19319b.S: Likewise.
2015-12-01Trim unused params from aout adjust_sizes_and_vmasAlan Modra9-56/+27
* aoutx.h (adjust_sizes_and_vmas): Remove unused text_size and text_end parameters. Update callers. * aout-tic30.c: Update adjust_sizes_and_vmas callers. * hp300hpux.c: Likewise. * i386lynx.c: Likewise. * libaout.h: Likewise. * netbsd.h: Likewise. * pdp11.c: Likewise. * riscix.c: Likewise.
2015-12-01Invoke aout N_* macros with pointer to struct internal_execAlan Modra27-264/+294
No functional changes here. BTW, some of these headers don't seem to be used anywhere: include/aout/dynix3.h, include/aout/encap.h, include/aout/hp.h, gas/config/aout_gnu.h bfd/ * aout-adobe.c: Invoke aout N_* macros with pointer to struct internal_exec. * aout-arm.c: Likewise. * aout-cris.c: Likewise. * aout-target.h: Likewise. * aout-tic30.c: Likewise. * aoutf1.h: Likewise. * aoutx.h: Likewise. * bout.c: Likewise. * freebsd.h: Likewise. * gen-aout.c: Likewise. * hp300hpux.c: Likewise. * i386aout.c: Likewise. * i386linux.c: Likewise. * i386lynx.c: Likewise. * i386mach3.c: Likewise. * i386os9k.c: Likewise. * libaout.h: Likewise. * m68klinux.c: Likewise. * m88kmach3.c: Likewise. * mipsbsd.c: Likewise. * netbsd.h: Likewise. * pc532-mach.c: Likewise. * pdp11.c: Likewise. * riscix.c: Likewise. * sparclinux.c: Likewise. * sparclynx.c: Likewise. gas/ * config/aout_gnu.h: Invoke aout N_* macros with pointer to struct internal_exec. include/ * bout.h: Invoke aout N_* macros with pointer to struct internal_exec. * os9k.h: Likewise. include/aout/ * adobe.h: Invoke aout N_* macros with pointer to struct internal_exec. * aout64.h: Likewise. * dynix3.h: Likewise. * encap.h: Likewise. * hp.h: Likewise. * hp300hpux.h: Likewise. * sun4.h: Likewise.
2015-12-01Don't use BFD_TRADITIONAL_FORMAT flag in COFF supportAlan Modra6-24/+39
info->traditional_format is available, or can be easily made available. This relegates BFD_TRADITIONAL_FORMAT to AOUT use only. * coff-rs6000.c (_bfd_xcoff_put_symbol_name): Replace abfd param with info param. Test info->traditional_format rather than BFD_TRADITIONAL_FORMAT flag. * coff64-rs6000.c (_bfd_xcoff64_put_symbol_name): Likewise. * libxcoff.h (struct xcoff_backend_data_rec): Update _xcoff_put_symbol_name prototype. (bfd_xcoff_put_symbol_name): Add info param. * xcofflink.c (xcoff_find_tc0): Update bfd_xcoff_put_symbol_name call. (xcoff_write_global_symbol): Likewise. (xcoff_link_input_bfd): Test info->traditional_format rather than BFD_TRADITIONAL_FORMAT flag. * cofflink.c (_bfd_coff_final_link): Likewise. (_bfd_coff_link_input_bfd, _bfd_coff_write_global_sym): Likewise.
2015-12-01SRC-POTFILES.in updateAlan Modra2-0/+6
* po/SRC-POTFILES.in: Regenerate.
2015-12-01Re: ARC port broken reloc processingAlan Modra2-14/+22
* elf32-arc.c (ARC_ELF_HOWTO): Delete. (arc_elf_howto): New function. (bfd_elf32_bfd_reloc_type_lookup): Use it in place of existing init code. (bfd_elf32_bfd_reloc_name_lookup): Use arc_elf_howto. (arc_info_to_howto_rel, elf_arc_relocate_section): Likwise. (elf_arc_check_relocs): Likewise.
2015-12-01ARC port broken reloc processingAlan Modra2-1/+6
This initialises howto.dst_mask so that relocations in debug sections are applied by the generic reloc processing used by objdump to display debug sections. * elf32-arc.c (arc_elf_howto_init): Init dst_mask.
2015-12-01Automatic date update in version.inGDB Administrator1-1/+1
2015-11-30Automatic date update in version.inGDB Administrator1-1/+1
2015-11-29Automatic date update in version.inGDB Administrator1-1/+1
2015-11-28Automatic date update in version.inGDB Administrator1-1/+1
2015-11-27Automatic date update in version.inGDB Administrator1-1/+1
2015-11-26Automatic date update in version.inGDB Administrator1-1/+1