aboutsummaryrefslogtreecommitdiff
path: root/gold/i386.cc
AgeCommit message (Collapse)AuthorFilesLines
2008-04-11 * i386.cc (Target_i386::got_mod_index_entry): Restore code previouslyCary Coutant1-0/+1
thought unnecessary. * x86_64.cc (Target_x86_64::got_mod_index_entry): Likewise.
2008-04-112008-04-11 Cary Coutant <ccoutant@google.com>Cary Coutant1-35/+211
Add support for TLS descriptors for i386 and x86_64. * i386.cc (Target_i386::Relocate::tls_desc_gd_to_ie): New function. (Target_i386::Relocate::tls_desc_gd_to_le): New function. (Target_i386::Got_type): Add GOT_TYPE_TLS_NOFFSET and GOT_TYPE_TLS_DESC. (Target_i386::got_mod_index_entry): Remove unnecessary code. (Target_i386::Scan::local): Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations. Fix problem with initial-exec relocations. (Target_i386::Scan::global): Fix problem with GD-to-IE relaxation. Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations; Fix problem with initial-exec relocations. (Target_i386::Relocate::relocate_tls): Likewise. (Target_i386::Relocate::tls_gd_to_ie): Fix problem with GD-to-IE relaxation. * output.cc (Output_data_dynamic::Dynamic_entry::write): Add support for section-plus-offset dynamic table entries. * output.h (Output_data_dynamic::add_section_plus_offset): New function. (Output_data_dynamic::Dynamic_entry): Add support for section-plus-offset dynamic table entries. (Output_data_dynamic::Classification): Likewise. (Output_data_dynamic::classification_): Renamed offset_. * x86_64.cc (Target_x86_64::Relocate::tls_desc_gd_to_ie): New function. (Target_x86_64::Relocate::tls_desc_gd_to_le): New function. (Target_x86_64::make_plt_section): New function. (Target_x86_64::reserve_tlsdesc_entries): New function. (Output_data_plt_x86_64::Output_data_plt_x86_64): Add new parameter. (Output_data_plt_x86_64::reserve_tlsdesc_entry): New function. (Output_data_plt_x86_64::has_tlsdesc_entry): New function. (Output_data_plt_x86_64::get_tlsdesc_got_offset): New function. (Output_data_plt_x86_64::get_tlsdesc_plt_offset): New function. (Output_data_plt_x86_64::tlsdesc_plt_entry): New field. (Output_data_plt_x86_64::set_final_data_size): Move out of line; add extra PLT entry for TLS descriptors. (Output_data_plt_x86_64::got_): New field. (Output_data_plt_x86_64::tlsdesc_got_offset_): New field. (Output_data_plt_x86_64::Output_data_plt_x86_64): Initialize new fields. (Output_data_plt_x86_64::do_write): Write extra PLT entry for TLS descriptors. (Target_x86_64::make_plt_entry): Factor out make_plt_section. (Target_x86_64::got_mod_index_entry): Remove unnecessary code. (Target_x86_64::Scan::local): Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations. (Target_x86_64::Scan::global): Likewise. (Target_x86_64::do_finalize_sections): Add dynamic table entries for TLS descriptors. (Relocate::relocate_tls): Fix problem with GD-to-IE relaxation. Implement R_386_TLS_GOTDESC and R_386_TLS_DESC_CALL relocations. (Target_x86_64::Relocate::tls_gd_to_ie): Fix problem with GD-to-IE relaxation. * configure.ac: Export new conditional variables TLS_GNU2_DIALECT and TLS_DESCRIPTORS. * Makefile.in: Rebuild. * configure: Rebuild. * testsuite/Makefile.am (tls_shared_gd_to_ie_test): New target. (tls_test_shared2.so): New target. (tls_shared_gd_to_ie_test_SOURCES): New variable. (tls_shared_gd_to_ie_test_DEPENDENCIES): New variable. (tls_shared_gd_to_ie_test_LDFLAGS): New variable. (tls_shared_gd_to_ie_test_LDADD): New variable. (tls_shared_gnu2_gd_to_ie_test): New target. (tls_test_gnu2.o, tls_test_file2_gnu2.o, tls_test_gnu2_shared2.so): New targets. (tls_shared_gnu2_gd_to_ie_test_SOURCES): New variable. (ls_shared_gnu2_gd_to_ie_test_DEPENDENCIES): New variable. (tls_shared_gnu2_gd_to_ie_test_LDFLAGS): New variable. (tls_shared_gnu2_gd_to_ie_test_LDADD): New variable. (tls_shared_gnu2_test): New target. (tls_test_gnu2_shared.so): New target. (tls_shared_gnu2_test_SOURCES): New variable. (tls_shared_gnu2_test_DEPENDENCIES): New variable. (tls_shared_gnu2_test_LDFLAGS): New variable. (tls_shared_gnu2_test_LDADD): New variable. * testsuite/Makefile.in: Rebuild. * testsuite/Makefile.
2008-04-09 * options.h (class General_options): Define --wrap as a specialIan Lance Taylor1-0/+1
option. Add wrap_symbols_ field. (General_options::any_wrap_symbols): New function. (General_options::is_wrap_symbol): New function. * options.cc (General_options::parse_wrap): New function. (General_options::General_options): Initialize wrap_symbols_. * symtab.cc (Symbol_table::wrap_symbol): New function. (Symbol_table::add_from_object): Handle --wrap. * symtab.h (class Symbol_table): Declare wrap_symbol. * target.h (Target::wrap_char): New function. (Target::Target_info): Add wrap_char field. * i386.cc (Target_i386::i386_info): Initialize wrap_char. * x86_64.cc (Target_x86_64::x86_64_info): Likewise. * testsuite/testfile.cc (Target_test::test_target_info): Likewise.
2008-03-25 * options.cc (options::help): Print list of supported targets.Ian Lance Taylor1-29/+3
* target-select.h: Include <vector>. (class Target_selector): Make machine_, size_, and is_big_endian_ fields const. Add bfd_name_ and instantiated_target_ fields. (Target_selector::Target_selector): Add bfd_name parameter. (Target_selector::recognize): Make non-virtual, call do_recognize. (Target_selector::recognize_by_name): Make non-virtual, call do_recognize_by_name. (Target_selector::supported_names): New function. (Target_selector::bfd_name): New function. (Target_selector::do_instantiate_target): New pure virtual function. (Target_selector::do_recognize): New virtual function. (Target_selector::do_recognize_by_name): New virtual function. (Target_selector::instantiate_target): New private function. (supported_target_names): Declare. * target-select.cc (Target_selector::Target_selector): Update for new parameter and fields. (select_target_by_name): Check that the name matches before calling recognize_by_name. (supported_target_names): New function. * i386.cc (class Target_selector_i386): Update Target_selector constructor call. Remove recognize and recognize_by_name. Add do_instantiate_target. * x86_64.cc (class Target_selector_x86_64): Likewise. * testsuite/testfile.cc (class Target_selector_test): Update for changes to Target_selector.
2008-03-25 * i386.cc (Target_i386::Got_type): New enum declaration.Cary Coutant1-30/+48
(Target_i386::Scan::local): Updated callers of Output_data_got member functions. (Target_i386::Scan::global): Likewise. (Target_i386::Relocate::relocate): Likewise. (Target_i386::Relocate::relocate_tls): Likewise. * object.h (Got_offset_list): New class. (Sized_relobj::local_has_got_offset): Added got_type parameter. (Sized_relobj::local_got_offset): Likewise. (Sized_relobj::set_local_got_offset): Likewise. (Sized_relobj::local_has_tls_got_offset): Removed. (Sized_relobj::local_tls_got_offset): Removed. (Sized_relobj::set_local_tls_got_offset): Removed. (Sized_relobj::Local_got_offsets): Changed to store a list of offsets. * output.cc (Output_data_got::add_global): Added got_type parameter. (Output_data_got::add_global_with_rel): Likewise. (Output_data_got::add_global_with_rela): Likewise. (Output_data_got::add_global_pair_with_rel): New function. (Output_data_got::add_global_pair_with_rela): New function. (Output_data_got::add_local): Added got_type parameter. (Output_data_got::add_local_with_rel): Likewise. (Output_data_got::add_local_with_rela): Likewise. (Output_data_got::add_local_pair_with_rel): New function. (Output_data_got::add_local_pair_with_rela): New function. (Output_data_got::add_global_tls): Removed. (Output_data_got::add_global_tls_with_rel): Removed. (Output_data_got::add_global_tls_with_rela): Removed. (Output_data_got::add_local_tls): Removed. (Output_data_got::add_local_tls_with_rel): Removed. (Output_data_got::add_local_tls_with_rela): Removed. * output.h (Output_data_got::add_global): Added got_type parameter. (Output_data_got::add_global_with_rel): Likewise. (Output_data_got::add_global_with_rela): Likewise. (Output_data_got::add_global_pair_with_rel): New function. (Output_data_got::add_global_pair_with_rela): New function. (Output_data_got::add_local): Added got_type parameter. (Output_data_got::add_local_with_rel): Likewise. (Output_data_got::add_local_with_rela): Likewise. (Output_data_got::add_local_pair_with_rel): New function. (Output_data_got::add_local_pair_with_rela): New function. (Output_data_got::add_global_tls): Removed. (Output_data_got::add_global_tls_with_rel): Removed. (Output_data_got::add_global_tls_with_rela): Removed. (Output_data_got::add_local_tls): Removed. (Output_data_got::add_local_tls_with_rel): Removed. (Output_data_got::add_local_tls_with_rela): Removed. * resolve.cc (Symbol::override_base_with_special): Removed reference to has_got_offset_ field. * symtab.cc (Symbol::init_fields): Replaced initialization of got_offset_ with got_offsets_. Removed initialization of has_got_offset_ *symtab.h (Symbol::has_got_offset): Aded got_type parameter. (Symbol::got_offset): Likewise. (Symbol::set_got_offset): Likewise. (Symbol::has_tls_got_offset): Removed. (Symbol::tls_got_offset): Removed. (Symbol::set_tls_got_offset): Removed. (Symbol::got_offset_): Removed. (Symbol::tls_mod_got_offset_): Removed. (Symbol::tls_pair_got_offset_): Removed. (Symbol::got_offsets_): New field. (Symbol::has_got_offset): Removed. (Symbol::has_tls_mod_got_offset): Removed. (Symbol::has_tls_pair_got_offset): Removed. * x86_64.cc (Target_x86_64::Got_type): New enum declaration. (Target_x86_64::Scan::local): Updated callers of Output_data_got member functions. (Target_x86_64::Scan::global): Likewise. (Target_x86_64::Relocate::relocate): Likewise. (Target_x86_64::Relocate::relocate_tls): Likewise.
2008-03-13Update copyright years. Update language files.Ian Lance Taylor1-1/+1
2008-02-29Remove gcc 3.2 compatibility hacks.Ian Lance Taylor1-3/+1
2008-02-28From Craig Silverstein: Have Parameters point to General_options.Ian Lance Taylor1-24/+25
2008-02-27Implement -q/--emit-relocs.Ian Lance Taylor1-2/+2
2008-02-26From Craig Silverstein: implement -z max-page-size and -zIan Lance Taylor1-2/+2
common-page-size.
2008-02-13Support selecting target by name.Ian Lance Taylor1-0/+13
2008-02-12Support dynamic relocations against local section symbols.Ian Lance Taylor1-3/+14
2008-02-08From Cary Coutant: fix handling of undefined symbols in sharedIan Lance Taylor1-2/+4
libraries.
2008-02-06Initial -r support.Ian Lance Taylor1-0/+182
2008-02-01From Cary Coutant: Fix a case in which code takes the address of aIan Lance Taylor1-1/+1
function and also calls it directly.
2008-01-26Don't pass around the target in order to define symbols; get it fromIan Lance Taylor1-2/+2
the parameters instead.
2008-01-23From Cary Coutant: Fix mixing PIC and non-PIC relocs in the sameIan Lance Taylor1-24/+37
shared library.
2007-12-21From Cary Coutant: Fix handling of versioned symbols, add some tests.Ian Lance Taylor1-1/+4
2007-12-20Convert more instances of off_t to be 32-bit types.Ian Lance Taylor1-26/+30
2007-12-11From Cary Coutant: Set DF_STATIC_TLS as appropriate.Ian Lance Taylor1-0/+4
2007-12-11From Cary Coutant: Handle TLS entry for TLS module index.Ian Lance Taylor1-33/+37
2007-12-07From Cary Coutant: Fix handling of RELATIVE RELA relocs.Ian Lance Taylor1-19/+24
2007-12-06From Cary Coutant: More support for generating shared libraries.Ian Lance Taylor1-103/+127
2007-11-29Clean up setting address and section offset.Ian Lance Taylor1-6/+6
2007-11-15From Cary Coutant: Count textrel with output sections rather thanIan Lance Taylor1-26/+18
setting a flag as we add each reloc in the target code.
2007-11-15From Craig Silverstein: Add support for --demangle.Ian Lance Taylor1-1/+1
2007-11-14From Cary Coutant: Improve i386 shared library TLS support.Ian Lance Taylor1-41/+320
2007-11-14Add heuristics for undefined symbol warnings.Ian Lance Taylor1-0/+5
2007-11-14Revert last patch.Ian Lance Taylor1-5/+0
2007-11-14Support special always-defined symbols for targets.Ian Lance Taylor1-0/+5
2007-11-12Correct handling of GOT references in a regular object.Ian Lance Taylor1-3/+4
2007-11-09From Cary Coutant: More shared library support, some refactorization.Ian Lance Taylor1-106/+127
2007-11-09Generate a complete exception frame header. Discard duplicateIan Lance Taylor1-6/+15
exception frame information.
2007-11-02From Cary Coutant: Correct generation of RELATIVE relocs.Ian Lance Taylor1-26/+77
2007-11-01From Cary Coutant: More support for -shared, including fixes to GOTIan Lance Taylor1-39/+92
handling.
2007-10-29From Craig Silverstein: better organization for TLS code.Ian Lance Taylor1-192/+192
2007-10-23Add support for PT_GNU_STACK.Ian Lance Taylor1-0/+1
2007-10-22Fix versions of copied symbols.Ian Lance Taylor1-6/+1
2007-10-20Handle PLT32 against local symbols.Ian Lance Taylor1-3/+8
2007-10-16From Cary Coutant: preliminary shared library support.Ian Lance Taylor1-16/+43
2007-10-16From Craig Silverstein: implement -Ttext.Ian Lance Taylor1-1/+1
2007-10-16From Craig Silverstein: support local GOT relocs for i386.Ian Lance Taylor1-7/+46
2007-10-14Remove extraneous newlines.Ian Lance Taylor1-1/+1
2007-10-14Run all error handling through an Errors object. Delete output fileIan Lance Taylor1-64/+42
on error.
2007-10-13From Craig Silverstein: use tls.h in x86_64.cc.Ian Lance Taylor1-3/+6
2007-10-11From Andrew Chatham: exit on relocation error.Ian Lance Taylor1-5/+5
2007-10-08From Craig Silverstein: add tls.h, use it in i386.cc.Ian Lance Taylor1-127/+132
2007-10-07Add support for local dynamic relocations.Ian Lance Taylor1-7/+103
2007-10-04From Craig Silverstein: x86_64 TLS support.Ian Lance Taylor1-1/+14
2007-10-01Cleanups from Craig Silverstein.Ian Lance Taylor1-3/+1