* options.h (class General_options): Add -z text and -z textoff.

* layout.cc (Layout::finish_dynamic_section): Implement -z text.
This commit is contained in:
Ian Lance Taylor 2010-01-07 18:16:24 +00:00
parent b7cd1872af
commit ffeef7dfa5
3 changed files with 15 additions and 2 deletions

View File

@ -1,3 +1,8 @@
2010-01-07 Ian Lance Taylor <iant@google.com>
* options.h (class General_options): Add -z text and -z textoff.
* layout.cc (Layout::finish_dynamic_section): Implement -z text.
2010-01-06 Sriraman Tallam <tmsriram@google.com>
* gc.h (Garbage_collection::Cident_section_map): New typedef.

View File

@ -3353,8 +3353,10 @@ Layout::finish_dynamic_section(const Input_objects* input_objects,
odyn->add_constant(elfcpp::DT_TEXTREL, 0);
flags |= elfcpp::DF_TEXTREL;
if (parameters->options().warn_shared_textrel()
&& parameters->options().shared())
if (parameters->options().text())
gold_error(_("read-only segment has dynamic relocations"));
else 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())

View File

@ -1052,6 +1052,12 @@ class General_options
DEFINE_bool(relro, options::DASH_Z, '\0', false,
N_("Where possible mark variables read-only after relocation"),
N_("Don't mark variables read-only after relocation"));
DEFINE_bool(text, options::DASH_Z, '\0', false,
N_("Do not permit relocations in read-only segments"),
NULL);
DEFINE_bool_alias(textoff, text, options::DASH_Z, '\0',
N_("Permit relocations in read-only segments (default)"),
NULL, true);
public:
typedef options::Dir_list Dir_list;