aboutsummaryrefslogtreecommitdiff
path: root/gold
diff options
context:
space:
mode:
Diffstat (limited to 'gold')
-rw-r--r--gold/ChangeLog5
-rw-r--r--gold/layout.cc4
-rw-r--r--gold/options.h4
3 files changed, 13 insertions, 0 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog
index c759683..b52505f 100644
--- a/gold/ChangeLog
+++ b/gold/ChangeLog
@@ -1,6 +1,11 @@
2010-01-06 Ian Lance Taylor <iant@google.com>
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.
2010-01-06 Viktor Kutuzov <vkutuzov@accesssoftek.com>
diff --git a/gold/layout.cc b/gold/layout.cc
index 13c7f7e..f3deb9a 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 018ec1b..110b91f 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"));