From b9674e179b86530631391dd38988d2f5da4f40c0 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Thu, 7 Jan 2010 06:05:23 +0000 Subject: [PATCH] PR 10980 * options.h (class General_options): Add --warn-shared-textrel. * layout.cc (Layout::finish_dynamic_section): Implement --warn-shared-textrel. --- gold/ChangeLog | 5 +++++ gold/layout.cc | 4 ++++ gold/options.h | 4 ++++ 3 files changed, 13 insertions(+) diff --git a/gold/ChangeLog b/gold/ChangeLog index c7596837655..b52505ff8d7 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 13c7f7eab0d..f3deb9aa3e4 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 018ec1b5055..110b91f8133 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")); -- 2.30.2