From: Ian Lance Taylor Date: Thu, 7 Jan 2010 06:05:23 +0000 (+0000) Subject: PR 10980 X-Git-Url: http://git.efficios.com/?a=commitdiff_plain;h=b9674e179b86530631391dd38988d2f5da4f40c0;p=deliverable%2Fbinutils-gdb.git PR 10980 * options.h (class General_options): Add --warn-shared-textrel. * layout.cc (Layout::finish_dynamic_section): Implement --warn-shared-textrel. --- diff --git a/gold/ChangeLog b/gold/ChangeLog index c759683765..b52505ff8d 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -1,5 +1,10 @@ 2010-01-06 Ian Lance Taylor + PR 10980 + * options.h (class General_options): Add --warn-shared-textrel. + * layout.cc (Layout::finish_dynamic_section): Implement + --warn-shared-textrel. + PR 10980 * options.h (class General_options): Add --warn-multiple-gp. diff --git a/gold/layout.cc b/gold/layout.cc index 13c7f7eab0..f3deb9aa3e 100644 --- a/gold/layout.cc +++ b/gold/layout.cc @@ -3355,6 +3355,10 @@ Layout::finish_dynamic_section(const Input_objects* input_objects, // Add a DT_TEXTREL for compatibility with older loaders. odyn->add_constant(elfcpp::DT_TEXTREL, 0); flags |= elfcpp::DF_TEXTREL; + + if (parameters->options().warn_shared_textrel() + && parameters->options().shared()) + gold_warning(_("shared library text segment is not shareable")); } if (parameters->options().shared() && this->has_static_tls()) flags |= elfcpp::DF_STATIC_TLS; diff --git a/gold/options.h b/gold/options.h index 018ec1b505..110b91f813 100644 --- a/gold/options.h +++ b/gold/options.h @@ -968,6 +968,10 @@ class General_options N_("Warn when skipping an incompatible library"), N_("Don't warn when skipping an incompatible library")); + DEFINE_bool(warn_shared_textrel, options::TWO_DASHES, '\0', false, + N_("Warn if text segment is not shareable"), + N_("Do not warn if text segment is not shareable (default)")); + DEFINE_bool(whole_archive, options::TWO_DASHES, '\0', false, N_("Include all archive contents"), N_("Include only needed archive contents"));