diff options
Diffstat (limited to 'gold')
-rw-r--r-- | gold/ChangeLog | 7 | ||||
-rw-r--r-- | gold/layout.cc | 39 | ||||
-rw-r--r-- | gold/options.h | 4 |
3 files changed, 40 insertions, 10 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog index 2aec5d6..8dfb150 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,10 @@ +2023-03-27 Nick Clifton <nickc@redhat.com> + + PR 30187 + * options.h (class General_options): Add enable-linker-version. + * layout.cc (Layout::create_gold_note): If linker-version is + enabled put the version string into the .comment section. + 2023-01-03 Nick Clifton <nickc@redhat.com> * po/ro.po: Updated Romainian translation. diff --git a/gold/layout.cc b/gold/layout.cc index 899d4af..a500868 100644 --- a/gold/layout.cc +++ b/gold/layout.cc @@ -3333,19 +3333,38 @@ Layout::create_gold_note() std::string desc = std::string("gold ") + gold::get_version_string(); - size_t trailing_padding; - Output_section* os = this->create_note("GNU", elfcpp::NT_GNU_GOLD_VERSION, - ".note.gnu.gold-version", desc.size(), - false, &trailing_padding); - if (os == NULL) - return; + Output_section* os; + Output_section_data* posd; - Output_section_data* posd = new Output_data_const(desc, 4); - os->add_output_section_data(posd); + if (!parameters->options().enable_linker_version()) + { + size_t trailing_padding; + + os = this->create_note("GNU", elfcpp::NT_GNU_GOLD_VERSION, + ".note.gnu.gold-version", desc.size(), + false, &trailing_padding); + if (os == NULL) + return; + + posd = new Output_data_const(desc, 4); + os->add_output_section_data(posd); - if (trailing_padding > 0) + if (trailing_padding > 0) + { + posd = new Output_data_zero_fill(trailing_padding, 0); + os->add_output_section_data(posd); + } + } + else { - posd = new Output_data_zero_fill(trailing_padding, 0); + os = this->choose_output_section(NULL, ".comment", + elfcpp::SHT_PROGBITS, 0, + false, ORDER_INVALID, + false, false, false); + if (os == NULL) + return; + + posd = new Output_data_const(desc, 1); os->add_output_section_data(posd); } } diff --git a/gold/options.h b/gold/options.h index 1aa451c..46f658f 100644 --- a/gold/options.h +++ b/gold/options.h @@ -847,6 +847,10 @@ class General_options N_("Enable use of DT_RUNPATH"), N_("Disable use of DT_RUNPATH")); + DEFINE_enable(linker_version, options::EXACTLY_TWO_DASHES, '\0', false, + N_("Put the linker version string into the .comment section"), + N_("Put the linker version string into the .note.gnu.gold-version section")); + DEFINE_bool(enum_size_warning, options::TWO_DASHES, '\0', true, NULL, N_("(ARM only) Do not warn about objects with incompatible " "enum sizes")); |