diff options
author | Han Shen <shenhan@google.com> | 2015-01-29 10:00:46 -0800 |
---|---|---|
committer | Han Shen <shenhan@google.com> | 2015-01-29 10:15:42 -0800 |
commit | fa89cc82f5ca51f3135a9f2043b85b6a16c205eb (patch) | |
tree | 5f21ce4f356cb7edbfc5475aae567c381f2cb3ee /gold/ChangeLog | |
parent | 716db898b72787d0d342c639c421cdd97f3afe9c (diff) | |
download | gdb-fa89cc82f5ca51f3135a9f2043b85b6a16c205eb.zip gdb-fa89cc82f5ca51f3135a9f2043b85b6a16c205eb.tar.gz gdb-fa89cc82f5ca51f3135a9f2043b85b6a16c205eb.tar.bz2 |
This patch adds IFUNC support for arm gold backend.
This is a feature required in chromeos arm development work.
Tested:
1) Built passed all-gold on x86_64 machine
2) Tested with basic gold aarch64 ifunc unittests -
a) global ifunc, statically/non-statically linked
b) local ifunc, statically/non-statically linked
c) global/local, other shared library routine mixed,
statically/non-statically linked
d) arm/thumb mode ifunc
e) linking chrome browser passed
Diffstat (limited to 'gold/ChangeLog')
-rw-r--r-- | gold/ChangeLog | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog index 8803028..601d11b 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,51 @@ +2015-01-22 Han Shen <shenhan@google.com> + + * arm.cc (Target_arm::Target_arm): Add initialization for new members. + (Target_arm::do_plt_address_for_global): New method. + (Target_arm::do_plt_address_for_local): New method. + (Target_arm::rel_irelative_section): New method. + (Target_arm::make_data_plt): Add more parameters for plt ctor. + (Target_arm::do_make_data_plt): Add more parameters for plt ctor. + (Target_arm::Scan::symbol_needs_plt_entry): Add ifunc support. + (Target_arm::Scan::reloc_needs_plt_for_ifunc): Add ifunc support. + (Target_arm::Scan::check_non_pic): Add ifunc support. + (Target_arm::Scan::local): Add ifunc support. + (Target_arm::Scan::global): Add ifunc support. + (Target_arm::make_plt_section): New method. + (Target_arm::make_plt_entry): Change to call to make_plt_section. + (Target_arm::make_local_ifunc_plt_entry): New method. + (Target_arm::got_irelative_): New member. + (Target_arm::rel_irelative_): New member. + (Target_arm::got_section): Add creation for got_irelative_. + (Target_arm::rel_dyn_section): Add creation for rel_irelative_. + (Target_arm::Relocate::relocate): Properly set local ifunc address. + (Target_arm::do_dynsym_value): Properly set global ifunc address. + (Target_arm::scan_reloc_for_stub): Properly set global ifunc address. + (Output_data_plt_arm::IRelative_data): New type. + (Output_data_plt_arm::Output_data_plt_arm): Add more parameters. + (Output_data_plt_arm::add_entry): Add more parameters. + (Output_data_plt_arm::add_relocation): New method. + (Output_data_plt_arm::add_local_ifunc_entry): New method. + (Output_data_plt_arm::rel_irelative): New method. + (Output_data_plt_arm::entry_count): Modified. + (Output_data_plt_arm::address_for_global): New method. + (Output_data_plt_arm::address_for_local): New method. + (Output_data_plt_arm::set_final_data_size): Add irelative_count_. + (Output_data_plt_arm::insert_irelative_data): New method. + (Output_data_plt_arm::irelative_rel_): New member. + (Output_data_plt_arm::got_): New member. + (Output_data_plt_arm::got_irelative_): New member. + (Output_data_plt_arm::irelative_count_): New member. + (Output_data_plt_arm::IRelative_data_vec): New typedef. + (Output_data_plt_arm::irelative_data_vec_): New member. + (Output_data_plt_arm::do_write): Write out irelative entries. + (Output_data_plt_arm_standard::Output_data_plt_arm_standard): Add + more parameters to ctor. + (Output_data_plt_arm_nacl::Output_data_plt_arm_nacl): Add + more parameters to ctor. + * output.h (Output_data_reloc::add_local_relative): New method. + * aarch64.cc (Output_data_plt_aarch64): Fixed typo in comment. + 2015-01-29 Alan Modra <amodra@gmail.com> * powerpc.cc (Target_powerpc::Relocate::relocate): Correct GOT_TLSLD |