diff options
author | Ian Lance Taylor <ian@airs.com> | 2010-01-07 18:16:24 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 2010-01-07 18:16:24 +0000 |
commit | ffeef7dfa55fe9608a46a991ce5413fe0db844f4 (patch) | |
tree | 468519c017f56d376bad9da8498abb1288aa11cd /gold | |
parent | b7cd1872af07e11e50368d40505ef8b57e192bcc (diff) | |
download | gdb-ffeef7dfa55fe9608a46a991ce5413fe0db844f4.zip gdb-ffeef7dfa55fe9608a46a991ce5413fe0db844f4.tar.gz gdb-ffeef7dfa55fe9608a46a991ce5413fe0db844f4.tar.bz2 |
* options.h (class General_options): Add -z text and -z textoff.
* layout.cc (Layout::finish_dynamic_section): Implement -z text.
Diffstat (limited to 'gold')
-rw-r--r-- | gold/ChangeLog | 5 | ||||
-rw-r--r-- | gold/layout.cc | 6 | ||||
-rw-r--r-- | gold/options.h | 6 |
3 files changed, 15 insertions, 2 deletions
diff --git a/gold/ChangeLog b/gold/ChangeLog index 65c0c90..43b5c08 100644 --- a/gold/ChangeLog +++ b/gold/ChangeLog @@ -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. diff --git a/gold/layout.cc b/gold/layout.cc index f427af5..9f51e82 100644 --- a/gold/layout.cc +++ b/gold/layout.cc @@ -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()) diff --git a/gold/options.h b/gold/options.h index 110b91f..de1f07a 100644 --- a/gold/options.h +++ b/gold/options.h @@ -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; |