aboutsummaryrefslogtreecommitdiff
path: root/gold/symtab.h
diff options
context:
space:
mode:
authorIan Lance Taylor <ian@airs.com>2009-02-27 19:57:46 +0000
committerIan Lance Taylor <ian@airs.com>2009-02-27 19:57:46 +0000
commit0602e05a845a545a8b52386a4dec66b74a158bc7 (patch)
tree538c81672e2f97885ce7f8054e6726f0189ad79b /gold/symtab.h
parentb5096abe11166944e2de1bb8a27a1c36d02a63ef (diff)
downloadgdb-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.h14
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*);