aboutsummaryrefslogtreecommitdiff
path: root/gold
AgeCommit message (Collapse)AuthorFilesLines
2013-11-06Fix assert failure with --emit-relocs and .eh_frame sections.Cary Coutant2-22/+28
gold/ PR gold/15758 * object.cc (Sized_relobj_file::do_layout): Handle .eh_frame sections before reloc sections.
2013-11-04Remove powerpc.cc copy of use_plt_offsetAlan Modra2-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.
2013-10-31Restore support for dwp v2 DWARF package file format.Cary Coutant5-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.
2013-10-31gold/Cary Coutant3-4/+9
* configure.ac: Fix check for -fmerge-constants. * configure.ac: Regenerate.
2013-10-30gold: x86_64-nacl: Correct 9-byte nop sequence to match what the assembler ↵Roland McGrath2-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.
2013-10-30PowerPC64 ELFv2 support for gold.Alan Modra2-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.
2013-10-30Report overflow on PowerPC64 @h and @ha relocations.Alan Modra2-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.
2013-10-14 * output.h (Output_data_got::add_constant): Tidy.Alan Modra3-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().
2013-10-11gold/Roland McGrath2-19/+3
* powerpc.cc (Output_data_got_powerpc): Remove unused methods add_got_entry and add_got_entry_pair.
2013-10-11Revert inappropriate portions of last change.Roland McGrath2-34/+34
2013-10-11gold/Roland McGrath3-4/+18
* configure.ac (TLS_GNU2_DIALECT): Use -Werror in test. (HAVE_PUBNAMES): Likewise. * configure: Regenerate.
2013-10-11gold/Roland McGrath3-62/+65
* testsuite/Makefile.am: Replace '-T foo' with '-Wl,-T,foo' throughout. * testsuite/Makefile.in: Regenerate.
2013-10-11gold/Roland McGrath6-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().
2013-10-11gold/Roland McGrath2-1/+5
* testsuite/undef_symbol.cc (Foo::get_a): New method.
2013-10-11gold/Roland McGrath8-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.
2013-10-11gold/Roland McGrath15-71/+60
* i386.cc (Target_i386): Remove unused member dynbss_. * arm.cc (Target_arm): Likewise. * powerpc.cc (Target_powerpc): Likewise. * sparc.cc (Target_sparc): Likewise. * tilegx.cc (Target_tilegx): Likewise. * x86_64.cc (Target_x86_64): Likewise. * dwarf_reader.h (Dwarf_info_reader): Remove unused members type_signature_, type_offset_. * plugin.h (Plugin_hook): Remove unused member layout_. * readsyms.h (Add_symbols): Remove unused members dirpath_, dirindex_, mapfile_. (Read_member): Remove unused members input_objects_, symtab_, mapfile_, layout_. (Check_library): Remove unused member symtab_. * archive.h (Lib_group): Remove unused member lib_. * archive.cc (Lib_group::Lib_group): Update initializer. * incremental.h (Incremental_binary): Remove unused member target_. (Incremental_script_entry): Removed unused member script_. * layout.h (Write_symbols_task): Remove unused member input_objects_. * icf.h (Icf): Remove unused member num_tracked_relocs.
2013-10-11gold/Roland McGrath3-3/+13
* gold-threads.h (Once): Conditionalize member was_run_lock_ on [ENABLE_THREADS && __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4], matching its only use. * gold-threads.cc (Once::Once): Likewise conditionalize initializer.
2013-10-11gold/Roland McGrath2-2/+7
* archive.h: Use struct rather than class for forward declaration of Read_symbols_data.
2013-10-07gold/Cary Coutant3-17/+31
PR gold/16010 * testsuite/Makefile.am (icf_test): Fix dependencies. (icf_safe_test): Likewise. (icf_safe_so_test): Likewise. (large_symbol_alignment): Add empty _LDADD rule. * testsuite/Makefile.in: Regenerate.
2013-09-03Use relative relocation for R_X86_64_32 on x32H.J. Lu2-1/+8
2013-09-03 Pavel Chupin <pavel.v.chupin@intel.com> PR gold/15927 * x86_64.cc (Target_x86_64<size>::Scan::global): Use relative relocation for R_X86_64_32 on x32.
2013-08-27gold/Roland McGrath5-149/+252
* output.cc (Output_segment::set_section_addresses): Take new Target* argument. If target->isolate_execinstr() and the segment is executable and starts at a target->abi_pagesize() boundary, pad its end out to a target->abi_pagesize() boundary with code fill. * output.h (Output_segment::set_section_addresses): Update decl. * layout.h (Layout::check_output_data_for_reset_values): Take new argument RELAX_OUTPUTS. (Layout): New member relax_output_list_. (Layout::add_relax_output): New method. * layout.cc (Layout::Layout): Update constructor. (Layout::reset_relax_output): New method. (Layout::clean_up_after_relaxation): Call it. (Layout::prepare_for_relaxation): Update caller. (Layout::set_segment_offsets): Update callers of set_section_addresses. Call reset_relax_output before re-processing segments for isolate_execinstr case. (Layout::write_data): Handle relax_output_list_. (Layout::Relaxation_debug_check::check_output_data_for_reset_values): Take new argument RELAX_OUTPUTS. Assert it's an empty collection.
2013-08-23 PR binutils/15834Nick Clifton2-1/+6
Fix typos: --- bfd/bfdio.c | 2 +- bfd/elf32-spu.c | 2 +- bfd/elfnn-aarch64.c | 2 +- binutils/od-xcoff.c | 2 +- config/tcl.m4 | 2 +- gas/config/tc-ia64.c | 2 +- gas/config/tc-sparc.c | 2 +- gas/config/tc-z80.c | 12 ++++++------ gas/doc/c-i386.texi | 6 +++--- gas/doc/c-m32r.texi | 2 +- gas/testsuite/gas/d10v/instruction_packing.d | 2 +- gas/testsuite/gas/z80/atend.d | 2 +- gold/object.h | 2 +- include/gdb/remote-sim.h | 2 +- include/opcode/ChangeLog | 2 +- include/opcode/i960.h | 2 +- ld/testsuite/ld-mips-elf/mips16-pic-1.inc | 2 +- opcodes/aarch64-asm.c | 2 +- opcodes/aarch64-dis.c | 2 +- opcodes/msp430-dis.c | 2 +-
2013-08-16gold/Roland McGrath3-0/+30
* i386.cc (Target_i386_nacl::do_code_fill): New virtual function. * x86_64.cc (Target_x86_64_nacl::do_code_fill): New virtual function.
2013-08-07gold/Cary Coutant5-608/+626
Revert support for v2 DWP files: 2013-03-01 Cary Coutant <ccoutant@google.com> Add dwp support for v2 DWARF package file format. * 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.
2013-07-31gold/Cary Coutant4-2/+56
* object.cc (Sized_relobj::do_output_section_address): New function. (Sized_relobj): Instantiate explicitly. * object.h (Object::output_section_address): New function. (Object::do_output_section_address): New function. (Sized_relobj::do_output_section_address): New function. * powerpc.cc (Target_powerpc::symval_for_branch): Use it.
2013-07-30Add missing author to last ChangeLog entry.Cary Coutant1-0/+1
2013-07-30 gold/Cary Coutant10-23/+62
* parameters.cc (Parameters::entry): Return target-specific entry symbol name. * target.h (Target::entry_symbol_name): New function. (Target_info::entry_symbol_name): New data member. * arm.cc (Target_arm::arm_info): Add entry_symbol_name. (Target_arm_nacl::arm_nacl_info): Likewise. * i386.cc (Target_i386::i386_info): Likewise. (Target_i386_nacl::i386_nacl_info): Likewise. * powerpc.cc (Target_powerpc::powerpc_info): Likewise. * sparc.cc (Target_sparc::sparc_info): Likewise. * tilegx.cc (Target_tilegx::tilegx_info): Likewise. * x86_64.cc: (Target_x86_64::x86_64_info) Likewise. (Target_x86_64_nacl::x86_64_nacl_info) Likewise. * testsuite/testfile.cc (Target_test::test_target_info): Likewise.
2013-07-292013-07-22 Sterling Augustine <saugustine@google.com>Sterling Augustine5-126/+377
* dwarf_reader.cc (Dwarf_pubnames_table::read_section): Convert parameter shndx to local variable. Add parameters symtab and symtab_size. Scan over section names. Find relocation section corresponding to current section. Create and initialize reloc_mapper_ and reloc_type_. (Dwarf_pubnames_table::read_header): Add assertion. Change unit_length to off_t. Initialize member unit_length_. Fill in field cu_offset_. * dwarf_reader.h (Dwarf_pubnames_table::Dwarf_pubnames_table): Initialize new fields unit_length_ and cu_offset_. (Dwarf_pubnames_table::read_section): Update prototype. (Dwarf_pubnames_table::cu_offset): New member function. (Dwarf_pubnames_table::subsection_size): Likewise. (Dwarf_pubnames_table::cu_offset_, Dwarf_pubnames_table::unit_length): New fields. (Dwarf_info_reader::symtab, Dwarf_info_reader::symtab_size): Make member functions public. * gdb_index.cc (Gdb_index_info_reader::read_pubnames_and_pubtypes): Update comment. Rework logic. Move repeated parts to... (Gdb_index_info_reader::read_pubtable): ...here. New function. (Gdb_index::Gdb_index): Initialize new fields, pubnames_table_, pubtypes_table_, and stmt_list_offset. (Gdb_index::map_pubtable_to_dies, Gdb_index::find_pubname_offset, Gdb_index::find_pubtype_offset, Gdb_index::map_pubnames_and_types_to_dies): Define new functions. (Gdb_index::pubnames_read): Update prototype and rework logic. * gdb_index.h (Gdb_index_info_reader, Dwarf_pubnames_table): Forward declare. (Gdb_index::map_pubtable_to_dies, Gdb_index::find_pubname_offset, Gdb_index::find_pubtype_offset, Gdb_index::pubnames_table) Gdb_index::pubtypes_table, Gdb_index::map_pubnames_and_types_to_dies, Gdb_index::map_pubtable_to_dies): Declare functions. (Gdb_index::pubnames_read): Update declaration. (Gdb_index::Pubname_offset_map): New type. (Gdb_index::cu_pubname_map_, Gdb_index::cu_pubtype_map_, Gdb_index::pubnames_table_, Gdb_index::pubtypes_table_, Gdb_index::stmt_list_offset): Declare. (Gdb_index::pubnames_shndx_, Gdb_index::pubnames_offet_, Gdb_index::pubtypes_object_, Gdb_index::pubtypes_shndx_) Gdb_index::pubtypes_offset_): Remove.
2013-07-19gold/Roland McGrath5-9/+72
* options.h (General_options): Add -Trodata-segment option. * parameters.cc (Parameters::check_rodata_segment): New function. (Parameters::set_target_once): Call it. * parameters.h (Parameters): Declare it (private member function). * layout.cc (load_seg_unusable_for_headers): New function, broken out of Layout::relaxation_loop_body. If TARGET->isolate_execinstr() then validate rodata segment rather than text segment. (relaxation_loop_body): Call that. (is_text_segment): New function. Don't admit a non-executable segment if TARGET->isolate_execinstr(). (set_segment_offsets): Call it. Honor -Trodata-segment option.
2013-07-152013-07-15 Shawn Landden <shawnlandden@gmail.com>Cary Coutant3-7/+14
gold/ PR gold/15070 * fileread.h (File_read::get_view): Clarify comment about ALIGNED. * nacl.h (Sniff_file::View::View): Request aligned view.
2013-07-11gold/Cary Coutant2-1/+6
* powerpc.cc (Target_powerpc::write_branch_lookup_table): Use correct BRLT entry size.
2013-07-03bfd/Alan Modra2-4/+12
* elf64-ppc.c (struct ppc_stub_hash_entry): Delete "addend". (ppc64_elf_size_stubs): Don't set "addend". (ppc64_elf_relocate_section): Don't allow calls via toc-adjusting stubs without a following nop even in an executable, except for self-calls and both libc_start_main and .libc_start_main. gold/ * powerpc.cc (Target_powerpc::Relocate::relocate): Update self-call comment.
2013-07-01gold/Cary Coutant3-6/+40
* dwarf_reader.cc (Dwarf_ranges_table::read_ranges_table): Save reloc_type_. (Dwarf_ranges_table::read_range_list): Call lookup_reloc. (Dwarf_ranges_table::lookup_reloc): New function. * dwarf_reader.h (Dwarf_ranges_table::Dwarf_ranges_table): Initialize reloc_type_. (Dwarf_ranges_table::lookup_reloc): New function. (Dwarf_ranges_table::reloc_type_): New data member.
2013-06-27 PR gold/15662Cary Coutant2-2/+24
* powerpc.cc (Output_data_brlt_powerpc::reset_brlt_sizes): New function. (Output_data_brlt_powerpc::finalize_brlt_sizes): New function. (Target_powerpc::do_relax): Call the above.
2013-06-27 * powerpc.cc (Target_powerpc::symval_for_branch): Don't assertAlan Modra2-4/+17
on garbage collected .opd section. * powerpc.cc (Target_powerpc::do_gc_add_reference): Test dst_shndx is non-zero. (Target_powerpc::do_gc_mark_symbols): Likewise for sym->shndx(). (Target_powerpc::do_function_location): Likewise for loc->shndx.
2013-06-14gold/Cary Coutant7-87/+425
* resolve.cc (Symbol::override_base): Don't override st_type from plugin placeholder symbols. (Symbol_table::resolve): Likewise. (Symbol_table::should_override): Don't complain about TLS mismatch if the TO symbol is a plugin placeholder. * testsuite/Makefile.am (plugin_test_tls): New test. * testsuite/Makefile.in: Regenerate. * testsuite/plugin_test_tls.sh: New test script. * testsuite/two_file_test_2_tls.cc: New test source. * testsuite/two_file_test_tls.cc: New test source.
2013-06-06gold/Cary Coutant1-0/+49
Add missing test case from last patch.
2013-06-052013-06-05 Alexander Ivchenko <alexander.ivchenko@intel.com>Cary Coutant4-7/+54
gold/ * layout.cc (Layout::set_segment_offsets): Taking care of the case when the maximum segment alignment is larger than the page size. * testsuite/Makefile.am (large_symbol_alignment): Test that Gold correctly aligns the symbols with large alignemnt. * testsuite/Makefile.in: Regenerate. * testsuite/large_symbol_alignment.cc: New file.
2013-05-302013-05-30 Alexander Ivchenko <alexander.ivchenko@intel.com>Cary Coutant9-6/+221
Sriraman Tallam <tmsriram@google.com> * options.h (sort_section): New option. * output.h (Input_section_sort_section_prefix_special_ordering_compare): Rename from Input_section_sort_section_name_special_ordering_compare. (Input_section_sort_section_name_compare): New struct. * output.cc (Output_section::Input_section_sort_section_name_compare:: operator()): New function. (Output_section::sort_attached_input_sections): Use new sort function for .text if --sort-section=name is specified. * layout.cc (Layout::make_output_section): Add sorting by name when --sort-section=name is specified. * testsuite/Makefile.am (text_section_grouping): Test option --sort-section=name. * testsuite/Makefile.in: Regenerate. * testsuite/section_sorting_name.cc: New file. * testsuite/section_sorting_name.sh: New file.
2013-05-21gold/Cary Coutant7-8/+162
* symtab.h (Symbol::is_cxx_vtable): New function. * target-reloc.h (relocate_section): Check for vtable symbol. * testsuite/Makefile.am (missing_key_func.sh): New test case. * testsuite/Makefile.in: Regenerate. * testsuite/missing_key_func.cc: New test source. * testsuite/missing_key_func.sh: New test script.
2013-05-21gold/Cary Coutant4-16/+25
* object.cc (Sized_relobj_file::get_symbol_location_info): Set type of enclosing symbol. (Relocate_info::location): Check symbol type when describing symbol. * object.h (Symbol_location_info): Remove unused line_number; add enclosing_symbol_type. * testsuite/debug_msg.sh: Adjust expected output.
2013-05-13gold/Cary Coutant7-36/+33
* configure.ac: Export DEFAULT_TARGET. * configure: Regenerate. * Makefile.in: Regenerate. * testsuite/Makefile.am: Add .EXPORT_ALL_VARIABLES. * testsuite/Makefile.in: Regenerate. * testsuite/debug_msg.sh: Delete duplicate tests. Don't check undef_int error message match for powerpc where the source file and line number aren't available.
2013-05-10gold/Roland McGrath4-177/+196
* options.h (General_options): Add --rosegment-gap option. * options.cc (finalize): --rosegment-gap implies --rosegment. * layout.cc (set_segment_offsets): Let user option override target->rosegment_gap().
2013-05-10gold/Roland McGrath2-215/+221
* options.h (General_options): Remove leading space from help messages for -nostdlib and --rosegment.
2013-05-03 gold/Maciej W. Rozycki2-1/+6
PR ld/15365 * layout.cc (Layout::finalize): Make __ehdr_start STV_HIDDEN. ld/ PR ld/15365 * emultempl/elf32.em (gld${EMULATION_NAME}_before_allocation): Restrict __ehdr_start's export class to no less than STV_HIDDEN. ld/testsuite/ PR ld/15365 * ld-elf/ehdr_start.d: Expect __ehdr_start to be STB_LOCAL. * ld-mips-elf/ehdr_start-1.nd: New test. * ld-mips-elf/ehdr_start-2.nd: New test. * ld-mips-elf/ehdr_start-1.ld: New test linker script. * ld-mips-elf/ehdr_start-2.ld: New test linker script. * ld-mips-elf/ehdr_start-new.s: New test source. * ld-mips-elf/ehdr_start-o32.s: New test source. * ld-mips-elf/mips-elf.exp: Run the new tests.
2013-05-03 * merge.cc (Output_merge_string::do_add_input_section): CorrectAlan Modra2-10/+19
scan for number of strings. Rename vars to avoid shadowing. Include missing terminator in input_size_.
2013-05-01Restore empty string handlingH.J. Lu2-10/+13
* merge.cc (Output_merge_string<Char_type>::do_add_input_section): Restore empty string handling.
2013-05-01gold/Cary Coutant2-1/+7
* stringpool.cc (Stringpool_template::new_key_offset): Fix uninitialized warning.
2013-04-292013-04-29 Alexander Ivchenko <alexander.ivchenko@intel.com>Cary Coutant11-20/+194
gold/ * output.cc (Output_section::add_merge_input_section): Allow to merge sections if the alignment is more than character size. * merge.h (Output_merge_string::Output_merge_string): Remove assert. * merge.cc (Output_merge_string<Char_type>::do_add_input_section): Count only not-null strings. Check the alignment of strings. * stringpool.h (Stringpool_template<Stringpool_char>::Stringpool_template): Add alignment as the argument. (Stringpool_template<Stringpool_char>::addralign_): New class member. * stringpool.cc (Stringpool_template<Stringpool_char>::new_key_offset): Align non-zero length strings according to the addralign_. (Stringpool_template<Stringpool_char>::set_string_offsets): Updating offsets according to the given alignment. * testsuite/Makefile.am (text_section_grouping): Test if string literals are getting merged. * testsuite/Makefile.in: Regenerate. * testsuite/merge_string_literals_1.c: New file. * testsuite/merge_string_literals_2.c: Ditto. * testsuite/merge_string_literals.sh: Ditto.
2013-04-27 * target-reloc.h (relocate_section): If the reloc offset is out ofIan Lance Taylor8-9/+47
range, pass VIEW as NULL to relocate.relocate. * arm.cc (Target_arm:Relocate::relocate): Check for a NULL view. * i386.cc (Target_i386::Relocate::relocate): Likewise. * powerpc.cc (Target_powerpc::Relocate::relocate): Likewise. * sparc.cc (Target_sparc::Relocate::relocate): Likewise. * tilegx.cc (Target_tilegx::Relocate::relocate): Likewise. * x86_64.cc (Target_x86_64::Relocate::relocate): Likewise.