summaryrefslogtreecommitdiff
path: root/gold
Commit message (Collapse)AuthorAgeFilesLines
* Add missing PR ref to ChangeLog entry.Cary Coutant2014-04-231-0/+1
|
* Add missing break statement for case elfcpp::R_X86_64_PLTOFF64.Cary Coutant2014-04-232-0/+5
| | | | | gold/ * x86_64.cc (Target_x86_64::Relocate::relocate): Add missing break.
* Allow target to decide whether to include a section.Cary Coutant2014-04-153-1/+24
| | | | | | | | | | 2014-04-15 Sasa Stankovic <Sasa.Stankovic@imgtec.com> gold/ * layout.cc (Layout::include_section): Allow a target to decide whether to include a section. * target.h (Target::should_include_section): New function. (Target::do_should_include_section): New function.
* Allow target to derive from Copy_relocs class.Cary Coutant2014-04-153-38/+33
| | | | | | | | | | | | 2014-04-15 Sasa Stankovic <Sasa.Stankovic@imgtec.com> gold/ * copy-relocs.cc (Copy_relocs::Copy_reloc_entry::emit): Remove and inline into ... (Copy_relocs::emit): ... here. * copy-relocs.h (Copy_reloc_entry): Change from class to struct. (Copy_reloc_entry::make_copy_reloc): Change from private to protected. (Copy_reloc_entry::entries_): Change from private to protected.
* 2014-04-02 Sriraman Tallam <tmsriram@google.com>Sriraman Tallam2014-04-022-8/+13
| | | | | * icf.cc (get_section_contents): Replace copies of reloc vectors with (const) references.
* Modify gold testsuite to disable plugins added by GCC driver.Cary Coutant2014-04-025-44/+102
| | | | | | | | | | | | | | | | | GCC 4.8 now adds linker plugin options by default, which conflict with the --incremental tests in the testsuite. This patch checks whether the compiler supports the -fno-use-linker-plugin option, and adds it to all link commands. 2014-04-02 Cary Coutant <ccoutant@google.com> * configure.ac (HAVE_PUBNAMES): Use C instead of C++. (HAVE_NO_USE_LINKER_PLUGIN): Check for -fno-use-linker-plugin. * configure: Regenerate. * testsuite/Makefile.am (OPT_NO_PLUGINS): New macro for -fno-use-linker-plugin. (LINK1, CXXLINK1): Add it to the link command. * testsuite/Makefile.in: Regenerate.
* autoreconfAlan Modra2014-03-122-2/+5
| | | | | Regenerate Makefile.in in bfd, binutils, gas, gold, gprof, ld, opcodes. Regenerate gas/config.in.
* Add function to set non-visibility part of st_other.Cary Coutant2014-03-102-0/+9
| | | | | | | 2014-03-10 Sasa Stankovic <Sasa.Stankovic@imgtec.com> gold/ * symtab.h (Symbol::set_nonvis): New function.
* Add explicit instantiations for Sized_symbol::init_output_data.Cary Coutant2014-03-102-0/+32
| | | | | | | | | 2014-03-10 Sasa Stankovic <Sasa.Stankovic@imgtec.com> gold/ * symtab.cc (Sized_symbol<32>::init_output_data): Instantiate the template. (Sized_symbol<64>::init_output_data): Likewise.
* Allow target to adjust dynamic symbol value.Cary Coutant2014-03-103-0/+19
| | | | | | | | | | 2014-03-10 Sasa Stankovic <Sasa.Stankovic@imgtec.com> gold/ * symtab.cc (Symbol_table::sized_write_globals): Allow a target to adjust dynamic symbol value. * target.h (Target::adjust_dyn_symbol): New function. (Target::do_adjust_dyn_symbol): New function.
* Allow target to add custom dynamic table entries.Cary Coutant2014-03-104-1/+38
| | | | | | | | | | | | | | 2014-03-10 Sasa Stankovic <Sasa.Stankovic@imgtec.com> gold/ * output.cc (Output_data_dynamic::Dynamic_entry::write): Get the value of DYNAMIC_CUSTOM dynamic entry. * output.h (Output_data_dynamic::add_custom): New function. (Dynamic_entry::Dynamic_entry): New constructor for DYNAMIC_CUSTOM dynamic entry. (enum Dynamic_entry::Classification): Add DYNAMIC_CUSTOM. * target.h (Target::dynamic_tag_custom_value): New function. (Target::do_dynamic_tag_custom_value): New function.
* Allow target to set dynsym indexes.Cary Coutant2014-03-103-0/+57
| | | | | | | | | | | | 2014-03-10 Sasa Stankovic <Sasa.Stankovic@imgtec.com> gold/ * symtab.cc (Symbol_table::set_dynsym_indexes): Allow a target to set dynsym indexes. * target.h (Target::has_custom_set_dynsym_indexes): New function. (Target::do_has_custom_set_dynsym_indexes): New function. (Target::set_dynsym_indexes): New function. (Target::do_set_dynsym_indexes): New function.
* Better overflow checking for powerpc64 relocationsAlan Modra2014-03-082-18/+78
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | R_PPC64_ADDR16 is used in three contexts: - .short data relocation - 16-bit signed insn fields, eg. addi - 16-bit unsigned insn fields, eg. ori In the first case we want to allow both signed and unsigned 16-bit values, the latter two ought to error if the field exceeds the range of values allowed for 16-bit signed and unsigned integers respectively. These conflicting requirements meant that ld had to choose the least restrictive overflow checks, and thus it is possible to construct testcases where an addi field overflows but is not reported by ld. Many relocations dealing with 16-bit insn fields have this problem. What's more, some relocations that are only ever used for signed fields of instructions woodenly copied the lax overflow checking of R_PPC64_ADDR16. bfd/ * elf64-ppc.c (ppc64_elf_howto_raw): Use complain_overflow_signed for R_PPC64_ADDR14, R_PPC64_ADDR14_BRTAKEN, R_PPC64_ADDR14_BRNTAKEN, R_PPC64_SECTOFF, R_PPC64_ADDR16_DS, R_PPC64_SECTOFF_DS, R_PPC64_REL16 entries. Use complain_overflow_dont for R_PPC64_TOC. (ppc64_elf_relocate_section): Modify overflow test for 16-bit fields in instructions to signed/unsigned according to whether the field takes a signed or unsigned value. gold/ * powerpc.cc (Powerpc_relocate_functions::Overflow_check): Add CHECK_UNSIGNED, CHECK_LOW_INSN, CHECK_HIGH_INSN. (Powerpc_relocate_functions::has_overflow_unsigned): New function. (Powerpc_relocate_functions::has_overflow_bitfield, overflowed): Use the above. (Target_powerpc::Relocate::relocate): Correct overflow checking for a number of relocations. Modify overflow test for 16-bit fields in instructions to signed/unsigned according to whether the field takes a signed or unsigned value.
* Update copyright yearsAlan Modra2014-03-05380-408/+386
|
* Support R_PPC64_ADDR64_LOCALAlan Modra2014-03-052-0/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This adds support for "func@localentry", an expression that returns the ELFv2 local entry point address of function "func". I've excluded dynamic relocation support because that obviously would require glibc changes. include/elf/ * ppc64.h (R_PPC64_REL24_NOTOC, R_PPC64_ADDR64_LOCAL): Define. bfd/ * elf64-ppc.c (ppc64_elf_howto_raw): Add R_PPC64_ADDR64_LOCAL entry. (ppc64_elf_reloc_type_lookup): Support R_PPC64_ADDR64_LOCAL. (ppc64_elf_check_relocs): Likewise. (ppc64_elf_relocate_section): Likewise. * Add BFD_RELOC_PPC64_ADDR64_LOCAL. * bfd-in2.h: Regenerate. * libbfd.h: Regenerate. gas/ * config/tc-ppc.c (ppc_elf_suffix): Support @localentry. (md_apply_fix): Support R_PPC64_ADDR64_LOCAL. ld/testsuite/ * ld-powerpc/elfv2-2a.s, ld-powerpc/elfv2-2b.s: New files. * ld-powerpc/elfv2-2exe.d, ld-powerpc/elfv2-2so.d: New files. * ld-powerpc/powerpc.exp: Run new test. elfcpp/ * powerpc.h (R_PPC64_REL24_NOTOC, R_PPC64_ADDR64_LOCAL): Define. gold/ * powerpc.cc (Target_powerpc::Scan::local, global): Support R_PPC64_ADDR64_LOCAL. (Target_powerpc::Relocate::relocate): Likewise.
* Fix various copyright issuesAlan Modra2014-03-032-1/+5
| | | | | | | | | | | | | | | | | | | | binutils/ * README: Add "Copyright Notices" paragraph. gas/ * config/bfin-lex-wrapper.c: Correct copyright date. * config/tc-frv.c: Correct copyright punctuation. * config/tc-ip2k.c: Likewise. * config/tc-iq2000.c: Likewise. * config/tc-mep.c: Likewise. * config/tc-tic4x.c: Likewise. * config/tc-tic4x.h: Likewise. ld/testsuite/ * ld-scripts/phdrs2.exp: Correct copyright punctuation. * ld-v850/v850.exp: Correct copyright typo. opcodes/ * i386-gen.c (process_copyright): Emit copyright notice on one line. gold/ * dwp.cc (print_version): Update copyright year to current.
* Update ChangeLog from earlier patch.Cary Coutant2014-02-111-0/+12
|
* binutils potfiles regenAlan Modra2014-02-102-560/+1745
| | | | Adds nds32 files to POTFILES.in
* Fix problem where -u is ignored when a weak undef is seen.Cary Coutant2014-02-066-41/+224
| | | | | | | | | | | | | | | | | | | | | When the linker has a weak undefined symbol, it normally does not select an archive library member just to satisfy the reference. If the same symbol is also listed in a -u option, however, we should select the archive library member. This patch reorders the code in Library_base::should_include_member so that the additional checks are performed in the case of a weak undef. gold/ 2014-02-06 Cary Coutant <ccoutant@google.com> * archive.cc (Library_base::should_include_member): Reorder code to check for -u option if a weak undef has already been seen. * testsuite/Makefile.am (weak_undef_test_2): New test case. * testsuite/Makefile.in: Regenerate. * testsuite/weak_undef_file3.cc: New file. * testsuite/weak_undef_file4.cc: New file. * testsuite/weak_undef_test_2.cc: New file.
* Fix issues with gold undefined symbol diagnostics.Cary Coutant2014-02-053-8/+24
| | | | | | | | | | | | | | | | | | | | | PR binutils/15435 complains that gold issues a visibility error for an weak undefined symbol with hidden visibility. The message should be suppressed if the symbol is a weak undef. An earlier patch to add an extra note about key functions when a class's vtable symbol is undefined missed a case where the reference to the vtable came from a shared library. This patch moves the check to a lower-level routine that catches both cases. gold/ 2014-02-05 Cary Coutant <ccoutant@google.com> * errors.cc (Errors::undefined_symbol): Move undef vtable symbol check to here. * target-reloc.h (is_strong_undefined): New function. (relocate_section): Move undef vtable symbol check from here. Check for is_strong_undefined.
* Add missing gold/ChangeLog entry.Cary Coutant2014-02-051-0/+30
|
* Fix problems with the --dynamic-list option.Cary Coutant2014-02-0513-6/+347
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | PR gold/13577 complains that even though symbols listed in the --dynamic-list script are exported, they are still bound symbolically if -Bsymbolic is also used. There are two underlying problems here. First, -Bsymbolic should be overridden by --dynamic-list, since the dynamic list provides an explicit list of symbols that are not bound within the library, and if we go ahead and set DT_SYMBOLIC, then the dynamic loader will bind it within the library anyway. Second, gold did not properly identify the symbols listed in the file as preemptible. PR gold/16530 complains that symbols listed in the --dynamic-list script can still be garbage collected. I've fixed this by checking the symbols as they're added to the symbol table. (Unlike the --export-dynamic-symbol option, we can't iterate over the list, because the --dynamic-list script can have wildcards in it.) gold/ 2014-02-05 Cary Coutant <ccoutant@google.com> PR gold/13577 * options.cc (General_options::parse_dynamic_list): Set have_dynamic_list_. (General_options::General_options): Initialize have_dynamic_list_. (General_options::finalize): Turn off -Bsymbolic and -Bsymbolic-functions if --dynamic-list provided. * options.h (General_options::have_dynamic_list): New function. (General_options::have_dynamic_list_): New data member. * symtab.h (Symbol::is_preemptible): Handle --dynamic-list correctly. PR gold/16530 * symtab.cc (Symbol_table::add_from_relobj): If symbol is named in --dynamic-list, mark it. * testsuite/Makefile.am (gc_dynamic_list_test.sh): New test case. (dynamic_list_2): New test case. * testsuite/Makefile.in: Regenerate. * testsuite/dynamic_list_2.cc: New file. * testsuite/dynamic_list_2.t: New file. * testsuite/dynamic_list_lib1.cc: New file. * testsuite/dynamic_list_lib2.cc: New file. * testsuite/gc_dynamic_list_test.c: New file. * testsuite/gc_dynamic_list_test.sh: New file. * testsuite/gc_dynamic_list_test.t: New file.
* Add .gdb_index version 7 support.Cary Coutant2014-01-287-35/+111
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch adds support for .gdb_index version 7, which adds several flag bits to the symbol index. It also fixes a problem where it did not handle compressed debug sections correctly. Tested with a google/gcc-4_8 branch compiler, which supports the -ggnu-pubnames option to generate .debug_gnu_pubnames/pubtypes tables. (We will submit that patch to GCC when stage 1 reopens.) 2014-01-28 Cary Coutant <ccoutant@google.com> * gold/dwarf_reader.cc: include <utility> (for make_pair). (Dwarf_abbrev_table::do_read_abbrevs): Check for compressed debug sections. (Dwarf_ranges_table::read_ranges_table): Likewise. (Dwarf_pubnames_table::read_section): Check for GNU-style sections, and for compressed debug sections. (Dwarf_pubnames_table::read_header): Compute end address of table. (Dwarf_pubnames_table::next_name): Return flag_byte. Check for end of list by offset, not by offset == 0. (Dwarf_info_reader::do_read_string_table): Check for compressed debug sections. * gold/dwarf_reader.h (Dwarf_pubnames_table::Dwarf_pubnames_table): Initialize new data members. (Dwarf_pubnames_table::next_name): return flag_byte. (Dwarf_pubnames_table::end_of_table_): New data member. (Dwarf_pubnames_table::is_gnu_style_): New data member. * gold/gdb-index.cc (gdb_index_version): Update to version 7. (Gdb_index_info_reader::read_pubtable): Read flag_byte. (Gdb_index_info_reader::read_pubnames_and_pubtypes): Don't read skeleton type unit DIEs. (Gdb_index::add_symbol): Add flag_byte; adjust all callers. (Gdb_index::do_write): Write flag_byte. * gold/gdb-index.h (Gdb_index::add_symbol): Add flags parameter. (Gdb_index::Cu_vector): Store flags along with cu indexes. * gold/testsuite/gdb_index_test_3.sh: Allow versions 4-7. * gold/testsuite/gdb_index_test_comm.sh: Likewise.
* Update copyright year to 2014H.J. Lu2014-01-082-2/+6
| | | | | | | | | | | | | | | | | | | | | | binutils/ * version.c (print_version): Update copyright year to 2014. gas/ * as.c (parse_args): Update copyright year to 2014. gold/ * version.cc (print_version): Update copyright year to 2014. ld/ * ldver.c (ldversion): Update copyright year to 2014. opcodes/ * i386-gen.c (process_copyright): Update copyright year to 2014.
* * stringpool.cc (Stringpool_template::reserve): AddIan Lance Taylor2013-12-192-2/+11
| | | | | HAVE_UNORDERED_MAP case. * stringpool.cc (Stringpool_template::print_stats): Likewise.
* Add configure checks for <unordered_set> and <unordered_map>.Cary Coutant2013-12-185-2/+43
| | | | | | | | gold/ * configure.ac: Check for <unordered_set> and <unordered_map>. * config.in: Regenerate. * configure: Regenerate. * system.h: Use <unordered_set> and <unordered_map> if available.
* Use $(INSTALL_PROGRAM_ENV) consistently.Roland McGrath2013-12-103-12/+20
| | | | | | | | | | | | | | | | | | | | | | | binutils/ * Makefile.am (install-exec-local): Prefix libtool invocation with $(INSTALL_PROGRAM_ENV). * Makefile.in: Regenerate. gas/ * Makefile.am (install-exec-bindir): Prefix libtool invocation with $(INSTALL_PROGRAM_ENV). (install-exec-tooldir): Likewise. * Makefile.in: Regenerate. gold/ * Makefile.am (install-exec-local): Prefix $(INSTALL_PROGRAM) uses with $(INSTALL_PROGRAM_ENV). * Makefile.in: Regenerate. ld/ * Makefile.am (install-exec-local): Prefix libtool invocation with $(INSTALL_PROGRAM_ENV). * Makefile.in: Regenerate.
* Add check for which library is needed for dlopen.Cary Coutant2013-11-223-5/+74
| | | | | | | | gold/ PR gold/16203 * configure.ac: Add check for which library is needed for dlopen. * configure: Regenerate.
* Use in-tree assembler for exception_x86_64_bnd_test.Cary Coutant2013-11-223-4/+10
| | | | | | | gold/ * testsuite/Makefile.am (exception_x86_64_bnd_test): Use in-tree assembler. * testsuite/Makefile.in: Regenerate.
* Add R_X86_64_PC32_BND/R_X86_64_PLT32_BND suppor to goldH.J. Lu2013-11-184-8/+96
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | elfcpp/ * x86_64.h (R_X86_64_PC32_BND): New. (R_X86_64_PLT32_BND): Likewise. gold/ * x86_64.cc (Target_x86_64<size>::Scan::get_reference_flags): Handle R_X86_64_PC32_BND and R_X86_64_PLT32_BND just like R_X86_64_PC32 and R_X86_64_PLT32, respectively. (Target_x86_64<size>::Scan::local): Likewise. (Target_x86_64<size>::Scan::global): Likewise. (Target_x86_64<size>::Relocate::relocate): Likewise. (Target_x86_64<size>::Relocatable_size_for_reloc::get_size_for_reloc): Likewise. (Target_x86_64<size>::Scan::check_non_pic(): Handle R_X86_64_PC32_BND. * testsuite/Makefile.am (check_PROGRAMS): Add exception_x86_64_bnd_test. (exception_x86_64_bnd_test_SOURCES): New macro. (exception_x86_64_bnd_test_DEPENDENCIES): Likewise. (exception_x86_64_bnd_test_LDFLAGS): Likewise. (exception_x86_64_bnd_test_LDADD): Likewise. (exception_x86_64_bnd_1.o): New rule. (exception_x86_64_bnd_2.o): Likewise. * testsuite/Makefile.in: Regenerated.
* Add missing ChangeLog for 88b8e63904fda25c029deaf25d7b4e489b351470Alan Modra2013-11-151-0/+12
|
* Fixes to powerpc64 gold ELFv2 supportAlan Modra2013-11-152-154/+350
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * powerpc.cc (Target_powerpc::glink_section): Provide non-const accessor. (Target_powerpc::Branch_info::make_stub): Make global entry stubs. Only call ppc64_local_entry_offset for 64-bit. Restrict symval_for_branch lookup to ELFv1. (Stub_table::add_plt_call_entry): Use unsigned int off. (Output_data_glink::Address, invalid_address): New. (Output_data_glink::add_eh_frame): Move out of line. Add support for ELFv2. (Output_data_glink::add_global_entry, find_global_entry, global_entry_address): New functions. (Output_data_glink::global_entry_stubs_, end_branch_table_, ge_size): New variables. (Output_data_glink::set_final_data_size): Add global entry stub sizing. (Output_data_glink::do_write): Write global entry stubs. (Target_powerpc::Scan::reloc_needs_plt_for_ifunc): Add target parameter. Return true for ELFv2. Adjust callers. (Target_powerpc::Scan::local, global): Restrict opd lookup to ELFv1. Similarly for ifunc and dynamic relocation processing specific to ELFv1. Recognize that symbols are defined on their plt entries for ELFv2. (Target_powerpc::symval_for_branch): Assert if called for ELFv2 or ppc32. (Target_powerpc::Relocate::relocate): Use global entry plt stub for symbol value if such exists on ELFv2. (Target_powerpc::Relocate::relocate): Don't call symval_for_branch when ELFv2. Do adjust for local entry offset when ELFv2. (Target_powerpc::do_dynsym_value): Set symbols to global entry plt stub for ELFv2. (Target_powerpc::do_plt_address_for_global): Similarly.
* Revert "Fix race condition while building EH frame header."Cary Coutant2013-11-143-11/+16
| | | | This reverts commit 7cdd7d57e6fa3932eb63aa785ae0e3fa837aab20.
* Add --verify-only option to DWP.Cary Coutant2013-11-143-9/+211
| | | | | | | | | | | | | | | | gold/ * dwp.cc (Dwo_file_entry): New type. (File_list): Use Dwo_file_entry. (Dwo_file::verify): New function. (Dwo_file::verify_dwo_list): New function. (Dwo_file::sized_verify_dwo_list): New function. (Dwo_name_info_reader::visit_compilation_unit): Add dwo_id to file list. (Dwp_options): New enum type. (dwp_options): Add --verify-only. (usage): Likewise. (main): Likewise. * dwp.h (gold_info): Add declaration.
* Fix race condition while building EH frame header.Cary Coutant2013-11-143-2/+20
| | | | | | | | | | gold/ PR gold/14860 * ehframe.cc (Eh_frame_hdr::Eh_frame_hdr): Initialize lock_. (Ehframe_hdr::set_final_data_size): Allocate a Lock. * ehframe.h (Eh_frame_hdr::record_fde): Hold the lock while updating fde_offsets_. (Eh_frame_hdr::lock_): New data member.
* Fix assert failure with --emit-relocs and .eh_frame sections.Cary Coutant2013-11-062-22/+28
| | | | | | | gold/ PR gold/15758 * object.cc (Sized_relobj_file::do_layout): Handle .eh_frame sections before reloc sections.
* Remove powerpc.cc copy of use_plt_offsetAlan Modra2013-11-042-115/+37
| | | | | | | | | | | | | | | | | This adds an extra flag for needs_dynamic_reloc() in order to remove the copy of this function and use_plt_offset() in powerpc.cc, and tweaks the powerpc get_reference_flags() to return the flag as appropriate. ELFv2 does not want ELFv1 behaviour here. * symtab.h (Symbol::Reference_flags): Add FUNC_DESC_ABI. (Symbol::needs_dynamic_reloc): Test new flag. * powerpc.cc (needs_dynamic_reloc, use_plt_offset): Delete. (Target_powerpc::Scan::get_reference_flags): Add target param. Return FUNC_DESC_ABI for 64-bit ELFv1. (Target_powerpc::Branch_info::make_stub): Adjust get_reference_flags call. (Target_powerpc::Scan::global): Use Symbol::needs_dynamic_reloc. (Target_powerpc::Relocate::relocate): Use Symbol::use_plt_offset.
* Restore support for dwp v2 DWARF package file format.Cary Coutant2013-10-315-549/+682
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | gold/ * dwarf_reader.cc (Dwarf_info_reader::visit_type_unit): Add tu_length parameter. Adjust all callers. * dwarf_reader.h (Dwarf_info_reader::visit_type_unit): Likewise. * dwp.cc: Include dwarf.h. (Section_bounds): New struct type. (Unit_set): New struct type. (Dwo_file::Dwo_file): Initialize new data member. (Dwo_file::read_compunit_index, Dwo_file::read_typeunit_index): Combine and rename to... (Dwo_file::read_unit_index): ...this. (Dwo_file::sized_read_compunit_index) (Dwo_file::sized_read_typeunit_index): Combine and rename to... (Dwo_file::sized_read_unit_index): ...this. (Dwo_file::copy_section): Remove section_name, is_str_offsets parameters; add section_id parameter. (Dwo_file::add_cu_set, Dwo_file::add_tu_set): Combine and rename to... (Dwo_file::add_unit_set): ...this. (Dwo_file::shndx_map_): Remove. (Dwo_file::sect_offsets_): New data member. (Dwp_output_file::Dwp_output_file): Initialize new data members. (Dwp_output_file::add_section): Rename to... (Dwp_output_file::add_contribution): ...this. (Dwp_output_file::add_cu_set): Combine parameters into a struct. (Dwp_output_file::add_tu_set): Likewise. (Dwp_output_file::Contribution): New type. (Dwp_output_file::Section::contributions): New data member. (Dwp_output_file::Cu_or_tu_set): Remove. (Dwp_output_file::Section::Section): New ctor. (Dwp_output_file::Dwp_index::Shndx_pool): Remove. (Dwp_output_file::Dwp_index::Section_table): New type. (Dwp_output_file::Dwp_index::Dwp_index): Initialize new data members. (Dwp_output_file::Dwp_index::enter_set): Change type of "set" parameter. (Dwp_output_file::Dwp_index::shndx_pool): Remove. (Dwp_output_file::Dwp_index::shndx_pool_end): Remove. (Dwp_output_file::Dwp_index::section_table): New member function. (Dwp_output_file::Dwp_index::section_table_end): New member function. (Dwp_output_file::Dwp_index::shndx_pool_size): Remove. (Dwp_output_file::Dwp_index::section_table_rows): New member function. (Dwp_output_file::Dwp_index::section_table_cols): New member function. (Dwp_output_file::Dwp_index::shndx_pool_): Remove. (Dwp_output_file::Dwp_index::section_table_): New data member. (Dwp_output_file::Dwp_index::section_mask_): New data member. (Dwp_output_file::add_output_section): New member function. (Dwp_output_file::write_new_section): New member function. (Dwp_output_file::write_contributions): New member function. (Dwp_output_file::section_id_map_): New data member. (class Dwo_id_info_reader): Remove. (class Unit_reader): New class. (get_dwarf_section_name): New function. (Dwo_file::read_executable): Adjust initializations of class data. (Dwo_file::read): Add support for v2 package file format. (Dwo_file::read_unit_index): Likewise. (Dwo_file::sized_read_unit_index): Likewise. (Dwo_file::copy_section): Likewise. (Dwo_file::add_unit_set): Likewise. (Dwp_output_file::add_output_section): Likewise. (Dwp_output_file::add_contribution): Likewise. (Dwp_output_file::Dwp_index::find_or_add): Use row index to check for empty slot. (Dwp_output_file::Dwp_index::enter_set): Add support for v2 package file format. (Dwp_output_file::Dwp_index::grow): Use row index to check for empty slot. (Dwp_output_file::initialize): Remove unused function. (Dwp_output_file::finalize): Add support for v2 package file format. (Dwp_output_file::write_index): Likewise. * gdb-index.cc (Gdb_index_info_reader::visit_type_unit): Adjust function prototype.
* gold/Cary Coutant2013-10-313-4/+9
| | | | | * configure.ac: Fix check for -fmerge-constants. * configure.ac: Regenerate.
* gold: x86_64-nacl: Correct 9-byte nop sequence to match what the assembler ↵Roland McGrath2013-10-302-1/+6
| | | | | | | | generates. gold/ * x86_64.cc (Output_data_plt_x86_64_nacl::first_plt_entry): Correct 9-byte nop sequence to match what the assembler generates.
* PowerPC64 ELFv2 support for gold.Alan Modra2013-10-302-133/+445
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | elfcpp/ * powerpc.h (EF_PPC64_ABI): New enum constant. (STO_PPC64_LOCAL_BIT, STO_PPC64_LOCAL_MASK): Likewise. (ppc64_decode_local_entry): New function. (ppc64_encode_local_entry): Likewise. gold/ * powerpc.cc (Powerpc_relobj::abiversion, set_abiversion, ppc64_local_entry_offset, ppc64_local_entry_offset, do_read_symbols): New functions. (Powerpc_relobj::e_flags_, st_other_): New vars. (Powerpc_relobj::Powerpc_relobj): Call set_abiversion. (Powerpc_dynobj::abiversion, set_abiversion): New functions. (Powerpc_relobj::e_flags_): New var. (Target_powerpc::first_plt_entry_offset, plt_entry_size): Inline and adjust for ELFv2. (Target_powerpc::abiversion, set_abiversion, stk_toc): New functions. (Powerpc_relobj::do_find_special_sections): Check no .opd in ELFv2. (Powerpc_dynobj::do_find_special_sections): Likewise. (Target_powerpc::do_define_standard_symbols): Define ".TOC.". (Target_powerpc::Branch_info::make_stub): Adjust stub destination to ELFv2 local entry. (Target_powerpc::do_relax): No thread safe barriers needed for ELFv2. (Output_data_plt_powerpc::initial_plt_entry_size_, plt_entry_size): Delete. Replace all uses with first_plt_entry_offset() and plt_entry_size(). (Output_data_plt_powerpc::Output_data_plt_powerpc): Remove reserved_size parm. Update callers. (Output_data_plt_powerpc::entry_count): Update. (Output_data_plt_powerpc::first_plt_entry_offset): Make private and use Target_powerpc::first_plt_entry_offset(). (Output_data_plt_powerpc::get_plt_entry_size): Similarly and rename to plt_entry_size. (Output_data_plt_powerpc::add_ifunc_entry, add_local_ifunc_entry): Adjust reloc for ELFv2. (glink_eh_frame_fde_64): Rename to glink_eh_frame_fde_64v1. (glink_eh_frame_fde_64v2): New. (Stub_table::plt_call_size): Support ELFv2 sizing. (Output_data_glink::add_eh_frame): Use the new FDE. (Output_data_glink::set_final_data_size): Adjust for ELFv2 glink. (Stub_table::do_write): Write ELFv2 stubs and glink. (Target_powerpc::Relocate::relocate): Replaces nop after call with ld 2,24(1) and adjust local offset destination for ELFv2.
* Report overflow on PowerPC64 @h and @ha relocations.Alan Modra2013-10-302-39/+98
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This changes the behaviour of @h and @ha on PowerPC64 to report errors on 32-bit overflow. The motivation for this change is that on PowerPC64, most uses of @h and @ha modifiers and their corresponding relocations are to build up 32-bit offsets. We'd like to know when such offsets overflow. Only rarely do people use @h or @ha with the high 32-bit modifiers to build a 64-bit constant. Those uses will now need to use two new modifiers, @high and @higha, if the constant isn't known at assembly time. For now, we won't report overflow at assembly time.. This also fixes an error when applying some of the HIGHER and HIGHEST relocations. include/elf/ * ppc64.h (R_PPC64_ADDR16_HIGH, R_PPC64_ADDR16_HIGHA, R_PPC64_TPREL16_HIGH, R_PPC64_TPREL16_HIGHA, R_PPC64_DTPREL16_HIGH, R_PPC64_DTPREL16_HIGHA): New. (IS_PPC64_TLS_RELOC): Match new tls relocs. bfd/ * reloc.c (BFD_RELOC_PPC64_ADDR16_HIGH, BFD_RELOC_PPC64_ADDR16_HIGHA, BFD_RELOC_PPC64_TPREL16_HIGH, BFD_RELOC_PPC64_TPREL16_HIGHA, BFD_RELOC_PPC64_DTPREL16_HIGH, BFD_RELOC_PPC64_DTPREL16_HIGHA): New. * elf64-ppc.c (ppc64_elf_howto_raw): Add entries for new relocs. Make all _HA and _HI relocs report signed overflow. (ppc64_elf_reloc_type_lookup): Handle new relocs. (must_be_dyn_reloc, ppc64_elf_check_relocs): Likewise. (dec_dynrel_count, ppc64_elf_relocate_section): Likewise. (ppc64_elf_relocate_section): Don't apply 0x8000 adjust to R_PPC64_TPREL16_HIGHER, R_PPC64_TPREL16_HIGHEST, R_PPC64_DTPREL16_HIGHER, and R_PPC64_DTPREL16_HIGHEST. * libbfd.h: Regenerate. * bfd-in2.h: Regenerate. gas/ * config/tc-ppc.c (SEX16): Don't mask. (REPORT_OVERFLOW_HI): Define as zero. (ppc_elf_suffix): Support @high, @higha, @dtprel@high, @dtprel@higha, @tprel@high, and @tprel@higha modifiers. (md_assemble): Ignore X_unsigned when applying 16-bit insn fields. Add (disabled) code to check @h and @ha reloc overflow for powerpc64. Handle new relocs. (md_apply_fix): Similarly. elfcpp/ * powerpc.h (R_PPC64_ADDR16_HIGH, R_PPC64_ADDR16_HIGHA, R_PPC64_TPREL16_HIGH, R_PPC64_TPREL16_HIGHA, R_PPC64_DTPREL16_HIGH, R_PPC64_DTPREL16_HIGHA): Define. gold/ * powerpc.cc (Target_powerpc::Scan::check_non_pic): Handle new relocs. (Target_powerpc::Scan::global, local): Likewise. (Target_powerpc::Relocate::relocate): Likewise. Check for overflow on all ppc64 @h and @ha relocs.
* * output.h (Output_data_got::add_constant): Tidy.Alan Modra2013-10-143-7/+92
| | | | | | (Output_data_got::add_constant_pair): New function. * powerpc.cc (Output_data_got_powerpc): Override all Output_data_got methods used so as to first call reserve_ent().
* gold/Roland McGrath2013-10-112-19/+3
| | | | | * powerpc.cc (Output_data_got_powerpc): Remove unused methods add_got_entry and add_got_entry_pair.
* Revert inappropriate portions of last change.Roland McGrath2013-10-112-34/+34
|
* gold/Roland McGrath2013-10-113-4/+18
| | | | | | * configure.ac (TLS_GNU2_DIALECT): Use -Werror in test. (HAVE_PUBNAMES): Likewise. * configure: Regenerate.
* gold/Roland McGrath2013-10-113-62/+65
| | | | | * testsuite/Makefile.am: Replace '-T foo' with '-Wl,-T,foo' throughout. * testsuite/Makefile.in: Regenerate.
* gold/Roland McGrath2013-10-116-12/+22
| | | | | | | | | | | | * target.h (Target::adjust_elf_header, Target::do_adjust_elf_header): Remove const from declaration. * target.cc (Sized_target::do_adjust_elf_header): Update definition. * sparc.cc (Target_sparc::do_adjust_elf_header): Likewise. * output.h (Output_file_header): Remove const from member target_ and corresponding constructor argument. * output.cc (Output_file_header::Output_file_header): Update prototype. (Output_file_header::do_sized_write): Use this->target_ in place of parameters()->target().
* gold/Roland McGrath2013-10-112-1/+5
| | | | * testsuite/undef_symbol.cc (Foo::get_a): New method.
* gold/Roland McGrath2013-10-118-45/+101
| | | | | | | | | | | | | * configure.ac (MERGE_CONSTANTS_FLAG): New check. * configure: Regenerate. * Makefile.in: Regenerate. * testsuite/merge_string_literals_1.c: Renamed to have .cc suffix. * testsuite/merge_string_literals_2.c: Likewise. * testsuite/Makefile.am (merge_string_literals_1.o, merge_string_literals_2.o): Update deps. (AM_CFLAGS, AM_CXXFLAGS): Use $(MERGE_CONSTANTS_FLAG) in place of literal -fmerge-constants. * testsuite/Makefile.in: Regenerate.