From 3a12c78d1491c4877928e7294c8cdbe8171dfeed Mon Sep 17 00:00:00 2001 From: Cary Coutant Date: Mon, 6 Aug 2018 14:08:48 -0700 Subject: [PATCH] Add --warn-drop-version option; by default, do not warn when discarding version info. gold/ PR gold/23455 * options.h (General_options): Add --warn-drop-version option. * symtab.cc (Symbol_table::set_dynsym_indexes): Check it. --- gold/ChangeLog | 6 ++++++ gold/options.h | 4 ++++ gold/symtab.cc | 11 ++++++----- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/gold/ChangeLog b/gold/ChangeLog index befa832b11..38f06ea919 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,3 +1,9 @@ +2018-08-06 Cary Coutant + + PR gold/23455 + * options.h (General_options): Add --warn-drop-version option. + * symtab.cc (Symbol_table::set_dynsym_indexes): Check it. + 2018-08-06 Cary Coutant * target.h (Sized_target::record_gnu_property): Change first two diff --git a/gold/options.h b/gold/options.h index 98d6be8009..11054981c9 100644 --- a/gold/options.h +++ b/gold/options.h @@ -1361,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")); diff --git a/gold/symtab.cc b/gold/symtab.cc index aa7644156f..759e0d0222 100644 --- a/gold/symtab.cc +++ b/gold/symtab.cc @@ -2623,11 +2623,12 @@ Symbol_table::set_dynsym_indexes(unsigned int index, versions->record_version(this, dynpool, sym); else { - gold_warning(_("discarding version information for " - "%s@%s, defined in unused shared library %s " - "(linked with --as-needed)"), - sym->name(), sym->version(), - sym->object()->name().c_str()); + if (parameters->options().warn_drop_version()) + gold_warning(_("discarding version information for " + "%s@%s, defined in unused shared library %s " + "(linked with --as-needed)"), + sym->name(), sym->version(), + sym->object()->name().c_str()); sym->clear_version(); } }