X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gold%2Foptions.h;h=f0e9fbddcd5f77d6a78a405dcc5ecdbe4f786f17;hb=5233f39b8b999f2675fb9493149e878c281e1d60;hp=d5b8fe43ac25d6a2bbde7adf11af65adb7166a79;hpb=219d1afa89d0d53ca93a684cac341f16470f3ca0;p=deliverable%2Fbinutils-gdb.git diff --git a/gold/options.h b/gold/options.h index d5b8fe43ac..f0e9fbddcd 100644 --- a/gold/options.h +++ b/gold/options.h @@ -1,6 +1,6 @@ // options.h -- handle command line options for gold -*- C++ -*- -// Copyright (C) 2006-2018 Free Software Foundation, Inc. +// Copyright (C) 2006-2020 Free Software Foundation, Inc. // Written by Ian Lance Taylor . // This file is part of gold. @@ -471,7 +471,11 @@ struct Struct_special : public Struct_var \ options::String_set::const_iterator \ varname__##_end() const \ - { return this->varname__##_.value.end(); } + { return this->varname__##_.value.end(); } \ + \ + options::String_set::size_type \ + varname__##_size() const \ + { return this->varname__##_.value.size(); } \ // When you have a list of possible values (expressed as string) // After helparg__ should come an initializer list, like @@ -894,7 +898,7 @@ class General_options DEFINE_string(fuse_ld, options::ONE_DASH, '\0', "", N_("Ignored for GCC linker option compatibility"), - NULL); + N_("[gold,bfd]")); // g @@ -942,7 +946,7 @@ class General_options {"none", "all", "safe"}); DEFINE_uint(icf_iterations, options::TWO_DASHES , '\0', 0, - N_("Number of iterations of ICF (default 2)"), N_("COUNT")); + N_("Number of iterations of ICF (default 3)"), N_("COUNT")); DEFINE_special(incremental, options::TWO_DASHES, '\0', N_("Do an incremental link if possible; " @@ -1101,7 +1105,7 @@ class General_options 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_("(PowerPC only) Align PLT call stubs to fit cache lines"), N_("[=P2ALIGN]"), true, int, int, options::parse_uint, false); DEFINE_bool(plt_localentry, options::TWO_DASHES, '\0', false, @@ -1121,6 +1125,12 @@ class General_options N_("Load a plugin library"), N_("PLUGIN")); DEFINE_special(plugin_opt, options::TWO_DASHES, '\0', N_("Pass an option to the plugin"), N_("OPTION")); +#else + DEFINE_special(plugin, options::TWO_DASHES, '\0', + N_("Load a plugin library (not supported)"), N_("PLUGIN")); + DEFINE_special(plugin_opt, options::TWO_DASHES, '\0', + N_("Pass an option to the plugin (not supported)"), + N_("OPTION")); #endif DEFINE_bool(posix_fallocate, options::TWO_DASHES, '\0', true, @@ -1172,7 +1182,7 @@ class General_options DEFINE_bool(rosegment, options::TWO_DASHES, '\0', false, N_("Put read-only non-executable sections in their own segment"), - NULL); + N_("Do not put read-only non-executable sections in their own segment")); DEFINE_uint64(rosegment_gap, options::TWO_DASHES, '\0', -1U, N_("Set offset between executable and read-only segments"), @@ -1351,6 +1361,10 @@ class General_options DEFINE_bool_ignore(warn_constructors, options::TWO_DASHES, '\0', N_("Ignored"), N_("Ignored")); + DEFINE_bool(warn_drop_version, options::TWO_DASHES, '\0', false, + N_("Warn when discarding version information"), + N_("Do not warn when discarding version information")); + DEFINE_bool(warn_execstack, options::TWO_DASHES, '\0', false, N_("Warn if the stack is executable"), N_("Do not warn if the stack is executable")); @@ -1486,6 +1500,11 @@ class General_options N_("Don't mark variables read-only after relocation")); DEFINE_uint64(stack_size, options::DASH_Z, '\0', 0, N_("Set PT_GNU_STACK segment p_memsz to SIZE"), N_("SIZE")); + DEFINE_enum(start_stop_visibility, options::DASH_Z, '\0', "protected", + N_("ELF symbol visibility for synthesized " + "__start_* and __stop_* symbols"), + ("[default,internal,hidden,protected]"), + {"default", "internal", "hidden", "protected"}); DEFINE_bool(text, options::DASH_Z, '\0', false, N_("Do not permit relocations in read-only segments"), N_("Permit relocations in read-only segments")); @@ -1496,6 +1515,10 @@ class General_options N_("Move .text.unlikely sections to a separate segment."), N_("Do not move .text.unlikely sections to a separate " "segment.")); + DEFINE_bool(keep_text_section_prefix, options::DASH_Z, '\0', false, + N_("Keep .text.hot, .text.startup, .text.exit and .text.unlikely " + "as separate sections in the final binary."), + N_("Merge all .text.* prefix sections.")); public: @@ -1732,6 +1755,10 @@ class General_options orphan_handling_enum() const { return this->orphan_handling_enum_; } + elfcpp::STV + start_stop_visibility_enum() const + { return this->start_stop_visibility_enum_; } + private: // Don't copy this structure. General_options(const General_options&); @@ -1791,6 +1818,10 @@ class General_options set_orphan_handling_enum(Orphan_handling value) { this->orphan_handling_enum_ = value; } + void + set_start_stop_visibility_enum(elfcpp::STV value) + { this->start_stop_visibility_enum_ = value; } + // These are called by finalize() to set up the search-path correctly. void add_to_library_path_with_sysroot(const std::string& arg) @@ -1858,6 +1889,8 @@ class General_options std::vector options_stack_; // Orphan handling option, decoded to an enum value. Orphan_handling orphan_handling_enum_; + // Symbol visibility for __start_* / __stop_* magic symbols. + elfcpp::STV start_stop_visibility_enum_; }; // The position-dependent options. We use this to store the state of