aboutsummaryrefslogtreecommitdiff
path: root/ld
AgeCommit message (Collapse)AuthorFilesLines
2016-04-09Adjust default memory size and stack base address for SH simulator.Oleg Endo2-2/+6
ld/ChangeLog: * sh/interp.c (sim_memory_size): Default init to 30. (parse_and_set_memory_size): Adjust upper bound to 31. sim/ChangeLog: * sh/interp.c (sim_memory_size): Default init to 30. (parse_and_set_memory_size): Adjust upper bound to 31.
2016-04-08PR18452, ld allows overlapping sectionsAlan Modra2-19/+34
PR 18452 * ldlang.c (maybe_overlays): Delete. (lang_size_sections_1): Remove code setting maybe_overlays. (lang_check_section_addresses): Instead detect overlays by exact match of section VMAs here. Fix memory leak.
2016-04-08Show sizes in linker map in target machine address unitsDan Gisselquist2-4/+15
* ldlang.c (print_output_section_statement): Show minfo size in target machine address units. (print_reloc_statement): Likewise. (print_padding_statement): Likewise. (print_data_statement): Likewise. Ensure minimum print_dot increment of one address unit.
2016-04-07ld/arc: Make little endian default choice for linker scriptsAndrew Burgess2-3/+8
When building with --enable-targets=all the target string is not set to something that matches the pattern arc*-*, and so the script used to decide if we should build big or little endian linker script currently exits with an error. This commit makes little endian linker script be the default, which will be used when building for all targets, this matches the behaviour from before I made the endianness switchable, when we only ever built little endian linker scripts anyway. ld/ChangeLog: * emulparams/arc-endianness.sh: Make little endian default choice.
2016-04-07Fix typo in name of MSP430 attribute section.Nick Clifton3-2/+8
2016-04-05ld/arc: Fix linker for big-endian arc targetsAndrew Burgess28-93/+65
This aims to bring the linker for big-endian arc targets into line with the linker for (the default) little endian arc targets. The bulk of the changes are to extend the target pattern in the test files from 'arc-*...' to 'arc*-*...' and so match both big and little endian arc targets. In the ld/emulparams/ directory the existing scripts checked for a variable ARC_ENDIAN to switch between big and little endian targets, however, this variable is never set up. So, a new script snippet is introduced which sets up ARC_ENDIAN based on the value of target, this snippet is then included from all of the existing arc scripts. The existing big-endian variants of all the scripts, which existed, but were never used, are deleted in this commit. ld/ChangeLog: * emulparams/arc-endianness.sh: New file. * emulparams/arcebelf.sh: Deleted. * emulparams/arcebelf_prof.sh: Deleted. * emulparams/arceblinux.sh: Deleted. * emulparams/arceblinux_prof.sh: Deleted. * emulparams/arcelf.sh: Include arc-endinness.sh. * emulparams/arcelf_prof.sh: Include arc-endinness.sh. * emulparams/arclinux.sh: Include arc-endinness.sh. * emulparams/arclinux_prof.sh: Include arc-endinness.sh. * emulparams/arcv2elf.sh: Include arc-endinness.sh. * emulparams/arcv2elfx.sh: Include arc-endinness.sh. * testsuite/ld-elf/compressed1d.d: Update pattern for big and little endian arc targets. * testsuite/ld-elf/eh-frame-hdr.d: Likewise. * testsuite/ld-elf/group1.d: Likewise. * testsuite/ld-elf/group3b.d: Likewise. * testsuite/ld-elf/group8a.d: Likewise. * testsuite/ld-elf/group8b.d: Likewise. * testsuite/ld-elf/group9a.d: Likewise. * testsuite/ld-elf/group9b.d: Likewise. * testsuite/ld-elf/linkonce2.d: Likewise. * testsuite/ld-elf/pr12851.d: Likewise. * testsuite/ld-elf/pr12975.d: Likewise. * testsuite/ld-elf/pr13177.d: Likewise. * testsuite/ld-elf/pr13195.d: Likewise. * testsuite/ld-elf/pr17615.d: Likewise. * testsuite/ld-elf/pr19162.d: Likewise. * testsuite/ld-elf/sec64k.exp: Likewise. * testsuite/lib/ld-lib.exp: Likewise.
2016-04-05ELF/LD: Avoid producing hidden and internal dynamic symbolsMaciej W. Rozycki17-10/+166
Always turn hidden and internal symbols which have a dynamic index into local ones. This is required by the the ELF gABI[1]: "A hidden symbol contained in a relocatable object must be either removed or converted to STB_LOCAL binding by the link-editor when the relocatable object is included in an executable file or shared object." "An internal symbol contained in a relocatable object must be either removed or converted to STB_LOCAL binding by the link-editor when the relocatable object is included in an executable file or shared object." The ELF linker usually respects this requirement, however in the case where a dynamic symbol has been preallocated due to a reference of the default export class aka visibility from the object being linked, and then merged with a hidden or internal symbol definition from within the same object, then the original export class is carried over to the output dynamic symbol table, because while merging the generic ELF linker only converts affected dynamic symbols to local when they are defined or referenced by the object being linked and a dynamic object involved in the link both at a time. The dynamic symbol produced confuses then the dynamic loader at the run time -- the hidden or internal export class is ignored and the symbol follows preemption rules as with the default export class. In the MIPS target it happens when `mips_elf_record_global_got_symbol' creates a dynamic symbol when a call relocation is encountered. Additionally if the undefined symbol referred by such a relocation does specify the intended export class, then a local dynamic symbol is created instead, which is harmless and allowed, but useless. Normally no local dynamic symbols are created, except for a single dummy one at the beginning. Correct the problem by removing the extra check for a dynamic symbol being defined or referenced by the object being linked and a dynamic object involved in the link both at a time. The test cases included cover the internal and hidden symbol cases, as well as a protected symbol for a reference, the handling of which is unchanged by this fix. Both cases described above are covered, that is where an internal or hidden dynamic symbol is produced and where a local one is. NB this change affects CRIS results where some symbols in the static table produced in a final link are now converted from STV_HIDDEN to STB_LOCAL. This happens whenever the `elf_backend_hide_symbol' handler is called, so the affected symbols must have been chosen for entering into the dynamic symbol table, except in these test cases no such symbol table is produced. In fully linked binaries the static symbol table is only used for debugging though, so such a change is fine. References: [1] "System V Application Binary Interface - DRAFT - 24 April 2001", The Santa Cruz Operation, Inc., "Symbol Table", <http://www.sco.com/developers/gabi/2001-04-24/ch4.symtab.html> bfd/ PR ld/19908 * elflink.c (elf_link_add_object_symbols): Always turn hidden and internal symbols which have a dynamic index into local ones. ld/ PR ld/19908 * testsuite/ld-cris/tls-e-20.d: Adjust for hidden symbol handling fix. * testsuite/ld-cris/tls-e-20a.d: Likewise. * testsuite/ld-cris/tls-e-21.d: Likewise. * testsuite/ld-cris/tls-e-23.d: Likewise. * testsuite/ld-cris/tls-e-80.d: Likewise. * testsuite/ld-cris/tls-gd-3h.d: Likewise. * testsuite/ld-cris/tls-leie-19.d: Likewise. * testsuite/ld-mips-elf/export-class-ref-lib.sd: New test. * testsuite/ld-mips-elf/export-hidden-ref.sd: New test. * testsuite/ld-mips-elf/export-internal-ref.sd: New test. * testsuite/ld-mips-elf/export-protected-ref.sd: New test. * testsuite/ld-mips-elf/export-class-ref-f0.s: New test source. * testsuite/ld-mips-elf/export-class-ref-f1.s: New test source. * testsuite/ld-mips-elf/export-class-ref-f2.s: New test source. * testsuite/ld-mips-elf/mips-elf.exp: Run the new tests.
2016-04-05[ARC] Fix ld testsuite failures.Claudiu Zissulescu15-12/+38
ld/ 016-04-05 Cupertino Miranda <cmiranda@synopsys.com> * testsuite/ld-discard/extern.d: Removed xfail for ARC. * testsuite/ld-discard/start.d: Likewise. * testsuite/ld-discard/static.d: Likewise. * testsuite/ld-elf/group1.d: Likewise. * testsuite/ld-elf/group3b.d: Likewise. * testsuite/ld-elf/orphan-region.d: Likewise. * testsuite/ld-elf/orphan.d: Likewise. * testsuite/ld-elf/orphan3.d: Likewise. * testsuite/ld-elf/pr349.d: Likewise. * testsuite/ld-elf/warn1.d: Likewise. * testsuite/ld-elf/warn2.d: Likewise. * testsuite/ld-elf/warn3.d: Likewise. * testsuite/ld-scripts/crossref.exp: Add __SDATA_BEGIN__ symbol through linker flags. * testsuite/ld-srec/srec.exp: Set as xfail.
2016-04-04Add missing pr19827-nacl.rd for i386/x86-64 NaClH.J. Lu3-0/+16
PR ld/19827 * testsuite/ld-i386/pr19827-nacl.rd: New file. * testsuite/ld-x86-64/pr19827-nacl.rd: Likewise.
2016-04-04More fixes for COFF/PE lanker garbage collection.Nick Clifton1-0/+10
PR 19803 * emultempl/pe.em (change_undef): New function. Encapsulates duplicated code in pe_fixup_stdcalls and adds the newly defined sym to the gc root list. (pe_fixup_stdcall): Use the new function. * pe-dll.c (process_def_file_and_drectve); Add alias of exported symbol to gc root list.
2016-04-04Ignore DWARF debug information with a version of 0 - assume that it is padding.Nick Clifton2-47/+48
PR 19872 bfd * dwarf2.c (parse_comp_unit): Skip warning about unrecognised version number if the version is zero. bin * dwarf.c (display_debug_aranges): Skip warning about unrecognised version number if the version is zero.
2016-03-31enable -Wwrite-strings for gasTrevor Saunders1-2/+18
We add a new AC_SUBST to warning.m4 so that the test if the warning is supported is centralized, but the warning can be enabled per directory. binutils/ChangeLog: 2016-03-31 Trevor Saunders <tbsaunde+binutils@tbsaunde.org> * configure: Regenerate. gprof/ChangeLog: 2016-03-31 Trevor Saunders <tbsaunde+binutils@tbsaunde.org> * configure: Regenerate. ld/ChangeLog: 2016-03-31 Trevor Saunders <tbsaunde+binutils@tbsaunde.org> * configure: Regenerate. opcodes/ChangeLog: 2016-03-31 Trevor Saunders <tbsaunde+binutils@tbsaunde.org> * configure: Regenerate. bfd/ChangeLog: 2016-03-31 Trevor Saunders <tbsaunde+binutils@tbsaunde.org> * configure: Regenerate. * warning.m4: Add WARN_WRITE_STRINGS AC_SUBST. gold/ChangeLog: 2016-03-31 Trevor Saunders <tbsaunde+binutils@tbsaunde.org> * configure: Regenerate. gas/ChangeLog: 2016-03-31 Trevor Saunders <tbsaunde+binutils@tbsaunde.org> * Makefile.am: Add WARN_WRITE_STRINGS to WARN_CFLAGS. * Makefile.in: Regenerate. * configure: Likewise.
2016-03-31More cases of missing TO_ADDR in ldlang.cAlan Modra2-14/+21
and one extraneous occurrence. * ldlang.c (TO_ADDR, TO_SIZE, opb_shift): Move earlier in file. (lang_insert_orphan): Use TO_ADDR in __stop sym calculation. (print_input_section): Don't use TO_ADDR when printing section size. (lang_size_sections_1): Use TO_ADDR in overlay lma calculation. (lang_size_sections): Use TO_ADDR in relro end calculation.
2016-03-30ld/testing: Fix error and warning checks in run_dump_testAndrew Burgess4-5/+12
The options warning_output and error_output to the run_dump_test function were incorrectly checking the return value from the regexp_diff function, and so, as a result failing tests were showing as a pass. Fixed in this commit. ld/ChangeLog: * testsuite/lib/ld-lib.exp (run_dump_test): Fix check of return value from regexp_diff. * testsuite/ld-elf/orphan-5.l: Fix expected output. * testsuite/ld-elf/orphan-6.l: Likewise.
2016-03-30PR18452, ld allows overlapping sectionsAlan Modra3-46/+116
PR 18452 * ldlang.c (maybe_overlays): New static var. (lang_size_sections_1): Set it here. (struct check_sec): New. (sort_sections_by_lma): Adjust for array of structs. (sort_sections_by_vma): New function. (lang_check_section_addresses): Check both LMA and VMA for overlap. * testsuite/ld-scripts/rgn-over7.d: Adjust.
2016-03-30Missing TO_ADDRAlan Modra2-1/+6
* ldlang.c (lang_size_sections_1): Correct code detecting a backward non-overlapping move.
2016-03-30Use consistent test for .tbss sections in ldlang.cAlan Modra2-12/+15
Some places tested SEC_LOAD, others SEC_HAS_CONTENTS. * ldlang.c (IS_TBSS): New macro, extracted from.. (IGNORE_SECTION): ..here. (lang_size_sections_1): Use IS_TBSS and IGNORE_SECTION. (lang_size_sections, lang_do_assignments_1): Use IS_TBSS.
2016-03-22Improve COFF/PE linker garbage collection by preventing the removal of ↵Nick Clifton6-34/+47
sections containing exported symbols. PR ld/19803 * ldlang.c (lang_add_gc_name): New function. Adds the provided symbol name to the list of gc symbols. (lang_process): Call lang_add_gc_name with entry_symbol_default if entry_symbol.name is NULL. Use lang_add_gc_name to add the init and fini function names. * pe-dll.c (process_def_file_and_drectve): Add exported names to the gc symbol list. * testsuite/ld-pe/pr19803.s: Do not export _testval symbol. * testsuite/ld-pe/pr19803.d: Tweak expected output.
2016-03-22Add -Wstack-usage to the gcc warning flags list, but only if using a ↵Nick Clifton2-1/+23
sufficiently recent version of gcc. bfd * warning.m4 (GCC_WARN_CFLAGS): Only add -Wstack-usage if using a sufficiently recent version of GCC. * configure: Regenerate. others * configure: Regenerate.
2016-03-21Remove use of alloca.Nick Clifton5-28/+48
bfd * warning.m4 (GCC_WARN_CFLAGS): Add -Wstack-usage=262144 * configure: Regenerate. * elf32-m68hc1x.c (elf32_m68hc11_relocate_section): Replace use of alloca with call to xmalloc. * elf32-nds32.c: Likewise. * elf64-hppa.c: Likewise. * elfxx-mips.c: Likewise. * pef.c: Likewise. * pei-x86_64.c: Likewise. * som.c: Likewise. * xsym.c: Likewise. binutils * dlltool.c: Replace use of alloca with call to xmalloc. * dllwrap.c: Likewise. * nlmconv.c: Likewise. * objdump.c: Likewise. * resrc.c: Likewise. * winduni.c: Likewise. * configure: Regenerate. gas * atof-generic.c: Replace use of alloca with call to xmalloc. * cgen.c: Likewise. * dwarf2dbg.c: Likewise. * macro.c: Likewise. * remap.c: Likewise. * stabs.c: Likewise. * symbols.c: Likewise. * config/obj-elf.c: Likewise. * config/tc-aarch64.c: Likewise. * config/tc-arc.c: Likewise. * config/tc-arm.c: Likewise. * config/tc-avr.c: Likewise. * config/tc-ia64.c: Likewise. * config/tc-mips.c: Likewise. * config/tc-msp430.c: Likewise. * config/tc-nds32.c: Likewise. * config/tc-ppc.c: Likewise. * config/tc-sh.c: Likewise. * config/tc-tic30.c: Likewise. * config/tc-tic54x.c: Likewise. * config/tc-xstormy16.c: Likewise. * config/te-vms.c: Likewise. * configure: Regenerate. ld * emultempl/msp430.em: Replace use of alloca with call to xmalloc. * plugin.c: Likewise. * pe-dll.c: Likewise.
2016-03-18Ensure that the .rdata_pseudo_runtime_reloc sections are not discarded by ↵Awson3-2/+9
gabage collection. PR 19531 * scripttempl/pe.sc (.rdata_runtime_pseudo_reloc): Always KEEP this section. * scripttempl/pep.sc (.rdata_runtime_pseudo_reloc): Likewise.
2016-03-18Fix possible failure in the AVR linker tests.Senthil Kumar Selvaraj9-5/+114
* ld-avr/gc-section-debugline.d: Relax regex check for CU.
2016-03-15Bind defined symbol locally in PIEH.J. Lu9-0/+58
Symbols defined in PIE should be bound locally, the same as -shared -Bsymbolic. bfd/ PR ld/19827 * elf32-i386.c (elf_i386_check_relocs): Bind defined symbol locally in PIE. (elf_i386_relocate_section): Likewise. * elf64-x86-64.c (elf_x86_64_check_relocs): Likewise. (elf_x86_64_relocate_section): Likewise. ld/ PR ld/19827 * testsuite/ld-i386/i386.exp: Run PR ld/19827 tests. * testsuite/ld-x86-64/x86-64.exp: Likewise. * testsuite/ld-i386/pr19827.rd: New file. * testsuite/ld-i386/pr19827a.S: Likewise. * testsuite/ld-i386/pr19827b.S: Likewise. * testsuite/ld-x86-64/pr19827.rd: Likewise. * testsuite/ld-x86-64/pr19827a.S: Likewise. * testsuite/ld-x86-64/pr19827b.S: Likewise.
2016-03-15Add -z noreloc-overflow option to x86-64 ldH.J. Lu18-0/+141
Add -z noreloc-overflow command-line option to the x86-64 ELF linker to disable relocation overflow check. This can be used to avoid relocation overflow check if there will be no dynamic relocation overflow at run-time. bfd/ PR ld/19807 * elf64-x86-64.c (elf_x86_64_relocate_section): Check no_reloc_overflow_check to diable R_X86_64_32/R_X86_64_32S relocation overflow check. include/ PR ld/19807 * bfdlink.h (bfd_link_info): Add no_reloc_overflow_check. ld/ PR ld/19807 * Makefile.am (ELF_X86_DEPS): Add $(srcdir)/emulparams/reloc_overflow.sh. * Makefile.in: Regenerated. * NEWS: Mention -z noreloc-overflow. * ld.texinfo: Document -z noreloc-overflow. * emulparams/elf32_x86_64.sh: Source ${srcdir}/emulparams/reloc_overflow.sh. * emulparams/elf_x86_64.sh: Likewise. * emulparams/reloc_overflow.sh: New file. * testsuite/ld-x86-64/pr19807-1.s: New file. * testsuite/ld-x86-64/pr19807-1a.d: Likewise. * testsuite/ld-x86-64/pr19807-1b.d: Likewise. * testsuite/ld-x86-64/pr19807-2.s: Likewise. * testsuite/ld-x86-64/pr19807-2a.d: Likewise. * testsuite/ld-x86-64/pr19807-2b.d: Likewise. * testsuite/ld-x86-64/pr19807-2c.d: Likewise. * testsuite/ld-x86-64/pr19807-2d.d: Likewise. * testsuite/ld-x86-64/pr19807-2e.d: Likewise. * testsuite/ld-x86-64/x86-64.exp: Run PR ld/19807 tests.
2016-03-13Add more tests for PR ld/19539H.J. Lu10-0/+53
PR ld/19539 * testsuite/ld-i386/i386.exp: Run pr19539. * testsuite/ld-i386/pr19539.d: New file. * testsuite/ld-i386/pr19539.s: Likewise. * testsuite/ld-i386/pr19539.t: Likewise. * testsuite/ld-x86-64/pr19539.s: Likewise. * testsuite/ld-x86-64/pr19539.t: Likewise. * testsuite/ld-x86-64/pr19539a.d: Likewise. * testsuite/ld-x86-64/pr19539b.d: Likewise. * testsuite/ld-x86-64/x86-64.exp: Run pr19539a and pr19539b.
2016-03-10PR gas/19744: Thumb-1 pcrop relocations don't work on Thumb-2 targetsMickael Guene4-0/+99
gas/ * config/tc-arm.c (do_arit): Protect against bad relocations usage. (do_mov): Likewise. (do_t_add_sub): Allow pcrop relocations for Thumb-2 targets. (do_t_mov_cmp): Likewise. (do_t_add_sub): Protect against bad relocations usage. (do_t_mov_cmp): Likewise. gas/testsuite/ * gas/arm/adds-thumb1-reloc-local-armv7-m.s: New. * gas/arm/adds-thumb1-reloc-local-armv7-m.d: New. * gas/arm/movs-thumb1-reloc-local-armv7-m.s: New. * gas/arm/movs-thumb1-reloc-local-armv7-m.d: New. ld/ * testsuite/ld-arm/arm-elf.exp: New tests. * testsuite/ld-arm/thumb1-adds-armv7-m.s: New. * testsuite/ld-arm/thumb1-movs-armv7-m.s: New.
2016-03-10Remove bogus LONG(0) from MSP430 built in linker script.Nick Clifton2-1/+4
ld * scripttempl/elf32msp430.sc (.rodata): Remove spurious LONG(0).
2016-03-09Fix v850 bfd arch info printable namesPedro Alves3-2/+7
Currently, it's not possible to manually set some of the v850 archs in gdb: (gdb) set architecture v850<TAB> v850 (using old gcc ABI) v850-rh850 v850e v850e (using old gcc ABI) v850e1 [...] (gdb) set architecture v850 (using old gcc ABI) Ambiguous item "v850 (using old gcc ABI)". The problem is that "set architecture" is a GDB "enum command", and GDB only considers an enum value to be the string up until the first space. So writing "v850 (using old gcc ABI)" is the same as writing "v850", and then that's not an unambiguous arch printable name prefix. v850 is actually the only arch that has spaces in its printable name. One can conveniently see that with e.g.: (gdb) set max-completions unlimited (gdb) complete set architecture ... Rather than hack GDB into accepting this somehow, make v850 arch printable names more like the printable names of the other archs, and put the abi variant in the "machine" part, after a ':'. We now get: (gdb) set architecture v850<TAB> v850:old-gcc-abi v850:rh850 v850e v850e1 v850e1:old-gcc-abi v850e2 v850e2:old-gcc-abi [...] And now "set architecture v850:old-gcc-abi" works as expected. I ran the binutils/gas/ld testsuites, and found no regressions. I don't have a cross compiler handy, but I ran the gdb tests anyway, which covers at least some snoke testing. I think that the OUTPUT_ARCH in ld/scripttempl/v850.sc may have got broken with the previous 2012 change, since I hacked v850_rh850.sc to output "v850" and ld failed to grok it. I think it only works if the old GCC ABI is the configured v850 default ABI. That's now fixed by changing to use explicit v850:old-gcc-abi. Also, this actually "fixes" an existing GDB test, which isn't likewise expecting spaces in arch names, when GDB is configured for --target=v850: (gdb) FAIL: gdb.xml/tdesc-arch.exp: read valid architectures bfd/ChangeLog: 2016-03-09 Pedro Alves <palves@redhat.com> * cpu-v850.c (N): Append ":old-gcc-abi" instead of " (using old gcc ABI)" to printable name. * cpu-v850_rh850.c (bfd_v850_rh850_arch): Use "v850:rh850" instead of "v850-rh850" as printable name. ld/ChangeLog: 2016-03-09 Pedro Alves <palves@redhat.com> * scripttempl/v850.sc: Use "v850:old-gcc-abi" as OUTPUT_ARCH. * scripttempl/v850_rh850.sc: Use "v850:rh850" as OUTPUT_ARCH.
2016-03-08Don't create dynamic sections when relocatableH.J. Lu3-0/+25
Since dynamic sections aren't applicable to relocatable file, don't create dynamic sections for -E/--dynamic-list when relocatable. bfd/ PR ld/19789 * elflink.c (elf_link_add_object_symbols): Create dynamic sections for -E/--dynamic-list only when not relocatable. ld/ PR ld/19789 * testsuite/ld-elf/pr19789.d: New file. * testsuite/ld-elf/pr19789.s: Likewise.
2016-03-08Handle local IFUNC symbols in shared objectH.J. Lu9-23/+85
Increment PLT reference count for locally defined local IFUNC symbols in shared object since STT_GNU_IFUNC symbol must go through PLT even if it is locally defined and undefined symbol may turn out to be a STT_GNU_IFUNC symbol later. bfd/ PR ld/19784 * elf32-i386.c (elf_i386_check_relocs): Increment PLT reference count for locally defined local IFUNC symbols in shared object. * elf64-x86-64.c (elf_x86_64_check_relocs): Likewise. ld/ PR ld/19784 * testsuite/ld-i386/i386.exp: Remove pr19636-2e-nacl test. * testsuite/ld-i386/pr19636-2e-nacl.d: Moved to ... * testsuite/ld-i386/pr19636-2e.d: Here. Remove notarget. * testsuite/ld-ifunc/ifunc.exp: Run PR ld/19784 tests. * testsuite/ld-ifunc/pass.out: New file. * testsuite/ld-ifunc/pr19784a.c: Likewise. * testsuite/ld-ifunc/pr19784b.c: Likewise. * testsuite/ld-ifunc/pr19784c.c: Likewise.
2016-03-08Support --as-needed in ifunc testsH.J. Lu2-6/+30
Since compiler may pass --as-needed to ld by default, link .o file before .so file in ifunc tests. PR ld/19774 * testsuite/ld-ifunc/ifunc.exp: Link tmpdir/pr18808a.o before tmpdir/libpr18808.so. Link tmpdir/pr18841a.o before tmpdir/libpr18841b.so and tmpdir/libpr18841c.so. Test --as-needed for pr18841c.
2016-03-07Support --as-needed in i386/x86-64 testsH.J. Lu3-14/+47
Since compiler may pass --as-needed to ld by default, link .o file before .so file in i386/x86-64 tests. PR ld/19774 * testsuite/ld-i386/i386.exp: Link tmpdir/pr18900.o before tmpdir/pr18900.so and test --as-needed. Link tmpdir/gotpc1.o before tmpdir/got1d.so and test --as-needed. * testsuite/ld-x86-64/x86-64.exp: Link tmpdir/pr18900.o before tmpdir/pr18900.so and test --as-needed.
2016-03-07[AArch64] Create .got section if _GLOBAL_OFFSET_TABLE_ referencedJiong Wang4-0/+16
2016-03-07 Jiong Wang <jiong.wang@arm.com> bfd/ * elfnn-aarch64.c (elfNN_aarch64_check_relocs): Always create .got section if the symbol "_GLOBAL_OFFSET_TABLE_" referenced. ld/ * testsuite/ld-aarch64/implicit_got_section_1.s: New test source file. * testsuite/ld-aarch64/implicit_got_section_1.d: New test expected result. * testsuite/ld-aarch64/aarch64-elf.exp: Run new test.
2016-03-06Link tmpdir/copyreloc-main.o before tmpdir/copyreloc-lib.soH.J. Lu3-12/+34
Since compiler may pass --as-needed to ld by default, link tmpdir/copyreloc-main.o before tmpdir/copyreloc-lib.so. * testsuite/ld-i386/i386.exp: Link tmpdir/copyreloc-main.o before tmpdir/copyreloc-lib.so and test --as-needed. * testsuite/ld-x86-64/x86-64.exp: Likewise.
2016-03-04Fix a ChangeLog entryH.J. Lu1-1/+1
2016-03-04Treat common symbol in executable as definitionH.J. Lu4-0/+60
Common symbol in executable is a definition, which overrides definition from shared objects. When linker sees a new definition from a shared object, the new dynamic definition should be overridden by the previous common symbol in executable. bfd/ PR ld/19579 * elflink.c (_bfd_elf_merge_symbol): Treat common symbol in executable as definition if the new definition comes from a shared library. ld/ PR ld/19579 * testsuite/ld-elf/pr19579a.c: New file. * testsuite/ld-elf/pr19579b.c: Likewise. * testsuite/ld-elf/shared.exp: Run PR ld/19579 test.
2016-03-02Skip ld-elf/pr19162.d for hppa-*-*H.J. Lu2-1/+6
ld-elf/pr19162.d fails for hppa-*-* since Dave Anglin's fix for PR 12376 makes the data segment always start on a page boundary. * testsuite/ld-elf/pr19162.d: Skip hppa-*-*.
2016-03-02Xfail mix_pic_and_non_pic on arm and aarch64H.J. Lu2-3/+12
* testsuite/ld-elf/shared.exp (mix_pic_and_non_pic): Add xfails. Xfail mix_pic_and_non_pic on "arm*-*-*" "aarch64*-*-*".
2016-03-02Speedup mmo and pe orphan placement for relocatable linkH.J. Lu4-36/+68
Since there is no need to place output sections in specific order for relocatable link, we can skip merging flags of other input sections. PR ld/19739 * emultempl/mmo.em (mmo_place_orphan): Don't merge flags of other input sections for relocatable link. * emultempl/pe.em (gld_${EMULATION_NAME}_place_orphan): Likewise. * emultempl/pep.em (gld_${EMULATION_NAME}_place_orphan): Likewise.
2016-03-01Update PR ld/12365 test for GCC 6H.J. Lu2-1/+16
PR ld/12365 test is to verify that linker catches the reference to undefined symbol error caused by a GCC bug. Since the GCC bug has been fixed in GCC 6, update the test to verify that there is no reference to undefined symbol in executable * testsuite/ld-plugin/lto.exp: Update PR ld/12365 test for GCC 6.
2016-03-01Skip ld-elf/pr19162.d for arc targetH.J. Lu2-0/+6
* testsuite/ld-elf/pr19162.d: Skip arc target.
2016-03-01Speedup ELF orphan placement for relocatable linkH.J. Lu1-13/+20
Since there is no need to place output sections in specific order for relocatable link, we can skip merging flags of other input sections. PR ld/19739 * ld/emultempl/elf32.em (gld${EMULATION_NAME}_place_orphan): Don't merge flags of other input sections for relocatable link.
2016-02-29Add a testcase for PR ld/19162H.J. Lu4-0/+20
PR ld/19162 * testsuite/ld-elf/pr19162.d: New file. * testsuite/ld-elf/pr19162a.s: Likwise. * testsuite/ld-elf/pr19162b.s: Likwise.
2016-02-29[ARC] Local symbols relocation cleanupClaudiu Zissulescu4-3/+9
bfd/ 2016-02-29 Cupertino Miranda <cmiranda@synopsys.com> * elf32-arc.c (elf_arc_relocate_section): Added rules to fix the relocation addend when sections get merged. gas/ 2016-02-29 Cupertino Miranda <cmiranda@synopsys.com> Claudiu Zissulescu <Claudiu.Zissulescu@synopsys.com> * config/tc-arc.c (arc_extra_reloc): Change size to 0. (tc_arc_fix_adjustable): Changed default return value to 1. * testsuite/gas/arc/j.d: Updated expected symbol * testsuite/gas/arc/jl.d: Likewise * testsuite/gas/arc/relax-avoid1.d: Likewise * testsuite/gas/arc/st.d: Likewise ld/ 2016-02-29 Cupertino Miranda <cmiranda@synopsys.com> * testsuite/ld-elf/merge.d: Removed xfail for ARC. * testsuite/ld-elf/merge2.d: Likewise. * testsuite/ld-elf/merge3.d: Likewise.
2016-02-29[ARC] General fixes.Claudiu Zissulescu2-2/+7
bfd/ 2016-02-29 Cupertino Miranda <Cupertino.Miranda@synopsys.com> * elf32-arc.c (arc_elf_final_write_processing): Add condition to the flag change. (elf_arc_relocate_section): Fixes and conditions to support PIE. Assert for code sections dynamic relocs. gas/ 2016-02-29 Claudiu Zissulescu <Claudiu.Zissulescu@synopsys.com> * config/tc-arc.c: Enable code density instructions for ARC EM. ld/ 2016-02-29 Cupertino Miranda <Cupertino.Miranda@synopsys.com> * scripttempl/arclinux.sc: Force .tdata and .tbss to always be generated.
2016-02-26Add aarch64-*-rtems* targetJoel Sherrill1-1/+2
2016-02-26Add x86_64-*-rtems* targetJoel Sherrill1-1/+2
ld/configure.tgt: Also add stanza for x86_64-*-elf.
2016-02-26[BFD][AARCH64]Fix MOVW_SABS_G(0,1,2) relocation overflow check.Renlin Li11-26/+71
For these three relocations, 17 bit signed value should be used, instead of 16 bit. The bitsize field is changed from 16 to 17, this field in aarch64 backend is used for overflow check only. bfd/ 2016-02-26 Renlin Li <renlin.li@arm.com> * elfnn-aarch64.c (elfNN_aarch64_howto_table): Fix signed overflow check for MOVW_SABS_G0, MOVW_SABS_G1, MOVW_SABS_G2. ld/ 2016-02-26 Renlin Li <renlin.li@arm.com> * testsuite/ld-aarch64/aarch64-elf.exp: Run new testcases. * testsuite/ld-aarch64/emit-relocs-270.d: Update to use new boundary. * testsuite/ld-aarch64/emit-relocs-271.d: Likewise. * testsuite/ld-aarch64/emit-relocs-272.d: Likewise. * testsuite/ld-aarch64/emit-relocs-270-overflow.d: New. * testsuite/ld-aarch64/emit-relocs-270-overflow.s: New. * testsuite/ld-aarch64/emit-relocs-271-overflow.d: New. * testsuite/ld-aarch64/emit-relocs-271-overflow.s: New. * testsuite/ld-aarch64/emit-relocs-272-overflow.d: New. * testsuite/ld-aarch64/emit-relocs-272-overflow.s: New.
2016-02-26Optimize x86 GOT32X/GOTPCRELX relocationsH.J. Lu89-54/+1116
R_386_GOT32X, R_X86_64_GOTPCRELX and R_X86_64_REX_GOTPCRELX relocations retrieve the symbol address via its GOT slot. If the symbol address is known at the link-time, we can use it directly by changing instruction encoding. Indirect branch can only be converted to PC relative direct branch. MOV can be changed to LEA or encoded differently with signed address. The subset of binary operations can be encoded only with signed address. If undefined weak symbol is resolved to zero link-time, we can use it as address. Zero addresss can't used with PC relative direct branch when PIC is true since the current PC is unknown. In 64-bit, 32-bit relocation for PC relatiave direct branch to zero may also overflow. If this optimization causes relocation overflow, --no-relax can be used to work around it. bfd/ PR ld/19609 * elf32-i386.c (elf_i386_convert_load): Convert to R_386_32 for load with locally bound symbols if PIC is false or there is no base register. Optimize branch to 0 if PIC is false. (elf_i386_relocate_section): Don't generate dynamic relocations against undefined weak symbols if PIC is false. * elf64-x86-64.c (elf_x86_64_convert_load): Disable optimization if we can't estimate relocation overflow with --no-relax. Convert to R_X86_64_32S/R_X86_64_32 for load with locally bound symbols if PIC is false. Optimize branch to 0 if PIC is false. (elf_x86_64_relocate_section): Don't generate dynamic relocations against undefined weak symbols if PIC is false. ld/ PR ld/19609 * testsuite/ld-i386/got1.dd: Updated. * testsuite/ld-i386/lea1c.d: Likewise. * testsuite/ld-i386/load1-nacl.d: Likewise. * testsuite/ld-i386/load1.d: Likewise. * testsuite/ld-i386/load4b.d: Likewise. * testsuite/ld-i386/load5b.d: Likewise. * testsuite/ld-i386/mov1b.d: Likewise. * testsuite/ld-x86-64/mov1b.d: Likewise. * testsuite/ld-x86-64/mov1d.d: Likewise. * testsuite/ld-ifunc/ifunc-21-i386.d: Likewise. * testsuite/ld-ifunc/ifunc-21-x86-64.d: Likewise. * testsuite/ld-ifunc/ifunc-22-i386.d: Likewise. * testsuite/ld-ifunc/ifunc-22-x86-64.d: Likewise. * testsuite/ld-x86-64/gotpcrel1.dd: Likewise. * testsuite/ld-x86-64/lea1a.d: Likewise. * testsuite/ld-x86-64/lea1b.d: Likewise. * testsuite/ld-x86-64/lea1c.d: Likewise. * testsuite/ld-x86-64/lea1d.d: Likewise. * testsuite/ld-x86-64/lea1e.d: Likewise. * testsuite/ld-x86-64/lea1f.d: Likewise. * testsuite/ld-x86-64/mov1b.d: Likewise. * testsuite/ld-x86-64/mov1d.d: Likewise. * testsuite/ld-x86-64/pr13082-3b.d: Likewise. * testsuite/ld-x86-64/pr13082-4b.d: Likewise. * testsuite/ld-x86-64/lea1.s: Add tests for 32-bit registers. * testsuite/ld-i386/pr19609-1.s: New file. * testsuite/ld-i386/pr19609-1a.d: Likewise. * testsuite/ld-i386/pr19609-1b.d: Likewise. * testsuite/ld-i386/pr19609-1c.d: Likewise. * testsuite/ld-i386/pr19609-1d.d: Likewise. * testsuite/ld-i386/pr19609-1e.d: Likewise. * testsuite/ld-i386/pr19609-1f.d: Likewise. * testsuite/ld-i386/pr19609-1g.d: Likewise. * testsuite/ld-i386/pr19609-1h.d: Likewise. * testsuite/ld-i386/pr19609-1i.d: Likewise. * testsuite/ld-i386/pr19609-2.s: Likewise. * testsuite/ld-i386/pr19609-2a.d: Likewise. * testsuite/ld-i386/pr19609-2b.d: Likewise. * testsuite/ld-i386/pr19609-2c.d: Likewise. * testsuite/ld-i386/undefweak.s: Likewise. * testsuite/ld-i386/undefweaka.d: Likewise. * testsuite/ld-i386/undefweakb.d: Likewise. * testsuite/ld-x86-64/pr13082-3c.d: Likewise. * testsuite/ld-x86-64/pr13082-3d.d: Likewise. * testsuite/ld-x86-64/pr19609-1.s: Likewise. * testsuite/ld-x86-64/pr19609-1a.d: Likewise. * testsuite/ld-x86-64/pr19609-1b.d: Likewise. * testsuite/ld-x86-64/pr19609-1c.d: Likewise. * testsuite/ld-x86-64/pr19609-1d.d: Likewise. * testsuite/ld-x86-64/pr19609-1e.d: Likewise. * testsuite/ld-x86-64/pr19609-1f.d: Likewise. * testsuite/ld-x86-64/pr19609-1g.d: Likewise. * testsuite/ld-x86-64/pr19609-1h.d: Likewise. * testsuite/ld-x86-64/pr19609-1i.d: Likewise. * testsuite/ld-x86-64/pr19609-1j.d: Likewise. * testsuite/ld-x86-64/pr19609-1k.d: Likewise. * testsuite/ld-x86-64/pr19609-1l.d: Likewise. * testsuite/ld-x86-64/pr19609-1m.d: Likewise. * testsuite/ld-x86-64/pr19609-2.s: Likewise. * testsuite/ld-x86-64/pr19609-2a.d: Likewise. * testsuite/ld-x86-64/pr19609-2b.d: Likewise. * testsuite/ld-x86-64/pr19609-2c.d: Likewise. * testsuite/ld-x86-64/pr19609-2d.d: Likewise. * testsuite/ld-x86-64/pr19609-3.s: Likewise. * testsuite/ld-x86-64/pr19609-3a.d: Likewise. * testsuite/ld-x86-64/pr19609-3b.d: Likewise. * testsuite/ld-x86-64/pr19609-4.s: Likewise. * testsuite/ld-x86-64/pr19609-4a.d: Likewise. * testsuite/ld-x86-64/pr19609-4b.d: Likewise. * testsuite/ld-x86-64/pr19609-4c.d: Likewise. * testsuite/ld-x86-64/pr19609-4d.d: Likewise. * testsuite/ld-x86-64/pr19609-4e.d: Likewise. * testsuite/ld-x86-64/pr19609-5.s: Likewise. * testsuite/ld-x86-64/pr19609-5a.d: Likewise. * testsuite/ld-x86-64/pr19609-5b.d: Likewise. * testsuite/ld-x86-64/pr19609-5c.d: Likewise. * testsuite/ld-x86-64/pr19609-5d.d: Likewise. * testsuite/ld-x86-64/pr19609-5e.d: Likewise. * testsuite/ld-x86-64/pr19609-6.s: Likewise. * testsuite/ld-x86-64/pr19609-6a.d: Likewise. * testsuite/ld-x86-64/pr19609-6b.d: Likewise. * testsuite/ld-x86-64/pr19609-6c.d: Likewise. * testsuite/ld-x86-64/pr19609-6d.d: Likewise. * testsuite/ld-x86-64/pr19609-7.s: Likewise. * testsuite/ld-x86-64/pr19609-7a.d: Likewise. * testsuite/ld-x86-64/pr19609-7b.d: Likewise. * testsuite/ld-x86-64/pr19609-7c.d: Likewise. * testsuite/ld-x86-64/pr19609-7d.d: Likewise. * testsuite/ld-i386/i386.exp: Run undefweak tests and tests for PR ld/19609. * testsuite/ld-x86-64/x86-64.exp: Run pr13082-3c, pr13082-3d and tests for PR ld/19609.
2016-02-26Add ChangeLog entries for PR ld/19645H.J. Lu1-0/+46