OSDN Git Service

PR 10980
authorian <ian>
Thu, 7 Jan 2010 15:05:23 +0000 (15:05 +0000)
committerian <ian>
Thu, 7 Jan 2010 15:05:23 +0000 (15:05 +0000)
* options.h (class General_options): Add --warn-shared-textrel.
* layout.cc (Layout::finish_dynamic_section): Implement
--warn-shared-textrel.

gold/ChangeLog
gold/layout.cc
gold/options.h

index c759683..b52505f 100644 (file)
@@ -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>
index 13c7f7e..f3deb9a 100644 (file)
@@ -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;
index 018ec1b..110b91f 100644 (file)
@@ -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"));