aboutsummaryrefslogtreecommitdiff
path: root/gold/options.h
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2012-12-06 03:13:17 +0000
committerAlan Modra <amodra@gmail.com>2012-12-06 03:13:17 +0000
commit9e69ed506afe4d59c5524ba74284bb972bb0f59b (patch)
tree8efe1952103fb18edd938e704be706111ee4ac80 /gold/options.h
parentc90a077350e441ae527b16a62719b1f2402ad9b4 (diff)
downloadfsf-binutils-gdb-9e69ed506afe4d59c5524ba74284bb972bb0f59b.zip
fsf-binutils-gdb-9e69ed506afe4d59c5524ba74284bb972bb0f59b.tar.gz
fsf-binutils-gdb-9e69ed506afe4d59c5524ba74284bb972bb0f59b.tar.bz2
* options.h (General_options): Add plt_align, plt_static_chain,
plt_thread_safe. Update stub_group_size help text. * powerpc.cc (Target_powerpc::plt_thread_safe): New access function for new plt_thread_safe_ var. (use_plt_offset): Correct comments. (Target_powerpc::do_relax): Look for thread creation symbols to determine default plt_thread_safe value. Clear plt call stubs as well as branch stubs each iteration. (add_2_2_11, add_12_12_11, bnectr_p4, cmpldi_2_0, xor_11_11_11): New insn constants. (l, hi, ha, write_insn): Move earlier. (Stub_table): Delete prev_size, add last_plt_size and last_branch_size. (Stub_table::clear_stubs): Rename from clear_long_branch_stubs, clear plt stubs too. (Stub_table::update_size): Adjust. (Stub_table::prev_size, set_prev_size): Delete. (Stub_table::stub_align): Let --plt-align affect result. (Stub_table::plt_call_size): Calculate sizes for various stubs. (Stub_table::branch_stub_size): Use last_plt_size in address calc. (Stub_table::add_plt_call_stub): Pass iterator to plt_call_size. (Stub_table::do_write): Support more stub variants.
Diffstat (limited to 'gold/options.h')
-rw-r--r--gold/options.h19
1 files changed, 16 insertions, 3 deletions
diff --git a/gold/options.h b/gold/options.h
index 50762a5..216620a 100644
--- a/gold/options.h
+++ b/gold/options.h
@@ -936,6 +936,18 @@ class General_options
DEFINE_bool(pipeline_knowledge, options::ONE_DASH, '\0', false,
NULL, N_("(ARM only) Ignore for backward compatibility"));
+ DEFINE_var(plt_align, options::TWO_DASHES, '\0', 0, "5",
+ N_("(PowerPC64 only) Align PLT call stubs to fit cache lines"),
+ N_("[=P2ALIGN]"), true, int, int, options::parse_uint);
+
+ DEFINE_bool(plt_static_chain, options::TWO_DASHES, '\0', false,
+ N_("(PowerPC64 only) PLT call stubs should load r11"),
+ N_("(PowerPC64 only) PLT call stubs should not load r11"));
+
+ DEFINE_bool(plt_thread_safe, options::TWO_DASHES, '\0', false,
+ N_("(PowerPC64 only) PLT call stubs with load-load barrier"),
+ N_("(PowerPC64 only) PLT call stubs without barrier"));
+
#ifdef ENABLE_PLUGINS
DEFINE_special(plugin, options::TWO_DASHES, '\0',
N_("Load a plugin library"), N_("PLUGIN"));
@@ -1016,9 +1028,10 @@ class General_options
N_("Strip LTO intermediate code sections"), NULL);
DEFINE_int(stub_group_size, options::TWO_DASHES , '\0', 1,
- N_("(ARM only) The maximum distance from instructions in a group "
- "of sections to their stubs. Negative values mean stubs "
- "are always after the group. 1 means using default size.\n"),
+ N_("(ARM, PowerPC only) The maximum distance from instructions "
+ "in a group of sections to their stubs. Negative values mean "
+ "stubs are always after (PowerPC before) the group. 1 means "
+ "use default size.\n"),
N_("SIZE"));
DEFINE_bool(no_keep_memory, options::TWO_DASHES, '\0', false,