diff options
author | Ian Lance Taylor <ian@airs.com> | 2008-07-23 23:44:02 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 2008-07-23 23:44:02 +0000 |
commit | 057ead223193b365a6fcd11939a89a63eb4b94e0 (patch) | |
tree | fd9512fb7fbf9175087dee104d30fbc7b1982360 /gold/script.h | |
parent | e63e4db2035334827eb3ca4402b766897f5479a8 (diff) | |
download | gdb-057ead223193b365a6fcd11939a89a63eb4b94e0.zip gdb-057ead223193b365a6fcd11939a89a63eb4b94e0.tar.gz gdb-057ead223193b365a6fcd11939a89a63eb4b94e0.tar.bz2 |
PR 6647
* script.cc (Version_script_info::get_versions): Don't add empty
version tag to return value.
(Version_script_info::get_symbol_version_helper): Change return
type to bool. Add pversion parameter. Change all callers.
(script_register_vers_node): Don't require a non-NULL tag.
* script.h (class Version_script_info): Update declarations.
(Version_script_info::get_symbol_version): Change return type to
bool. Add version parameter. Change all callers.
* symtab.cc (Sized_symbol::add_from_relobj): Rework version
handling. Handle an empty version from a version script.
(Symbol_table::define_special_symbol): Likewise.
* testsuite/ver_test_10.script: New file.
* testsuite/ver_test_10.sh: New file.
* testsuite/Makefile.am (check_SCRIPTS): Add ver_test_10.sh.
(check_DATA): Add ver_test_10.syms.
(ver_test_10.syms, ver_test_10.so): New target.
* testsuite/Makefile.in: Rebuild.
Diffstat (limited to 'gold/script.h')
-rw-r--r-- | gold/script.h | 28 |
1 files changed, 12 insertions, 16 deletions
diff --git a/gold/script.h b/gold/script.h index ea4b6af..e688a74 100644 --- a/gold/script.h +++ b/gold/script.h @@ -138,22 +138,17 @@ class Version_script_info empty() const { return this->version_trees_.empty(); } - // Return the version associated with the given symbol name. - // Strings are allocated out of the stringpool given in the - // constructor. Strings are allocated out of the stringpool given - // in the constructor. - const std::string& - get_symbol_version(const char* symbol) const - { return get_symbol_version_helper(symbol, true); } - - // Return whether this symbol matches the local: section of a - // version script (it doesn't matter which). + // If there is a version associated with SYMBOL, return true, and + // set *VERSION to the version. Otherwise, return false. + bool + get_symbol_version(const char* symbol, std::string* version) const + { return this->get_symbol_version_helper(symbol, true, version); } + + // Return whether this symbol matches the local: section of some + // version. bool symbol_is_local(const char* symbol) const - { - return (get_symbol_version(symbol).empty() - && !get_symbol_version_helper(symbol, false).empty()); - } + { return this->get_symbol_version_helper(symbol, false, NULL); } // Return the names of versions defined in the version script. // Strings are allocated out of the stringpool given in the @@ -186,8 +181,9 @@ class Version_script_info void print_expression_list(FILE* f, const Version_expression_list*) const; - const std::string& get_symbol_version_helper(const char* symbol, - bool check_global) const; + bool get_symbol_version_helper(const char* symbol, + bool check_global, + std::string* pversion) const; std::vector<struct Version_dependency_list*> dependency_lists_; std::vector<struct Version_expression_list*> expression_lists_; |