aboutsummaryrefslogtreecommitdiff
path: root/gold
AgeCommit message (Collapse)AuthorFilesLines
2019-08-02[GOLD] PowerPC64 pc-relative TLS supportAlan Modra2-68/+347
Gold version of git commit c213164ad2. elfcpp/ * powerpc.h (R_PPC64_TPREL34, R_PPC64_DTPREL34), (R_PPC64_GOT_TLSGD34, R_PPC64_GOT_TLSLD34), (R_PPC64_GOT_TPREL34, R_PPC64_GOT_DTPREL34): Define. gold/ * powerpc.cc (Target_powerpc::Scan::get_reference_flags): Set flags for new relocations, and some missing older relocs. (Target_powerpc::Scan::local): Handle new pcrel tls relocs. Call set_has_static_tls for tprel relocs. (Target_powerpc::Scan::global): Likewise. (Target_powerpc::Relocate::relocate): Handle new pcrel tls relocs.
2019-08-02[GOLD] PowerPC relocation signed overflow checkAlan Modra2-4/+17
Relocations with right shifts were calculating wrong overflow status. Since the addr34 split-field reloc is implemented as an 18-bit high part with value shifted right by 16 and a 16-bit low part, most of the pc-relative relocs were affected. * powerpc.cc (Powerpc_relocate_functions::rela, rela_ua): Perform signed right shift for signed overflow check.
2019-07-29Support .gnu.lto_.lto section in ELF files (PR 24768).Martin Liska3-1/+51
bfd/ChangeLog: 2019-07-22 Martin Liska <mliska@suse.cz> PR 24768 * archive.c (_bfd_compute_and_write_armap): Come up with report_plugin_err variable. * bfd-in2.h (struct bfd): Add lto_slim_object flag. * elf.c (struct lto_section): New. (_bfd_elf_make_section_from_shdr): Parse content of .gnu_lto_.lto section. * elflink.c: Report error for a missing LTO plugin. * linker.c (_bfd_generic_link_add_one_symbol): Likewise. binutils/ChangeLog: 2019-07-22 Martin Liska <mliska@suse.cz> PR 24768 * nm.c (filter_symbols): Set report_plugin_err if error is reported. (display_rel_file): Report error for a missing LTO plugin. gold/ChangeLog: 2019-07-22 Martin Liska <mliska@suse.cz> PR 24768 * layout.h (class Layout): Add is_lto_slim_object and set_lto_slim_object. * object.cc (struct lto_section): Add lto_slim_object_. (big_endian>::do_layout): Parse content of .gnu_lto_.lto section. (big_endian>::do_add_symbols): Report error for a missing LTO plugin.
2019-07-13[GOLD] PowerPC R_PPC64_PCREL_OPT supportAlan Modra2-12/+177
* powerpc.cc (xlate_pcrel_opt): New function. (Target_powerpc::Relocate::relocate): Optimise PCREL34 and GOT_PCREL34 sequences marked with PCREL_OPT.
2019-07-13[GOLD] PowerPC got reloc optimisationAlan Modra2-11/+104
Note that gold won't remove unused GOT entries, in contrast to ld.bfd which will. * powerpc.cc (Powerpc_relobj::make_got_relative): New function. (relative_value_is_known): New functions. (Target_powerpc::Relocate::relocate): Edit code using GOT16_HA, GOT16_LO_DS, and GOT_PCREL34 relocs.
2019-07-13[GOLD] PowerPC relocations for prefix insnsAlan Modra2-12/+454
Also use pc-relative instructions for notoc stubs. elfcpp/ * powerpc.h (R_PPC64_PCREL_OPT, R_PPC64_D34, R_PPC64_D34_LO), (R_PPC64_D34_HI30, R_PPC64_D34_HA30, R_PPC64_PCREL34), (R_PPC64_GOT_PCREL34, R_PPC64_PLT_PCREL34, R_PPC64_PLT_PCREL34_NOTOC), (R_PPC64_ADDR16_HIGHER34, R_PPC64_ADDR16_HIGHERA34), (R_PPC64_ADDR16_HIGHEST34, R_PPC64_ADDR16_HIGHESTA34), (R_PPC64_REL16_HIGHER34, R_PPC64_REL16_HIGHERA34), (R_PPC64_REL16_HIGHEST34, R_PPC64_REL16_HIGHESTA34), (R_PPC64_D28, R_PPC64_PCREL28): Define. gold/ * powerpc.cc (Target_powerpc): Add powerxx_stubs_ and accessor functions. (Target_powerpc::maybe_skip_tls_get_addr_call): Handle PLT_PCREL34 and PLT_PCREL34_NOTOC relocs. (Powerpc_relocate_functions): Add addr34, addr34_hi, addr34_ha, addr28, addr16_higher34, addr16_highera34, addr16_highest34, addr16_highest34a functions. (li_11_0, ori_11_11_0, sldi_11_11_34): Define. (paddi_12_pc, pld_12_pc, pnop): Define. (d34, ha34): New inline functions. (Stub_table::add_plt_call_entry): Handle powerxx_stubs. (Stub_table::add_eh_frame): Likewise. (build_powerxx_offset): New function. (Stub_table::plt_call_size): Handle powerxx_stubs. (Stub_table::branch_stub_size): Likewise. (Stub_table::do_write): Likewise. (Target_powerpc::Scan::get_reference_flags): Handle new relocs. (Target_powerpc::Scan::reloc_needs_plt_for_ifunc: Likewise. (Target_powerpc::Scan::local, global, relocate): Likewise.
2019-07-13[GOLD] PowerPC notoc eh_frameAlan Modra6-117/+190
When generating notoc call and branch stubs without the benefit of pc-relative insns, the stubs need to use LR to access the run time PC. All LR changes must be described in .eh_frame if we're to support unwinding through asynchronous exceptions. That's what this patch does. The patch has gone through way too many iterations. At first I attempted to add multiple FDEs, one for each stub. That ran into difficulties with do_plt_fde_location which is only capable of setting the address of a single FDE per Output_data section, and with removing any FDEs added on a previous do_relax pass. Removing FDEs (git commit be897fb774) went overboard in matching the FDE contents. That means either stashing the contents created for add_eh_frame_for_plt to use when calling remove_eh_frame_for_plt, or recreating contents on the fly (*) just to remove FDEs. In fact, FDE content matching is quite unnecesary. FDEs added by a previous do_relax pass are those with u_.from_linker.post_map set. So they can easily be recognised just by looking at that flag. This patch keeps that part of the multiple FDE changes. In the end I went for just one FDE per stub group to describe the call stubs. That's reasonably efficient for the common case of only needing to describe the __tls_get_addr_opt call stub. We don't expect to be making many calls using notoc stubs without pc-relative insns. *) Which has it's own set of problems. The contents must be recreated using the old stub layout, but .eh_frame size can affect stub requirements so you need to temporarily keep the old .eh_frame size when creating new stubs, then reset .eh_frame size before adding new FDEs. * ehframe.cc (Fde::operator==): Delete. (Cie::remove_fde): Delete. (Eh_frame::remove_ehframe_for_plt): Delete fde_data and fde_length parameters. Remove all post-map plt FDEs. * ehframe.h (Fde:post_map): Make const, add variant to compare plt. (Fde::operator==): Delete. (Cie::remove_fde): Implement here. (Cie::last_fde): New accessor. (Eh_frame::remove_ehframe_for_plt): Update prototype. * layout.cc (Layout::remove_eh_frame_for_plt): Delete fde_data and fde_length parameters. * layout.h (Layout::remove_eh_frame_for_plt): Update prototype. * powerpc.cc (Stub_table::tls_get_addr_opt_bctrl_): Delete. (Stub_table::plt_fde_len_, plt_fde_, init_plt_fde): Delete. (Stub_table::add_plt_call_entry): Don't set tls_get_addr_opt_bctrl_. (eh_advance): New function. (stub_sort): New function. (Stub_table::add_eh_frame): Emit eh_frame for notoc plt calls and branches as well as __tls_get_addr_opt plt call stub. (Stub_table::remove_eh_frame): Update to suit.
2019-07-13[GOLD] PowerPC64 ELFv2 notoc supportAlan Modra2-261/+746
Calls from notoc functions via the PLT need different stubs. Even calls to local functions requiring a valid toc pointer must go via a stub. This patch provides the support in gold. elfcpp/ * powerpc.h (R_PPC64_PLTSEQ_NOTOC, R_PPC64_PLTCALL_NOTOC): Define. gold/ * powerpc.cc (Target_powerpc::maybe_skip_tls_get_addr_call): Handle notoc calls. (is_branch_reloc): Template on size. Return true for REL24_NOTOC. Update all callers. (max_branch_delta): Likewise. (Target_powerpc::Branch_info::make_stub): Add a stub for notoc calls to functions needing a valid toc pointer. (Target_powerpc::do_relax): Layout stubs again if any need resize. (add_12_11_12, addi_12_11, addis_12_11, ldx_12_11_12, ori_12_12_0), (oris_12_12_0, sldi_12_12_32): Define. (Stub_table::Plt_stub_ent): Add notoc_ and iter_ fields. (Stub_table::Branch_stub_key, Branch_stub_key_hash): Rename from Branch_stub_ent and Branch_stub_ent hash. Remove save_res_ from key. (Stub_table::Branch_stub_ent): New struct. (class Stub_table): Add need_resize and resizing vars. (Stub_table::need_resize, branch_size): New accessors. (Stub_table::set_resizing): New function. (Stub_table::add_plt_call_entry): Handle notoc calls and resizing on seeing such or a tocsave stubs after a normal stub using the same sym. (Stub_table::add_long_branch_entry): Similarly. (Stub_table::find_long_branch_entry): Return a Branch_stub_ent*. (Stub_table::define_stub_syms): Adjust (Stub_table::build_tls_opt_head, build_tls_opt_tail): New functions. (build_notoc_offset): New function. (Stub_table::plt_call_size): Move out of line. Handle notoc calls. (Stub_table::branch_stub_size): Similarly. (Stub_table::do_write): Separate loop for ELFv2 stubs, handling notoc calls. Simplify ELFv1 loop. Output notoc branch stubs. Use build_tls_opt_head and build_tls_opt_tail. (Target_powerpc::Scan::get_reference_flags): Handle REL24_NOTOC. (Target_powerpc::Scan::reloc_needs_plt_for_ifunc): Likewise, and PLTSEQ_NOTOC and PLTCALL_NOTOC. (Target_powerpc::Scan::local, global, relocate): Likewise.
2019-06-28[GOLD] PowerPC tweak relnum testsAlan Modra2-2/+7
There is a call of relocate() to perform a single relocation. In that case the "relnum" parameter is -1U and of course it isn't appropriate to consider any of the PowerPC code sequence optimisations triggered by a following relocation. * powerpc.cc (Target_powerpc::Relocate::relocate): Don't look at next/previous reloc when relnum is -1.
2019-06-28[GOLD] PowerPC linkage table errorAlan Modra2-5/+25
This fixes a segfault when attempring to output a "linkage table error". "object" is only non-NULL in the local symbol case. * powerpc.cc (Stub_table::plt_error): New function. (Stub_table::do_write): Use it. (Output_data_glink::do_write): Don't segfault emitting linkage table error.
2019-06-28[GOLD] R_PPC64_REL16_HIGH relocsAlan Modra2-0/+38
These relocs have been around for quite a while. It's past time gold supported them. elfcpp/ * powerpc.h (R_PPC64_REL16_HIGH, R_PPC64_REL16_HIGHA), (R_PPC64_REL16_HIGHER, R_PPC64_REL16_HIGHERA), (R_PPC64_REL16_HIGHEST, R_PPC64_REL16_HIGHESTA): Define. gold/ * powerpc.cc (Target_powerpc::Scan::get_reference_flags): Handle REL16_HIGH* relocs. (Target_powerpc::Scan::local): Likewise. (Target_powerpc::Scan::global): Likewise. (Target_powerpc::Relocate::relocate): Likewise.
2019-06-10Fix a missing include of <string>Martin Liska2-0/+5
gold/ChangeLog: 2019-06-07 Martin Liska <mliska@suse.cz> * errors.h: Include string.
2019-05-11Fix problem with ICF where diffs in EH frame info is ignored.Joshua Oreman9-34/+438
PR gold/21066 * gc.h (gc_process_relocs): Track relocations in .eh_frame sections when ICF is enabled, even though the .eh_frame sections themselves are not foldable. * icf.cc (get_section_contents): Change arguments to permit operation on just part of a section. Include extra identity regions in the referring section's contents recursively. (match_sections): Lock object here instead of in get_section_contents so that get_section_contents can operate recursively. (Icf::add_ehframe_links): New method. (Icf::find_identical_sections): Pass .eh_frame sections to add_ehframe_links(). Increase default iteration count from 2 to 3 because handling exception info typically requires one extra iteration. * icf.h (Icf::extra_identity_list_): New data member with accessor. (is_section_foldable_candidate): Include .gcc_except_table sections. * options.h: Update documentation for new default ICF iteration count. * testsuite/Makefile.am (icf_test_pr21066): New test case. * testsuite/Makefile.in: Regenerate. * testsuite/icf_test_pr21066.cc: New source file. * testsuite/icf_test_pr21066.sh: New test script.
2019-02-19Check whether symbols with MOVW_.ABS relocations require PLT entries (aarch64).Egeyar Bagcioglu7-44/+146
2019-02-19 Egeyar Bagcioglu <egeyar.bagcioglu@oracle.com> gold/ PR gold/23870 * aarch64.cc (Target_aarch64::Scan::global): Check if a symbol with R_AARCH64_MOVW_.ABS_* relocations requires a PLT entry. * testsuite/Makefile.am: Add aarch64_pr23870 test case. * testsuite/Makefile.in: Regenerate. * testsuite/aarch64_pr23870_bar.c: New file. * testsuite/aarch64_pr23870_foo.c: New file. * testsuite/aarch64_pr23870_main.S: New file.
2019-02-12Updated French translation for ld/ and gold/ subdirectoriesNick Clifton2-258/+305
2019-01-21Updated translations for various binutils subdirectories.Nick Clifton2-232/+279
2019-01-19Change version to 2.32.51 and regenerate configure and pot files.Nick Clifton2-227/+275
2019-01-19Add markers for 2.32 branch to NEWS and ChangeLog files.Nick Clifton1-0/+4
2019-01-09Adjust bfd/warning.m4 egrep patternsAndrew Paprocki2-5/+9
Adjust the `bfd/warning.m4` `egrep` patterns to handle preprocessors that do not define `__GNUC__`, leaving the string in the output. bfd/ * warning.m4: Adjust egrep pattern for non-GNU compilers. * configure: Regenerate. binutils/ * configure: Regenerate. gas/ * configure: Regenerate. gold/ * configure: Regenerate. gprof/ * configure: Regenerate. ld/ * configure: Regenerate. opcodes/ * configure: Regenerate.
2019-01-01Update year range in copyright notice of binutils filesAlan Modra478-479/+483
2019-01-01ChangeLog rotationAlan Modra2-773/+787
2018-12-18[GOLD] Tweak keep_text_section_prefix test for PowerPC64 ELFv1Alan Modra3-2/+8
This test checks code layout by function symbol ordering, but that doesn't work on powerpc64 ELFv1 where the function symbol is on a descriptor. A simple work-around is to have nm emit synthetic symbols marking the code entry point of functions. Since the text segment is laid out before the data segment, the synthetic symbols will have lower addresses than function descriptor symbols and be seen first in nm -n output. On other targets, nm --synthetic typically emits symbols on plt entries. Since the testcase doesn't call any of the functions of interest there shouldn't be plt entries for those functions, so there should be no potentially confusing extra symbols. * testsuite/Makefile.am (keep_text_section_prefix_nm.stdout): Pass --synthetic to nm. * testsuite/Makefile.in: Regenerate.
2018-12-08[GOLD] icf_safe_so_testAlan Modra2-24/+38
PR 21128 * testsuite/icf_safe_so_test.sh (check_fold): Rewrite to check multiple symbols at once. (arch_specific_safe_fold): Likewise, and call with the four foo* symbols expected to fold.
2018-12-06gold: Provide more failed archive member info in error messageH.J. Lu2-2/+16
When gold fails to get an archive member, its error message doesn't have information for 1. The failed archive member name. 2. The cause of failure: non-ELF object vs non-IR object. This patch adds the failed archive member name and non-ELF/non-IR info to gold error message. * archive.cc (Archive::get_elf_object_for_member): Also print archive member and non-ELF/non-IR info on error.
2018-12-05gold won't build with gcc-9Alan Modra2-1/+5
* symtab.h (Symbol::Symbol): Avoid -Wclass-memaccess warning.
2018-12-03Restore build on x86_64-w64-mingw32.Alexey Neyman5-4/+34
gold/ PR gold/23594 * configure.ac: Add checks for link, mkdtemp. * configure: Regenerate. * config.in: Regenerate. * plugin.cc (Plugin_recorder::init): Fall back to mktemp if mkdtemp is not available. (link_or_copy_file): Fall back to copy if link() is not available.
2018-12-02gold: Get alignment of uncompressed section from ch_addralignH.J. Lu5-12/+42
The ELF compression header has a field (ch_addralign) that is set to the alignment of the uncompressed section. This way the section itself can have a different alignment than the decompressed section. Update decompress_input_section to get alignment of the decompressed section and use it when merging decompressed strings. PR binutils/23919 * merge.cc (Output_merge_string<Char_type>::do_add_input_section): Get addralign from decompressed_section_contents. * object.cc (build_compressed_section_map): Set info.addralign. (Object::decompressed_section_contents): Add a palign argument and store p->second.addralign in *palign if it isn't NULL. * object.h (Compressed_section_info): Add addralign. (section_is_compressed): Add a palign argument, default it to NULL, store p->second.addralign in *palign if it isn't NULL. (Object::decompressed_section_contents): Likewise. * output.cc (Output_section::add_input_section): Get addralign from section_is_compressed.
2018-11-26[GOLD] justsyms_exec test fail on powerpc64Alan Modra4-4/+11
This test fails on powerpc64le due to the justsyms_lib being built with exported_data at 0x2010000, apparently due to the powerpc target code generating an empty relro .branch_lt section. Since the test relies on the library having exported_data at 0x2000000, avoid the problem by linking with -z norelro. Also, the test doesn't need to avoid checking the function symbol on powerpc elfv2. * testsuite/Makefile.am (justsyms_lib): Link with -z norelro. * testsuite/Makefile.in: Regenerate. * testsuite/justsyms_exec.c (main): Do check exported_func on PowerPC64 ELFv2.
2018-11-26[GOLD] support objdump -T display of st_otherAlan Modra2-4/+9
PowerPC64 ELFv2 uses the top 3 bits of st_other to encode a function's local entry point offset from its global entry point. Allow st_other bits except for visibility==default. * testsuite/ver_test_14.sh: Accept objdump -T display of st_other bits on powerpc64le.
2018-11-08Make gold testsuite work with CC and CXX specifying -BAlan Modra6-923/+933
The patch allows the gold testsuite to pass when using something like the following configure line, which works for the rest of the binutils testsuite. At least, it does if you don't configure your gcc with any of the options that force a particular path to as or ld. gccdir="/home/alan/build/gcc/prev-" gccsrc="/home/alan/src/gcc.git" gcctarg="x86_64-linux" CC="${gccdir}gcc/xgcc -B${gccdir}gcc/" \ CXX="${gccdir}gcc/xg++ -B${gccdir}gcc/ -I${gccdir}$gcctarg/libstdc++-v3/include -I${gccdir}$gcctarg/libstdc++-v3/include/$gcctarg -I${gccsrc}/libstdc++-v3/libsupc++ -L${gccdir}$gcctarg/libstdc++-v3/src/.libs/" \ ~/src/binutils-gdb/configure ... gold's -Bgcctestdir/ option must come before the -B supplied by $CC or $CXX, in order to pick up the linker we want to test. Also when using a not-yet-installed gcc, it is necessary to provide a collect-ld in gcctestdir/ as otherwise a collect-ld script in -B${gccdir}gcc/ will be used and the wrong linker tested. Besides this, the patch fixes some bugs: The $COMPILE -D_FORTIFY_SOURCE edit was wrong (but worked for usual values), and the $CXXLINK_S edit unnecessarily but harmlessly used extra backslash quoting. See posix shell documentation regarding quoting, or www.gnu.org/software/bash/manual/bashref.html#Command-Substitution Also, -Bgcctestdir/ in one place makes it less likely a new test will be added that accidentally lacks the option. * Makefile.am (gcctestdir1/ld): Use $@ and absolute paths. (gcctestdir1/collect-ld): New. (ld1_DEPENDENCIES): Add gcctestdir1/collect-ld. (ld1_LDFLAGS): Remove -Bgcctestdir1/. (editcc1, ld1_LINK): Define. (gcctestdir2/ld, gcctestdir2/collect-ld, ld2_DEPENDENCIES), (ld2_LDFLAGS, editcc2, ld2_LINK), (ld1_r_DEPENDENCIES, ld1_r_LDFLAGS, ld1_r_LINK), (gcctestdir2-r/ld, gcctestdir2-r/collect-ld, ld2_r_DEPENDENCIES), (ld2_r_LDFLAGS, editcc2r, ld2_r_LINK), (gcctestdir3/ld, gcctestdir3/collect-ld, ld3_DEPENDENCIES), (ld3_LDFLAGS, editcc3, ld3_LINK), (gcctestdir4/ld, gcctestdir4/collect-ld, ld4_DEPENDENCIES), (ld4_LDFLAGS, editcc4, ld4_LINK): Similarly. * Makefile.in: Regenerate. * testsuite/Makefile.am (editcc): Define sed command to put our -B option first. Remove other occurrences of -Bgcctestdir/ throughout file. (editcc1): Define for -D_FORTIFY_SOURCE stripping. (editcc2): Define for -static-libgcc/libstdc++ stripping. (LINK1, CXXLINK1): Don't use CCLD or CXXLD. (CCLD, CXXLD, COMPILE, LINK, CXXCOMPILE, CXXLINK, CXXLINK_S): Define using editcc macros. (gcctestdir/collect-ld): New rule, add as a dependency of.. (gcctestdir/ld): ..this. Use $@ and abs_top_buildir. (gcctestdir/as): Use $@. * testsuite/Makefile.in: Regenerate. * testsuite/incremental_test.sh (actual): Match collect-ld too.
2018-11-02[GOLD] make cleanAlan Modra5-3/+24
Cleans a few more test files. * Makefile.am (MOSTLYCLEANFILES): Define. * Makefile.in: Regnerate. * testsuite/Makefile.am (MOSTLYCLEANFILES): Add ver_test_14 and gnu_property_test. * testsuite/Makefile.in: Regnerate.
2018-10-16PR23769, mixing split-stack and non-split-stack error messageCherry Zhang2-4/+15
Corrects which file is reported as being split-stack. PR 23769 * gold.cc (queue_middle_tasks): Correct split-stack error message.
2018-08-29[MIPS] Add Loongson 2K1000 proccessor support.Chenghua Xu1-0/+7
bfd/ * archures.c (bfd_architecture): New machine bfd_mach_mips_gs264e. * bfd-in2.h (bfd_architecture): Likewise. * cpu-mips.c (enum I_xxx): Likewise. (arch_info_struct): Likewise. * elfxx-mips.c (_bfd_elf_mips_mach): Handle E_MIPS_MACH_GS264E. (mips_set_isa_flags): Likewise. (mips_mach_extensions): Map bfd_mach_mips_gs264e to bfd_mach_mips_gs464e extension. binutils/ * NEWS: Mention Loongson 2K1000 proccessor support. * readelf.c (get_machine_flags): Handle gs264e. elfcpp/ * mips.c (EF_MIPS_MACH): New E_MIPS_MACH_GS264E. gas/ * config/tc-mips.c (ISA_HAS_ODD_SINGLE_FPR): Exclude CPU_GS264E. (mips_cpu_info_table): Add gs264e descriptors. * doc/as.texi (march table): Add gs264e. include/ * elf/mips.h (E_MIPS_MACH_XXX): New E_MIPS_MACH_GS264E. * opcode/mips.h (CPU_XXX): New CPU_GS264E. ld/ * testsuite/ld-mips-elf/mips-elf-flags.exp: Run good_combination gs264e and gs464e. opcodes/ * mips-dis.c (mips_arch_choices): Add gs264e descriptors.
2018-08-29[MIPS] Add Loongson 3A2000/3A3000 proccessor support.Chenghua Xu1-0/+7
bfd/ * archures.c (bfd_architecture): New machine bfd_mach_mips_gs464e. * bfd-in2.h (bfd_architecture): Likewise. * cpu-mips.c (enum I_xxx): Likewise. (arch_info_struct): Likewise. * elfxx-mips.c (_bfd_elf_mips_mach): Handle E_MIPS_MACH_GS464E. (mips_set_isa_flags): Likewise. (mips_mach_extensions): Map bfd_mach_mips_gs464e to bfd_mach_mips_gs464 extension. binutils/ * NEWS: Mention Loongson 3A2000/3A3000 proccessor support. * readelf.c (get_machine_flags): Handle gs464e. elfcpp/ * mips.c (EF_MIPS_MACH): New E_MIPS_MACH_GS464E. gas/ * config/tc-mips.c (ISA_HAS_ODD_SINGLE_FPR): Exclude CPU_GS464E. (mips_cpu_info_table): Add gs464e descriptors. * doc/as.texi (march table): Add gs464e. include/ * elf/mips.h (E_MIPS_MACH_XXX): New E_MIPS_MACH_GS464E. * opcode/mips.h (CPU_XXX): New CPU_GS464E. ld/ * testsuite/ld-mips-elf/mips-elf-flags.exp: Run good_combination gs464e and gs464. opcodes/ * mips-dis.c (mips_arch_choices): Add gs464e descriptors.
2018-08-29[MIPS] Add Loongson 3A1000 proccessor support.Chenghua Xu2-13/+16
bfd/ * archures.c (bfd_architecture): Rename bfd_mach_mips_loongson_3a to bfd_mach_mips_gs464. * bfd-in2.h (bfd_architecture): Likewise. * cpu-mips.c (enum I_xxx): Likewise. (arch_info_struct): Likewise. * elfxx-mips.c (_bfd_elf_mips_mach): Likewise. (mips_set_isa_flags): Likewise. (mips_mach_extensions): Likewise. (bfd_mips_isa_ext_mach): Likewise. (bfd_mips_isa_ext): Likewise. (print_mips_isa_ext): Delete AFL_EXT_LOONGSON_3A. binutils/ * NEWS: Mention Loongson 3A1000 proccessor support. * readelf.c (get_machine_flags): Rename loongson-3a to gs464. (print_mips_isa_ext): Delete AFL_EXT_LOONGSON_3A. elfcpp/ * mips.c (EF_MIPS_MACH): Rename E_MIPS_MACH_LS3A to E_MIPS_MACH_GS464. gas/ * config/tc-mips.c (ISA_HAS_ODD_SINGLE_FPR): Rename CPU_LOONGSON_3A to CPU_GS464. (mips_cpu_info_table): Add gs464 descriptors, Keep loongson3a as an alias of gs464 for compatibility. * doc/as.texi (march table): Rename loongson3a to gs464. * testsuite/gas/mips/loongson-3a-mmi.d: Set "ISA Extension" flag to None. gold/ * mips.cc (Mips_mach, add_machine_extensions, elf_mips_mach): Rename loongson3a to gs464. (mips_isa_ext_mach, mips_isa_ext): Delete loongson3a. (infer_abiflags): Use ases instead of isa_ext for infer ABI flags. (elf_mips_mach_name): Rename loongson3a to gs464. include/ * elf/mips.h (E_MIPS_MACH_XXX): Rename E_MIPS_MACH_LS3A to E_MIPS_MACH_GS464. (AFL_EXT_XXX): Delete AFL_EXT_LOONGSON_3A. * opcode/mips.h (INSN_XXX): Delete INSN_LOONGSON_3A. (CPU_XXX): Rename CPU_LOONGSON_3A to CPU_GS464. * opcode/mips.h (mips_isa_table): Delete CPU_LOONGSON_3A case. ld/ * testsuite/ld-mips-elf/mips-elf-flags.exp: Rename loongson3a to gs464. opcodes/ * mips-dis.c (mips_arch_choices): Add gs464 descriptors, Keep loongson3a as an alias of gs464 for compatibility. * mips-opc.c (mips_opcodes): Change Comments.
2018-08-07Fix "may be used uninitialized" warning.Tulio Magno Quites Machado Filho2-2/+7
* object.cc (Sized_relobj_file::map_to_kept_section): Initialize kept_file.
2018-08-07Properly merge GNU_PROPERTY_X86_ISA_1_USED (x86_64).Cary Coutant2-3/+28
gold/ PR ld/23486 * x86_64.cc (Target_x86_64::Target_x86_64): Initialize object_isa_1_used_. (Target_x86_64::object_isa_1_used_): New data member. (Target_x86_64::record_gnu_property): Save ISA_1_USED bits for object. (Target_x86_64::merge_gnu_properties): Merge ISA_1_USED bits.
2018-08-06Add --warn-drop-version option; by default, do not warn when discarding ↵Cary Coutant3-5/+16
version info. gold/ PR gold/23455 * options.h (General_options): Add --warn-drop-version option. * symtab.cc (Symbol_table::set_dynsym_indexes): Check it.
2018-08-06Fix type checking errors.Cary Coutant3-3/+11
gold/ * target.h (Sized_target::record_gnu_property): Change first two parameters to unsigned int. * x86_64.cc (Target_x86_64::record_gnu_property): Likewise.
2018-07-30Combine ,gnu.build.attributes.* sections into one .gnu.build.attributes ↵Nick Clifton2-0/+6
section during linking. gold * layout.cc (section_name_mapping): Add an entry for .gnu.build.attributes. ld * scripttempl/elf.sc: Place .gnu.build.attributes sections with other read-only sections.
2018-07-18Updated French translation for gold and Spanish translation for ld.Nick Clifton2-995/+1761
ld * po/es.po: Updated Spanish translation. gold * po/fr.po: Updated French translation.
2018-07-14Fix internal error when using --emit-relocs with plugins.Cary Coutant4-5/+17
When an .eh_frame section has deferred layout because of plugins, gold was neglecting to mark the section as deferred. When we later processed the corresponding relocation section, we were then ignoring it, causing the internal error later on in the link. gold/ PR gold/23397 * object.cc (Sized_relobj_file::do_layout): Mark section as deferred. * testsuite/Makefile.am (plugin_test_1): Add --emit-relocs option to existing test case. * testsuite/Makefile.in: Regenerate.
2018-07-14Fix problem causing duplicated linker-generated symbols with versions.Cary Coutant7-4/+112
When generating _end, _edata, etc. symbols, and a version script provides a version name, and we are linking against another shared library that provides those symbols with a different version, gold ends up trying to resolve the other shared library's symbols to the new definitions, resulting in two copies of each symbol, one as default, and one as non-default. This patch tests for that condition, and ignores the symbols provided by the other shared library. gold/ PR gold/23409 * symtab.cc (Symbol_table::define_special_symbol): Add check for version name on existing symbol. * testsuite/Makefile.am (ver_test_pr23409): New test case. * testsuite/Makefile.in: Regenerate. * testsuite/ver_test_pr23409.sh: New test script. * testsuite/ver_test_pr23409_1.script: New version script. * testsuite/ver_test_pr23409_2.script: New version script.
2018-07-11Fix printing the size of GOLD's memory areana on Cygwin based systems.Franz Sirl2-2/+6
I just stumbled over this with 2.29.1 while building a cross-toolchain, on Cygwin64, but it's still the same for 2.30. m.arena has size_t on Cygwin64 and thus errors out due to -Werror=format. gold * main.cc: Print m.arena as long long.
2018-07-09Fix test for availability of emplace_back.Cary Coutant2-3/+8
Testing for the GCC version 5 or later isn't right, since C++ 11 support wasn't enabled by default until later. This patch tests the C++ standard support directly instead of inferring it from the GCC version. gold/ * incremental.cc (Sized_incremental_binary::setup_readers): Use emplace_back for C++ 11 or later.
2018-07-06[GOLD] PowerPC .gnu.attributes supportAlan Modra2-7/+362
elfcpp/ * powerpc.h (Tag_GNU_Power_ABI_FP): Define. (Tag_GNU_Power_ABI_Vector, Tag_GNU_Power_ABI_Struct_Return): Define. gold/ * powerpc.cc: Include attributes.h. (Powerpc_relobj::attributes_section_data_): New variable, with accessor and associated constructor and destructor support. (Powerpc_dynobj::attributes_section_data_): Likewise. (Powerpc_relobj::do_read_symbols): Stash SHT_GNU_ATTRIBUTES section contents in attributes_section_data_. (Powerpc_dynobj::do_read_symbols): Likewise. (Target_powerpc): Add attributes_section_data_, last_fp_, last_ld_, last_vec_, and last_struct_ vars. (Target_powerpc::merge_object_attributes): New function. (Target_powerpc::do_finalize_sections): Iterate over input objects merging attributes. Create output attributes section.
2018-06-26Updated translations.Nick Clifton2-665/+785
gas * po/uk.po: Updated Ukranian translation. bfd * po/uk.po: Updated Ukranian translation. ld * po/uk.po: Updated Ukranian translation. gold * po/uk.po: Updated Ukranian translation. opcodes * po/uk.po: Updated Ukranian translation. * po/de.po: Updated German translation. * po/pt_BR.po: Updated Brazilian Portuguese translation. binutils* po/sv.po: Updated Swedish translation. * po/uk.po: Updated Ukranian translation.
2018-06-24Regenerate configure and pot files with updated binutils version number.Nick Clifton2-662/+791
2018-06-24Add 2.30 branch notes to ChangeLogs and NEWS files.Nick Clifton1-0/+4
2018-06-23Bump version number and summarize new features in 1.16.Cary Coutant3-1/+24
gold/ * version.cc (version_string): Bump to 1.16. * NEWS: Add new features in 1.16.