diff options
author | Ian Lance Taylor <ian@airs.com> | 2011-06-28 21:15:42 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 2011-06-28 21:15:42 +0000 |
commit | b3ce541e970466431bf6abfa8ad58424a1d1a7ec (patch) | |
tree | 5f0d7db6b9f153a8ac032e7f20e96ecbc5e22a62 /gold/i386.cc | |
parent | af24f60c6d8ca5ab59f069dd8ce2489d8a7f9e57 (diff) | |
download | gdb-b3ce541e970466431bf6abfa8ad58424a1d1a7ec.zip gdb-b3ce541e970466431bf6abfa8ad58424a1d1a7ec.tar.gz gdb-b3ce541e970466431bf6abfa8ad58424a1d1a7ec.tar.bz2 |
* target.h (Target::can_check_for_function_pointers): Rewrite.
Make non-virtual.
(Target::can_icf_inline_merge_sections): Likewise.
(Target::section_may_have_icf_unsafe_poineters): Likewise.
(Target::Target_info): Add can_icf_inline_merge_sections field.
(Target::do_can_check_for_function_pointers): New virtual
function.
(Target::do_section_may_have_icf_unsafe_pointers): Likewise.
* arm.cc (Target_arm::do_can_check_for_function_pointers): Rename
from can_check_for_function_pointers, move in file.
(Target_arm::do_section_may_have_icf_unsafe_pointers): Rename from
section_may_have_icf_unsafe_poineters, move in file.
(Target_arm::arm_info): Initialize can_icf_inline_merge_sections.
* i386.cc (Target_i386::do_can_check_for_function_pointers):
Rename from can_check_for_function_pointers, move in file.
(Target_i386::can_icf_inline_merge_sections): Remove.
(Target_i386::i386_info): Initialize
can_icf_inline_merge_sections.
* powerpc.cc (Target_powerpc::powerpc_info) [all versions]:
Initialize can_icf_inline_merge_sections.
* sparc.cc (Target_sparc::sparc_info) [both version]: Likewise.
* x86_64.cc (Target_x86_64::do_can_check_for_function_pointers):
Rename from can_check_for_function_pointers, move in file.
(Target_x86_64::can_icf_inline_merge_sections): Remove.
(Target_x86_64::x86_64_info): Initialize
can_icf_inline_merge_sections.
* testsuite/testfile.cc (Target_test::test_target_info):
Likewise.
* icf.cc (get_section_contents): Correct formatting.
Diffstat (limited to 'gold/i386.cc')
-rw-r--r-- | gold/i386.cc | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/gold/i386.cc b/gold/i386.cc index d60ac22..bd5eaaf 100644 --- a/gold/i386.cc +++ b/gold/i386.cc @@ -1,6 +1,6 @@ // i386.cc -- i386 target support for gold. -// Copyright 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. +// Copyright 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. // Written by Ian Lance Taylor <iant@google.com>. // This file is part of gold. @@ -171,14 +171,6 @@ class Target_i386 : public Target_freebsd<32, false> got_mod_index_offset_(-1U), tls_base_symbol_defined_(false) { } - inline bool - can_check_for_function_pointers() const - { return true; } - - virtual bool - can_icf_inline_merge_sections () const - { return true; } - // Process the relocations to determine unreferenced sections for // garbage collection. void @@ -291,6 +283,11 @@ class Target_i386 : public Target_freebsd<32, false> do_plt_section_for_local(const Relobj*, unsigned int) const { return this->plt_section(); } + // We can tell whether we take the address of a function. + inline bool + do_can_check_for_function_pointers() const + { return true; } + // Return whether SYM is call to a non-split function. bool do_is_call_to_non_split(const Symbol* sym, unsigned int) const; @@ -642,6 +639,7 @@ const Target::Target_info Target_i386::i386_info = false, // has_resolve true, // has_code_fill true, // is_default_stack_executable + true, // can_icf_inline_merge_sections '\0', // wrap_char "/usr/lib/libc.so.1", // dynamic_linker 0x08048000, // default_text_segment_address |