aboutsummaryrefslogtreecommitdiff
path: root/bfd
AgeCommit message (Collapse)AuthorFilesLines
2016-05-03Call elf_x86_64_convert_load_reloc from elf_x86_64_check_relocsH.J. Lu1-24/+71
2016-05-03Call elf_i386_convert_load_reloc from elf_i386_check_relocsH.J. Lu1-146/+53
2016-05-03Add a do_assignments hook to ldemulH.J. Lu2-0/+130
When ELF relocation check is moved after lang_gc_sections, we should call bfd_elf_record_link_assignment before ELF relocation check so that linker defined symbols will be processed earlier to stabilize symbols. We have to do it in lang_do_assignments just before the call to lang_do_assignments_1. bfd/ * elf-bfd.h (_bfd_elf_record_start_stop): New prototype. * elflink.c (start_stop_symbol): New struct. (start_stop_symbol_info): Likewise. (elf_link_collect_start_stop): New function. (_bfd_elf_record_start_stop): Likewise. ld/ * ldemul.c (ldemul_do_assignments): New function. * ldemul.h (ldemul_do_assignments): New prototype. (ld_emulation_xfer_struct): Add do_assignments. * ldlang.c (lang_do_assignments): Call ldemul_do_assignments just before lang_do_assignments_1 in lang_mark_phase_enum. * emultempl/aix.em (ld_${EMULATION_NAME}_emulation): Initialize the do_assignments field to NULL. * emultempl/armcoff.em (ld_${EMULATION_NAME}_emulation): Likewise. * emultempl/beos.em (ld_${EMULATION_NAME}_emulation): Likewise. * emultempl/generic.em (ld_${EMULATION_NAME}_emulation): Likewise. * emultempl/gld960.em (ld_gld960_emulation): Likewise. * emultempl/gld960c.em (ld_gld960coff_emulation): Likewise. * emultempl/linux.em (ld_${EMULATION_NAME}_emulation): Likewise. * emultempl/lnk960.em (ld_lnk960_emulation): Likewise. * emultempl/m68kcoff.em (ld_${EMULATION_NAME}_emulation): Likewise. * emultempl/msp430.em (ld_${EMULATION_NAME}_emulation): Likewise. * emultempl/pe.em (ld_${EMULATION_NAME}_emulation): Likewise. * emultempl/pep.em (ld_${EMULATION_NAME}_emulation): Likewise. * emultempl/sunos.em (ld_${EMULATION_NAME}_emulation): Likewise. * emultempl/ticoff.em (ld_${EMULATION_NAME}_emulation): Likewise. * emultempl/vanilla.em (ld_${EMULATION_NAME}_emulation): Likewise. * emultempl/elf32.em (ehdr_start): New variable. (ehdr_start_save): Likewise. (gld${EMULATION_NAME}_do_assignments): New function. (gld${EMULATION_NAME}_restore_ehdr_start): Likewise. (ehdr_start_empty): Removed. (gld${EMULATION_NAME}_before_allocation): Don't adjust __ehdr_start here. Call gld${EMULATION_NAME}_restore_ehdr_start at the end. (ld_${EMULATION_NAME}_emulation): Initialize the do_assignments field with gld${EMULATION_NAME}_do_assignments by default.
2016-05-03X86: Extract convert_load_reloc from convert_loadH.J. Lu2-670/+705
* 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-03x86: Cache the section contents in check_relocsH.J. Lu2-53/+69
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-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
2016-04-21Automatic date update in version.inGDB Administrator1-1/+1
2016-04-20Check run-time R_X86_64_32 relocation overflowH.J. Lu2-74/+82
Since elf_x86_64_check_relocs is called after opening all input files, we can detect dynamic R_X86_64_32 relocation overflow there. bfd/ PR ld/19969 * elf64-x86-64.c (check_relocs_failed): New. (elf_x86_64_need_pic): Moved before elf_x86_64_check_relocs. Support relocation agaist local symbol. Set check_relocs_failed. (elf_x86_64_check_relocs): Use elf_x86_64_need_pic. Check R_X86_64_32 relocation overflow. (elf_x86_64_relocate_section): Skip if check_relocs failed. Update one elf_x86_64_need_pic and remove one elf_x86_64_need_pic. ld/ PR ld/19969 * testsuite/ld-x86-64/pr19969.d: New file. * testsuite/ld-x86-64/pr19969a.S: Likewise. * testsuite/ld-x86-64/pr19969b.S: Likewise. * testsuite/ld-x86-64/x86-64.exp: Run pr19969 tests.
2016-04-20Call _bfd_elf_create_ifunc_sections only for ifuncH.J. Lu3-10/+14
Since x86 check_relocs is called after opening all input files, we need to call _bfd_elf_create_ifunc_sections only for STT_GNU_IFUNC symbols. * elf32-i386.c (elf_i386_check_relocs): Call _bfd_elf_create_ifunc_sections only for STT_GNU_IFUNC symbol. * elf64-x86-64.c (elf_x86_64_check_relocs): Likewise.
2016-04-20Check ELF relocs after opening all input filesH.J. Lu3-51/+75
Delaying checking ELF relocations until opening all input files so that symbol information is final when relocations are checked. This is only enabled for x86 targets. bfd/ * elf-bfd.h (_bfd_elf_link_check_relocs): New. * elflink.c (_bfd_elf_link_check_relocs): New function. (elf_link_add_object_symbols): Call _bfd_elf_link_check_relocs if check_relocs_after_open_input is FALSE. include/ * bfdlink.h (bfd_link_info): Add check_relocs_after_open_input. ld/ * emulparams/elf32_x86_64.sh (CHECK_RELOCS_AFTER_OPEN_INPUT): New. * emulparams/elf_i386.sh (CHECK_RELOCS_AFTER_OPEN_INPUT): Likewise. * emulparams/elf_i386_be.sh (CHECK_RELOCS_AFTER_OPEN_INPUT): Likewise. * emulparams/elf_i386_chaos.sh (CHECK_RELOCS_AFTER_OPEN_INPUT): Likewise. * emulparams/elf_i386_ldso.sh (CHECK_RELOCS_AFTER_OPEN_INPUT): Likewise. * emulparams/elf_i386_vxworks.sh (CHECK_RELOCS_AFTER_OPEN_INPUT): Likewise. * emulparams/elf_x86_64.sh (CHECK_RELOCS_AFTER_OPEN_INPUT): Likewise. * emulparams/i386nto.sh (CHECK_RELOCS_AFTER_OPEN_INPUT): Likewise. * emultempl/elf32.em (gld${EMULATION_NAME}_before_parse): Set check_relocs_after_open_input to TRUE if CHECK_RELOCS_AFTER_OPEN_INPUT is yes. (gld${EMULATION_NAME}_after_open): Call _bfd_elf_link_check_relocs on all inputs if check_relocs_after_open_input is TRUE.
2016-04-20update many old style function definitionsTrevor Saunders5-15/+15
This includes regenerating a bunch of files in opcodes/ with trunk cgen. gprof/ChangeLog: 2016-04-20 Trevor Saunders <tbsaunde+binutils@tbsaunde.org> * basic_blocks.c: Update old style function definitions. * cg_arcs.c: Likewise. * cg_print.c: Likewise. * gen-c-prog.awk: Likewise. * gmon_io.c: Likewise. * hertz.c: Likewise. * hist.c: Likewise. * sym_ids.c: Likewise. bfd/ChangeLog: 2016-04-20 Trevor Saunders <tbsaunde+binutils@tbsaunde.org> * cache.c: Update old style function definitions. * elf32-m68k.c: Likewise. * elf64-mmix.c: Likewise. * stab-syms.c: Likewise. opcodes/ChangeLog: 2016-04-20 Trevor Saunders <tbsaunde+binutils@tbsaunde.org> * alpha-dis.c: Regenerate. * crx-dis.c: Likewise. * disassemble.c: Likewise. * epiphany-opc.c: Likewise. * fr30-opc.c: Likewise. * frv-opc.c: Likewise. * ip2k-opc.c: Likewise. * iq2000-opc.c: Likewise. * lm32-opc.c: Likewise. * lm32-opinst.c: Likewise. * m32c-opc.c: Likewise. * m32r-opc.c: Likewise. * m32r-opinst.c: Likewise. * mep-opc.c: Likewise. * mt-opc.c: Likewise. * or1k-opc.c: Likewise. * or1k-opinst.c: Likewise. * tic80-opc.c: Likewise. * xc16x-opc.c: Likewise. * xstormy16-opc.c: Likewise. ld/ChangeLog: 2016-04-20 Trevor Saunders <tbsaunde+binutils@tbsaunde.org> * emultempl/scoreelf.em: Likewise. binutils/ChangeLog: 2016-04-20 Trevor Saunders <tbsaunde+binutils@tbsaunde.org> * resres.c: Likewise. gas/ChangeLog: 2016-04-20 Trevor Saunders <tbsaunde+binutils@tbsaunde.org> * cgen.c: Likewise. * config/tc-bfin.c: Likewise. * config/tc-ia64.c: Likewise. * config/tc-mep.c: Likewise. * config/tc-metag.c: Likewise. * config/tc-nios2.c: Likewise. * config/tc-rl78.c: Likewise.
2016-04-20change argument type to bfd_byteTrevor Saunders2-1/+5
We operate on the pointer's target as a set of bytes, and this avoids doing arithmetic on void * which is undefined in ISO C. bfd/ChangeLog: 2016-04-20 Trevor Saunders <tbsaunde+binutils@tbsaunde.org> * elf32-arm.c (put_thumb2_insn): Change argument type to bfd_byte *.
2016-04-20Automatic date update in version.inGDB Administrator1-1/+1
2016-04-19Automatic date update in version.inGDB Administrator1-1/+1
2016-04-18Automatic date update in version.inGDB Administrator1-1/+1
2016-04-17Automatic date update in version.inGDB Administrator1-1/+1
2016-04-16Automatic date update in version.inGDB Administrator1-1/+1
2016-04-15Regenerate Makefile.in/aclocal.m4 automake 1.11.6H.J. Lu4-66/+173
bfd/ * Makefile.in: Regenerated with automake 1.11.6. * aclocal.m4: Likewise. * doc/Makefile.in: Likewise. binutils/ * Makefile.in: Regenerated with automake 1.11.6. * aclocal.m4: Likewise. * doc/Makefile.in: Likewise. gas/ * Makefile.in: Regenerated with automake 1.11.6. * aclocal.m4: Likewise. * doc/Makefile.in: Likewise. gold/ * Makefile.in: Regenerated with automake 1.11.6. * aclocal.m4: Likewise. * testsuite/Makefile.in: Likewise. gprof/ * Makefile.in: Regenerated with automake 1.11.6. * aclocal.m4: Likewise. ld/ * Makefile.in: Regenerated with automake 1.11.6. * aclocal.m4: Likewise. opcodes/ * Makefile.in: Regenerated with automake 1.11.6. * aclocal.m4: Likewise.
2016-04-15Automatic date update in version.inGDB Administrator1-1/+1
2016-04-14arc/nps400 : New cmem instructions and associated relocationAndrew Burgess5-19/+90
Add support for arc/nps400 cmem instructions, these load and store instructions are hard-wired to access "0x57f00000 + 16-bit-offset". Supporting this relocation required some additions to the arc relocation handling in the bfd library, as well as the standard changes required to add a new relocation type. There's a test of the new instructions in the assembler, and a test of the relocation in the linker. bfd/ChangeLog: * reloc.c: Add BFD_RELOC_ARC_NPS_CMEM16 entry. * bfd-in2.h: Regenerate. * libbfd.h: Regenerate. * elf32-arc.c: Add 'opcode/arc.h' include. (struct arc_relocation_data): Add symbol_name. (arc_special_overflow_checks): New function. (arc_do_relocation): Use arc_special_overflow_checks, reindent as required, add an extra comment. (elf_arc_relocate_section): Setup symbol_name in reloc_data. gas/ChangeLog: * testsuite/gas/arc/nps400-3.d: New file. * testsuite/gas/arc/nps400-3.s: New file. include/ChangeLog: * elf/arc-reloc.def: Add ARC_NPS_CMEM16 reloc. * opcode/arc.h (NPS_CMEM_HIGH_VALUE): Define. ld/ChangeLog: * testsuite/ld-arc/arc.exp: New file. * testsuite/ld-arc/nps-1.s: New file. * testsuite/ld-arc/nps-1a.d: New file. * testsuite/ld-arc/nps-1b.d: New file. * testsuite/ld-arc/nps-1b.err: New file. opcodes/ChangeLog: * arc-nps400-tbl.h: Add xldb, xldw, xld, xstb, xstw, and xst instructions. * arc-opc.c (insert_nps_cmem_uimm16): New function. (extract_nps_cmem_uimm16): New function. (arc_operands): Add NPS_XLDST_UIMM16 operand.
2016-04-14bfd/arc: Rename enum entries to avoid conflictsAndrew Burgess2-17/+25
In bfd/elf32-arc.c an enum is created that contains entries with generic names like 'NONE' and 'OFF'. This has been fine for now, but I had a need to include opcode/arc.h into bfd/elf32-arc.c. Unfortunately opcode/arc.h includes a different enum with identical generic names. Given that changing the enum in the header file could mean wide-ranging changes, while changing the enum in the .c file is limited to only changing the one file, I've added a prefix to the enum in the .c file. This commit does not add the new include, that will come later. There should be no functional change with this commit. bfd/ChangeLog: * elf32-arc.c (tls_got_entries): Add 'TLS_GOT_' prefix to all entries. (elf_arc_relocate_section): Update enum uses. (elf_arc_check_relocs): Likewise. (elf_arc_finish_dynamic_symbol): Likewise.
2016-04-14Replace "link" with "sh_link"H.J. Lu2-10/+17
On Linux/x86, GCC 4.2 issues a warning: bfd/elf.c: In function ‘_bfd_elf_copy_private_bfd_data’: bfd/elf.c:1334: warning: declaration of ‘link’ shadows a global declaration /usr/include/unistd.h:757: warning: shadowed declaration is here make[6]: *** [elf.lo] Error 1 Replace "link" with "sh_link" fixes it. * elf.c (_bfd_elf_copy_private_bfd_data): Replace "link" with "sh_link".
2016-04-14Fix copying Solaris binaries with objcopy.Nick Clifton8-73/+363
PR target/19938 bfd * elf-bbfd.h (struct elf_backend_data): New field: elf_strtab_flags. New field: elf_backend_set_special_section_info_and_link * elfxx-target.h (elf_backend_strtab_flags): Define if not already defined. (elf_backend_set_special_section_info_and_link): Define if not already defined. (elfNN_bed): Use elf_backend_set_special_section_info_and_link and elf_backend_strtab_flags macros to initialise fields in structure. * elf.c (_bfd_elf_make_section_from_shdr): Check for SHF_STRINGS being set even if SHF_MERGE is not set. (elf_fake_sections): Likewise. (section_match): New function. Matches two ELF sections based upon fixed characteristics. (find_link): New function. Locates a section in a BFD that matches a section in a different BFD. (_bfd_elf_copy_private_bfd_data): Copy the sh_info and sh_link fields of reserved sections. (bfd_elf_compute_section_file_positions): Set the flags for the .shstrtab section based upon the elf_strtab_flags field in the elf_backend_data structure. (swap_out_syms): Likewise for the .strtab section. * elflink.c (bfd_elf_final_link): Set the flags for the .strtab section based upon the elf_strtab_flags field in the elf_backend_data structure. * elf32-i386.c (elf32_i386_set_special_info_link): New function. (elf_backend_strtab_flags): Set to SHF_STRINGS for Solaris targets. (elf_backend_set_special_section_info_and_link): Define for Solaris targets. * elf32-sparc.c: Likewise. * elf64-x86-64.c: Likewise. binutils* testsuite/binutils-all/i386/compressed-1b.d: Allow for the string sections possibly having the SHF_STRINGS flag bit set. * testsuite/binutils-all/i386/compressed-1c.d: Likewise. * testsuite/binutils-all/readelf.s: Likewise. * testsuite/binutils-all/readelf.s-64: Likewise. * testsuite/binutils-all/x86-64/compressed-1b.d: Likewise. * testsuite/binutils-all/x86-64/compressed-1c.d: Likewise. gas * testsuite/gas/i386/ilp32/x86-64-unwind.d: Allow for the string sections possibly having the SHF_STRINGS flag bit set. * testsuite/gas/i386/x86-64-unwind.d: Likewise.