diff options
author | Ian Lance Taylor <ian@airs.com> | 2009-02-27 19:57:46 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@airs.com> | 2009-02-27 19:57:46 +0000 |
commit | 0602e05a845a545a8b52386a4dec66b74a158bc7 (patch) | |
tree | 538c81672e2f97885ce7f8054e6726f0189ad79b /gold/symtab.h | |
parent | b5096abe11166944e2de1bb8a27a1c36d02a63ef (diff) | |
download | gdb-0602e05a845a545a8b52386a4dec66b74a158bc7.zip gdb-0602e05a845a545a8b52386a4dec66b74a158bc7.tar.gz gdb-0602e05a845a545a8b52386a4dec66b74a158bc7.tar.bz2 |
PR 9836
* symtab.cc (Symbol_table::add_from_object): If the visibility is
hidden or internal, force the symbol to be local.
* resolve.cc (Symbol::override_visibility): Define.
(Symbol::override_base): Use override_visibility.
(Symbol_table::resolve): Likewise.
(Symbol::override_base_with_special): Likewise.
(Symbol_table::override_with_special): If the visibility is hidden
or internal, force the symbol to be local.
* symtab.h (class Symbol): Add set_visibility and
override_visibility.
* testsuite/ver_test_1.sh: New file.
* testsuite/Makefile.am (check_SCRIPTS): Add ver_test_1.sh.
(check_DATA): Add ver_test_1.syms.
(ver_test_1.syms): New target.
* testsuite/Makefile.in: Rebuild.
Diffstat (limited to 'gold/symtab.h')
-rw-r--r-- | gold/symtab.h | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/gold/symtab.h b/gold/symtab.h index 358dd32..b504d0a 100644 --- a/gold/symtab.h +++ b/gold/symtab.h @@ -1,6 +1,6 @@ // symtab.h -- the gold symbol table -*- C++ -*- -// Copyright 2006, 2007, 2008 Free Software Foundation, Inc. +// Copyright 2006, 2007, 2008, 2009 Free Software Foundation, Inc. // Written by Ian Lance Taylor <iant@google.com>. // This file is part of gold. @@ -210,6 +210,15 @@ class Symbol visibility() const { return this->visibility_; } + // Set the visibility. + void + set_visibility(elfcpp::STV visibility) + { this->visibility_ = visibility; } + + // Override symbol visibility. + void + override_visibility(elfcpp::STV); + // Return the non-visibility part of the st_other field. unsigned char nonvis() const @@ -1384,7 +1393,8 @@ class Symbol_table void resolve(Sized_symbol<size>* to, const Sized_symbol<size>* from); - // Record that a symbol is forced to be local by a version script. + // Record that a symbol is forced to be local by a version script or + // by visibility. void force_local(Symbol*); |