diff options
author | Sriraman Tallam <tmsriram@google.com> | 2010-04-20 21:13:30 +0000 |
---|---|---|
committer | Sriraman Tallam <tmsriram@google.com> | 2010-04-20 21:13:30 +0000 |
commit | ce97fa81e0c46d216b80b143ad8c02fff6906fef (patch) | |
tree | 539a9d93c76d2113b92da17405b144eba8fa92c5 /gold/target-reloc.h | |
parent | ec31cde5942e935e74f6ff919ffc480dfa2f1bac (diff) | |
download | gdb-ce97fa81e0c46d216b80b143ad8c02fff6906fef.zip gdb-ce97fa81e0c46d216b80b143ad8c02fff6906fef.tar.gz gdb-ce97fa81e0c46d216b80b143ad8c02fff6906fef.tar.bz2 |
2010-04-18 Sriraman Tallam <tmsriram@google.com>
* icf.cc (get_section_contents): Check for preemptible functions.
Ignore addend when appropriate.
* symtab.cc (should_add_dynsym_entry): Add new parameter. Check for
section folded.
(add_from_relobj): Check for section folded.
(set_dynsym_indexes): Fix call to should_add_dynsym_entry.
* symtab.h (should_add_dynsym_entry): Add new parameter.
* target-reloc.h (scan_relocs): Check for section folded.
* x86_64.cc (Target_x86_64::Scan::possible_function_pointer_reloc):
Check reloc types for function pointers in shared objects.
* testsuite/Makefile.am (icf_virtual_function_folding_test): New test
case.
(icf_preemptible_functions_test): New test case.
(icf_string_merge_test): New test case.
* testsuite.Makefile.in: Regenerate.
* testsuite/icf_safe_so_test.sh: Change to not fold foo_glob and
bar_glob. Refactor code.
* testsuite/icf_preemptible_functions_test.cc: New file.
* testsuite/icf_preemptible_functions_test.sh: New file.
* testsuite/icf_string_merge_test.cc: New file.
* testsuite/icf_string_merge_test.sh: New file.
* testsuite/icf_virtual_function_folding_test.cc: New file.
* testsuite/icf_virtual_function_folding_test.sh: New file.
Diffstat (limited to 'gold/target-reloc.h')
-rw-r--r-- | gold/target-reloc.h | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/gold/target-reloc.h b/gold/target-reloc.h index 510eea0..04854d2 100644 --- a/gold/target-reloc.h +++ b/gold/target-reloc.h @@ -83,7 +83,8 @@ scan_relocs( shndx = object->adjust_sym_shndx(r_sym, shndx, &is_ordinary); if (is_ordinary && shndx != elfcpp::SHN_UNDEF - && !object->is_section_included(shndx)) + && !object->is_section_included(shndx) + && !symtab->is_section_folded(object, shndx)) { // RELOC is a relocation against a local symbol in a // section we are discarding. We can ignore this @@ -102,7 +103,6 @@ scan_relocs( continue; } - scan.local(symtab, layout, target, object, data_shndx, output_section, reloc, r_type, lsym); } |