aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2015-03-11[AArch64][2.25] Backport support for Cortex-A72Matthew Wahab3-0/+8
2015-03-11 Matthew Wahab <matthew.wahab@arm.com> gas/ * config/tc-aarch64.c: Add support for Cortex-A72. * doc/c-aarch64.texi (-mcpu=): Add "cortex-a72".
2015-03-11[ARM][2.25] Backport support for Cortex-A72Matthew Wahab2-0/+6
2015-03-11 Matthew Wahab <matthew.wahab@arm.com> gas/ * config/tc-arm.c: Add support for Cortex-A72.
2015-03-11[ARM] Backport "Skip private symbol when doing objdump"Jiong Wang5-2/+51
2015-03-11 Jiong Wang <jiong.wang@arm.com> opcodes/ * arm-dis.c (arm_symbol_is_valid): Skip ARM private symbols. binutils/testsuite/ * binutils-all/arm/rvct_symbol.s: New testcase. * binutils-all/arm/objdump.exp: Run it.
2015-03-11Automatic date update in version.inGDB Administrator1-1/+1
2015-03-10Automatic date update in version.inGDB Administrator1-1/+1
2015-03-09Automatic date update in version.inGDB Administrator1-1/+1
2015-03-08Automatic date update in version.inGDB Administrator1-1/+1
2015-03-07Automatic date update in version.inGDB Administrator1-1/+1
2015-03-06Add extern_protected_data and set it for x86H.J. Lu21-8/+118
With copy relocation, address of protected data defined in the shared library may be external. This patch adds extern_protected_data and changes _bfd_elf_symbol_refs_local_p to return false for protected data if extern_protected_data is true. Backport from master: bfd/ PR ld/pr15228 PR ld/pr17709 * elf-bfd.h (elf_backend_data): Add extern_protected_data. * elf32-i386.c (elf_backend_extern_protected_data): New. Defined to 1. * elf64-x86-64.c (elf_backend_extern_protected_data): Likewise. * elflink.c (_bfd_elf_adjust_dynamic_copy): Don't error on copy relocs against protected symbols if extern_protected_data is true. (_bfd_elf_symbol_refs_local_p): Don't return true on protected non-function symbols if extern_protected_data is true. * elfxx-target.h (elf_backend_extern_protected_data): New. Default to 0. (elfNN_bed): Initialize extern_protected_data with elf_backend_extern_protected_data. ld/testsuite/ PR ld/pr15228 PR ld/pr17709 * ld-i386/i386.exp (i386tests): Add a test for PR ld/17709. * ld-i386/pr17709-nacl.rd: New file. * ld-i386/pr17709.rd: Likewise. * ld-i386/pr17709a.s: Likewise. * ld-i386/pr17709b.s: Likewise. * ld-i386/protected3.d: Updated. * ld-i386/protected3.s: Likewise. * ld-x86-64/pr17709-nacl.rd: New file. * ld-x86-64/pr17709.rd: Likewise. * ld-x86-64/pr17709a.s: Likewise. * ld-x86-64/pr17709b.s: Likewise. * ld-x86-64/protected3.d: Updated. * ld-x86-64/protected3.s: Likewise. * ld-x86-64/x86-64.exp (x86_64tests): Add a test for PR ld/17709.
2015-03-06Automatic date update in version.inGDB Administrator1-1/+1
2015-03-05Automatic date update in version.inGDB Administrator1-1/+1
2015-03-04Automatic date update in version.inGDB Administrator1-1/+1
2015-03-03Automatic date update in version.inGDB Administrator1-1/+1
2015-03-02Automatic date update in version.inGDB Administrator1-1/+1
2015-03-01Automatic date update in version.inGDB Administrator1-1/+1
2015-02-28Automatic date update in version.inGDB Administrator1-1/+1
2015-02-27Automatic date update in version.inGDB Administrator1-1/+1
2015-02-26Automatic date update in version.inGDB Administrator1-1/+1
2015-02-25Automatic date update in version.inGDB Administrator1-1/+1
2015-02-24Automatic date update in version.inGDB Administrator1-1/+1
2015-02-23Automatic date update in version.inGDB Administrator1-1/+1
2015-02-22Set GOLD_DEFAULT_SIZE to 32 for x32H.J. Lu3-0/+10
Cherry-pick from master: * configure.ac (default_size): Set to 32 for x32. * configure: Regenerated.
2015-02-22Automatic date update in version.inGDB Administrator1-1/+1
2015-02-21Automatic date update in version.inGDB Administrator1-1/+1
2015-02-20Automatic date update in version.inGDB Administrator1-1/+1
2015-02-19Automatic date update in version.inGDB Administrator1-1/+1
2015-02-18Automatic date update in version.inGDB Administrator1-1/+1
2015-02-17Automatic date update in version.inGDB Administrator1-1/+1
2015-02-16Automatic date update in version.inGDB Administrator1-1/+1
2015-02-15Automatic date update in version.inGDB Administrator1-1/+1
2015-02-14Automatic date update in version.inGDB Administrator1-1/+1
2015-02-13Automatic date update in version.inGDB Administrator1-1/+1
2015-02-12Automatic date update in version.inGDB Administrator1-1/+1
2015-02-11Don't segfault or assert on NULL tls_secAlan Modra4-22/+50
Real code won't hit these, but it's possible to contrive a testcase.. * elf32-ppc.c (ppc_elf_relocate_section): Don't segfault on NULL tls_sec. * elf64-ppc.c (ppc64_elf_relocate_section): Likewise. * elflink.c (elf_link_output_extsym): Don't assert on NULL tls_sec.
2015-02-11Correct GOLD PowerPC64 local-dynamic TLS linker optimizationAlan Modra2-6/+14
Similar to b86ac8e3 * powerpc.cc (Target_powerpc::Relocate::relocate): Correct GOT_TLSLD and GOT_TLSGD to LE optimization.
2015-02-11Correct PowerPC64 local-dynamic TLS linker optimizationAlan Modra9-9/+211
The linker hardcoded r3 into a local-dynamic to local-exec TLS optimization sequence. This is normally the case since r3 is required as a parameter to (the optimized out) __tls_get_addr call. However, it is possible for a compiler, LLVM in this case, to set up the parameter value in another register then copy it to r3 before the call. When fixing this problem, I noticed that ppc32 had another bug when optimizing away one of the TLS insns to a nop. The patch also tidies a mask used by global-dynamic to initial-exec TLS optimization, to just select the fields needed. Leaving the offset in the instruction wasn't a bug since it will be overwritten anyway. bfd/ * elf64-ppc.c (ppc64_elf_relocate_section): Correct GOT_TLSLD optimization. Tidy mask for GOT_TLSGD optimization. * elf32-ppc.c (ppc_elf_relocate_section): Likewise. Correct location of nop zapping high insn too. ld/testsuite/ * ld-powerpc/tlsld.d, * ld-powerpc/tlsld.s: New test. * ld-powerpc/tlsld32.d, * ld-powerpc/tlsld32.s: New test. * ld-powerpc/powerpc.exp: Run them.
2015-02-11[GOLD] Correct powerpc64 ifunc plt entry testAlan Modra2-4/+9
Found when attempting to build an ELFv2 Linux kernel. We don't generally need a plt entry for ELFv2 got relocs, only on ifunc, just like ppc32. * powerpc.cc (Target_powerpc::Scan::local <got relocs>): Correct condition for need of ifunc plt entry. (Target_powerpc::Scan::global <got relocs>): Likewise.
2015-02-11ld: Update expected test results for 32-bit hosts.Andrew Burgess3-11/+15
Tests that I added in commit c05b575a8dfabab6af5d8586d1a5c0c67f819ac2 fails on 32-bit hosts due to differences in whitespace. This patch updates the expected output patterns to be more accepting of differences in whitespace, the tests should now pass. ld/testsuite/ChangeLog: * ld-scripts/provide-4-map.d: Update expected output. * ld-scripts/provide-5-map.d: Likewise.
2015-02-11ld: Don't evaluate unneeded PROVIDE expressions.Andrew Burgess11-2/+93
When creating a linker mapfile (using -Map=MAPFILE), we previously would always try to evaluate the expression from a PROVIDE statement. However, this is not always safe, consider: PROVIDE (foo = 0x10); PROVIDE (bar = foo); In this example, if neither 'foo' or 'bar' is needed, then while generating the linker mapfile evaluating the expression for 'foo' is harmless (just the value 0x10). However, evaluating the expression for 'bar' requires the symbol 'foo', which is undefined. This used to cause a fatal error. This patch changes the behaviour, so that when the destination of the PROVIDE is not defined (that is the PROVIDE is not going to provide anything) the expression is not evaluated, and instead a special string is displayed to indicate that the linker is discarding the PROVIDE statement. This change not only fixes the spurious undefined symbol error, but also means that a user can now tell if a PROVIDE statement has provided anything by inspecting the linker mapfile, something that could not be done before. ld/ChangeLog: * ldlang.c (print_assignment): Only evaluate the expression for a PROVIDE'd assignment when the destination is being defined. Display a special message for PROVIDE'd symbols that are not being provided. ld/testsuite/ChangeLog: * ld-scripts/provide-4.d: New file. * ld-scripts/provide-4-map.d: New file. * ld-scripts/provide-4.t: New file. * ld-scripts/provide-5.d: New file. * ld-scripts/provide-5.s: New file. * ld-scripts/provide-5-map.d: New file. * ld-scripts/provide-5.t: New file. * ld-scripts/provide.exp: Run the provide-4.d and provide-5.d tests.
2015-02-11ld/testing: run_dump_test can now check linker mapfiles.Andrew Burgess4-9/+41
Add a new option 'map' to the ld run_dump_test mechanism. When the 'map' option is given run_dump_test will ensure that there is a -Map=MAPFILE present in the linker command line, adding one if needed. The MAPFILE is then compared with the file passed to the new 'map' option using the regexp_diff function. This should make it slightly easier to write tests that check the linker mapfile output. The only test I found that already compares mapfile content is updated to use the new mechanism. ld/testsuite/ChangeLog: * ld-scripts/overlay-size.d: Add 'map' option. * ld-scripts/overlay-size.exp: Remove manual check of mapfile. * lib/ld-lib.exp (run_dump_test): Add support for new 'map' option, checking linker mapfile output.
2015-02-11Fix garbage collection of common symbols for powerpc64Alan Modra2-1/+6
I forgot powerpc64 has its own gc_mark_dynamic_ref. PR ld/17615 * elf64-ppc.c (ppc64_elf_gc_mark_dynamic_ref): Don't drop ELF_COMMON_DEF syms.
2015-02-11Fix garbage collection of common symbolsAlan Modra16-37/+61
Running lang_common before garbage collection means slightly less work in garbage collection code, since common symbols should no longer appear there. It does have the side effect of keeping linker script symbols (at least those defined outside of sections) global too, hence some testsuite churn. bfd/ PR 17165 * elf-bfd.h (ELF_COMMON_DEF): Note that this might be true for linker script assignments too. * elflink.c (elf_gc_sweep_symbol): Don't drop ELF_COMMON_DEF syms. (bfd_elf_gc_mark_dynamic_ref_symbol): Similarly. ld/ PR 17165 * ldlang.c (lang_process): Run lang_common before lang_gc_sections. ld/testsuite/ * ld-gc/pr14265.d, * ld-cris/tls-gc-68.d, * ld-cris/tls-gc-69.d, * ld-cris/tls-gc-70.d, * ld-cris/tls-gc-71.d, * ld-cris/tls-gc-75.d, * ld-cris/tls-gc-76.d, * ld-cris/tls-gc-79.d, * ld-mmix/bpo-10.d, * ld-mmix/bpo-11.d: Update.
2015-02-11Omit section dynsyms for any linker created sectionAlan Modra2-11/+7
This is a simplification, and fixes a testcase I had where an empty powerpc64 .branch_lt section was chosen for the data_index_section dynamic symbol and thus wasn't removed. * elflink.c (_bfd_elf_link_omit_section_dynsym): Return true for any output section matching a linker created dynobj section.
2015-02-11Fix ARM fail of gap testAlan Modra2-44/+54
ld-elf/gap test was failing due to the ARM backend attempting to output arch symbols when ld -s (strip all symbols) is in force. This patch stops that happening and tidies the code a little. PR 17842 * elflink.c (elf_link_output_sym): Assert elf_onesymtab set. (bfd_elf_final_link): Always create a symbol table when emit_relocs. Don't assign symtab file position unless symbols will be output. Merge blocks with condition in common. Don't call elf_backend_output_arch_local_syms or elf_backend_output_arch_syms unless other symbols are output. Move assignment of symtab_shndx file position. Localize variable.
2015-02-11Fix build without makeinfo from release binutils tarAlan Modra3-4/+64
PR 17817 * Makefile.am (aoutx.stamp): cp -p $srcdir/aoutx.texi to keep timestamps so that makeinfo need not be installed. (archive.stamp, archures.stamp, bfdt.stamp, cache.stamp, coffcode.stamp, core.stamp, elf.stamp, elfcode.stamp, mmo.stamp, format.stamp, libbfd.stamp, bfdio.stamp, bfdwin.stamp, opncls.stamp, reloc.stamp, section.stamp, syms.stamp, targets.stamp, init.stamp, hash.stamp, linker.stamp): Similarly. (bfdver.texi): Use test rather than [ ] in commands. * Makefile.in: Regenerate.
2015-02-11Assorted compiler warning fixesAlan Modra5-5/+15
The C standard doesn't guarantee a function pointer can be cast to void* and vice versa. binutils/ * prdbg.c (print_debugging_info): Don't use void* for function pointer param. * budbg.h (print_debugging_info): Update prototype. gas/ * read.c (s_altmacro, s_reloc): Make definition static.
2015-02-11Delete unnecessary code copying SHF_SH5_ISA32 flagAlan Modra5-21/+30
Since 2006, commit d270463e9, _bfd_elf_copy_private_section_data has copied over SHF_MASKOS and SHF_MASKPROC flags. That makes the buggy code in sh_elf64_copy_private_data_internal redundant. bfd/ PR 17755 * elf64-sh64.c (sh_elf64_copy_private_data_internal): Delete code copying SHF_SH5_ISA32. binutils/testsuite/ * binutils-all/strip-11.d: New test. * binutils-all/objcopy.exp: Run it.
2015-02-11Don't create .eh_frame_hdr on shared lib bfdAlan Modra2-1/+9
If no object files have .eh_frame, but some shared library does, then ld creates a .eh_frame_hdr section using the shared library bfd. This is silly since shared library .eh_frame sections don't contribute to the output .eh_frame and thus no .eh_frame_hdr is needed. Also, the bfd section list and count is cleared for shared libraries, and a zero section count used as a flag in lang_check to omit a call to bfd_merge_private_bfd_data for shared libraries. If we create a section on a shared lib bfd then ld will wrongly attempt to merge the shared library private bfd data. PR 17742 * ld/emultempl/elf32.em (gld${EMULATION_NAME}_after_open): Exclude shared libraries in loop looking for .eh_frame sections. Similarly for build-id loop.
2015-02-11Use a symbol flag bit to mark linker defined symbolsAlan Modra14-3/+73
Trying to use the SEC_LINKER_CREATED section flag to determine whether a symbol is linker defined fails to work on targets like alpha that define special SEC_COMMON sections. These might contain symbols that originated in an object file. include/ * bfdlink.h (struct bfd_link_hash_entry): Comment non_ir_ref. Add linker_def. bfd/ * elflink.c (_bfd_elf_define_linkage_sym): Set linker_def. * linker.c (_bfd_generic_link_add_one_symbol): Clear linker_def for CDEF, DEF, DEFW, COM. ld/ * ldexp.c (exp_fold_tree_1 <etree_provide>): Test linker_def. ld/testsuite/ * ld-powerpc/sdabase.s, * ld-powerpc/sdabase.t, * ld-powerpc/sdabase.d: New test. * ld-powerpc/sdabase2.t, * ld-powerpc/sdabase2.d: New test. * ld-powerpc/powerpc.exp: Run them.
2015-02-11Don't PROVIDE over top of common symbolsAlan Modra5-6/+28
This: int end[100000]; int main(void) { end[99999] = 0; return 0; } should not segfault. ld/ * ldexp.c (exp_fold_tree_1 <etree_provide>): Leave bfd_link_hash_common symbols alone. ld/testsuite/ * ld-elf/endsym.s, *ld-elf/endsym.d: New test.