Line 1... |
Line 1... |
// symtab.h -- the gold symbol table -*- C++ -*-
|
// symtab.h -- the gold symbol table -*- C++ -*-
|
|
|
// Copyright 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
|
// Copyright 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
|
// Written by Ian Lance Taylor <iant@google.com>.
|
// Written by Ian Lance Taylor <iant@google.com>.
|
|
|
// This file is part of gold.
|
// This file is part of gold.
|
|
|
// This program is free software; you can redistribute it and/or modify
|
// This program is free software; you can redistribute it and/or modify
|
Line 134... |
Line 134... |
// Set that this version is the default for this symbol name.
|
// Set that this version is the default for this symbol name.
|
void
|
void
|
set_is_default()
|
set_is_default()
|
{ this->is_def_ = true; }
|
{ this->is_def_ = true; }
|
|
|
|
// Return the symbol's name as name@version (or name@@version).
|
|
std::string
|
|
versioned_name() const;
|
|
|
// Return the symbol source.
|
// Return the symbol source.
|
Source
|
Source
|
source() const
|
source() const
|
{ return this->source_; }
|
{ return this->source_; }
|
|
|
Line 532... |
Line 536... |
|
|
// Return whether this symbol can be seen outside this object.
|
// Return whether this symbol can be seen outside this object.
|
bool
|
bool
|
is_externally_visible() const
|
is_externally_visible() const
|
{
|
{
|
return (this->visibility_ == elfcpp::STV_DEFAULT
|
return ((this->visibility_ == elfcpp::STV_DEFAULT
|
|| this->visibility_ == elfcpp::STV_PROTECTED);
|
|| this->visibility_ == elfcpp::STV_PROTECTED)
|
|
&& !this->is_forced_local_);
|
}
|
}
|
|
|
// Return true if this symbol can be preempted by a definition in
|
// Return true if this symbol can be preempted by a definition in
|
// another link unit.
|
// another link unit.
|
bool
|
bool
|
Line 1655... |
Line 1660... |
wrap_symbol(const char* name, Stringpool::Key* name_key);
|
wrap_symbol(const char* name, Stringpool::Key* name_key);
|
|
|
// Whether we should override a symbol, based on flags in
|
// Whether we should override a symbol, based on flags in
|
// resolve.cc.
|
// resolve.cc.
|
static bool
|
static bool
|
should_override(const Symbol*, unsigned int, Defined, Object*, bool*, bool*);
|
should_override(const Symbol*, unsigned int, elfcpp::STT, Defined,
|
|
Object*, bool*, bool*);
|
|
|
// Report a problem in symbol resolution.
|
// Report a problem in symbol resolution.
|
static void
|
static void
|
report_resolve_problem(bool is_error, const char* msg, const Symbol* to,
|
report_resolve_problem(bool is_error, const char* msg, const Symbol* to,
|
Defined, Object* object);
|
Defined, Object* object);
|
Line 1673... |
Line 1679... |
Object* object, const char* version);
|
Object* object, const char* version);
|
|
|
// Whether we should override a symbol with a special symbol which
|
// Whether we should override a symbol with a special symbol which
|
// is automatically defined by the linker.
|
// is automatically defined by the linker.
|
static bool
|
static bool
|
should_override_with_special(const Symbol*, Defined);
|
should_override_with_special(const Symbol*, elfcpp::STT, Defined);
|
|
|
// Override a symbol with a special symbol.
|
// Override a symbol with a special symbol.
|
template<int size>
|
template<int size>
|
void
|
void
|
override_with_special(Sized_symbol<size>* tosym,
|
override_with_special(Sized_symbol<size>* tosym,
|