projects
/
deliverable
/
binutils-gdb.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[ARC] Add SYNTAX_NOP and SYNTAX_1OP for extension instructions
[deliverable/binutils-gdb.git]
/
gold
/
symtab.h
diff --git
a/gold/symtab.h
b/gold/symtab.h
index ab5b5f97d7fcafb0dfe49f9757baea4b18122749..5cee458f1a20f89749df976d522968f356b76cf0 100644
(file)
--- a/
gold/symtab.h
+++ b/
gold/symtab.h
@@
-1,6
+1,6
@@
// symtab.h -- the gold symbol table -*- C++ -*-
// symtab.h -- the gold symbol table -*- C++ -*-
-// Copyright (C) 2006-201
4
Free Software Foundation, Inc.
+// Copyright (C) 2006-201
6
Free Software Foundation, Inc.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
// Written by Ian Lance Taylor <iant@google.com>.
// This file is part of gold.
@@
-140,6
+140,11
@@
class Symbol
set_is_default()
{ this->is_def_ = true; }
set_is_default()
{ this->is_def_ = true; }
+ // Set that this version is not the default for this symbol name.
+ void
+ set_is_not_default()
+ { this->is_def_ = false; }
+
// Return the symbol's name as name@version (or name@@version).
std::string
versioned_name() const;
// Return the symbol's name as name@version (or name@@version).
std::string
versioned_name() const;
@@
-215,6
+220,11
@@
class Symbol
type() const
{ return this->type_; }
type() const
{ return this->type_; }
+ // Set the symbol type.
+ void
+ set_type(elfcpp::STT type)
+ { this->type_ = type; }
+
// Return true for function symbol.
bool
is_func() const
// Return true for function symbol.
bool
is_func() const
@@
-521,7
+531,8
@@
class Symbol
{
return (this->is_undefined()
&& (this->binding() == elfcpp::STB_WEAK
{
return (this->is_undefined()
&& (this->binding() == elfcpp::STB_WEAK
- || this->is_undef_binding_weak()));
+ || this->is_undef_binding_weak()
+ || parameters->options().weak_unresolved_symbols()));
}
// Return whether this is a strong undefined symbol.
}
// Return whether this is a strong undefined symbol.
@@
-530,7
+541,8
@@
class Symbol
{
return (this->is_undefined()
&& this->binding() != elfcpp::STB_WEAK
{
return (this->is_undefined()
&& this->binding() != elfcpp::STB_WEAK
- && !this->is_undef_binding_weak());
+ && !this->is_undef_binding_weak()
+ && !parameters->options().weak_unresolved_symbols());
}
// Return whether this is an absolute symbol.
}
// Return whether this is an absolute symbol.
@@
-550,8
+562,6
@@
class Symbol
{
if (this->source_ != FROM_OBJECT)
return false;
{
if (this->source_ != FROM_OBJECT)
return false;
- if (this->type_ == elfcpp::STT_COMMON)
- return true;
bool is_ordinary;
unsigned int shndx = this->shndx(&is_ordinary);
return !is_ordinary && Symbol::is_common_shndx(shndx);
bool is_ordinary;
unsigned int shndx = this->shndx(&is_ordinary);
return !is_ordinary && Symbol::is_common_shndx(shndx);
@@
-599,10
+609,8
@@
class Symbol
if (parameters->options().in_dynamic_list(this->name()))
return true;
if (parameters->options().in_dynamic_list(this->name()))
return true;
- // If the user used -Bsymbolic or provided a --dynamic-list script,
- // then nothing (else) is preemptible.
- if (parameters->options().Bsymbolic()
- || parameters->options().have_dynamic_list())
+ // If the user used -Bsymbolic, then nothing (else) is preemptible.
+ if (parameters->options().Bsymbolic())
return false;
// If the user used -Bsymbolic-functions, then functions are not
return false;
// If the user used -Bsymbolic-functions, then functions are not
@@
-1105,8
+1113,8
@@
class Sized_symbol : public Symbol
// Initialize fields for an undefined symbol.
void
// Initialize fields for an undefined symbol.
void
- init_undefined(const char* name, const char* version,
elfcpp::STT
,
- elfcpp::STB, elfcpp::STV, unsigned char nonvis);
+ init_undefined(const char* name, const char* version,
Value_type value
,
+ elfcpp::ST
T, elfcpp::ST
B, elfcpp::STV, unsigned char nonvis);
// Override existing symbol.
template<bool big_endian>
// Override existing symbol.
template<bool big_endian>
@@
-1367,7
+1375,7
@@
class Symbol_table
// Returns true if ICF determined that this is a duplicate section.
bool
// Returns true if ICF determined that this is a duplicate section.
bool
- is_section_folded(
Object
* obj, unsigned int shndx) const;
+ is_section_folded(
Relobj
* obj, unsigned int shndx) const;
void
set_gc(Garbage_collection* gc)
void
set_gc(Garbage_collection* gc)
@@
-1473,6
+1481,12
@@
class Symbol_table
define_symbols(const Layout*, int count, const Define_symbol_in_segment*,
bool only_if_ref);
define_symbols(const Layout*, int count, const Define_symbol_in_segment*,
bool only_if_ref);
+ // Add a target-specific global symbol.
+ // (Used by SPARC backend to add STT_SPARC_REGISTER symbols.)
+ void
+ add_target_global_symbol(Symbol* sym)
+ { this->target_symbols_.push_back(sym); }
+
// Define SYM using a COPY reloc. POSD is the Output_data where the
// symbol should be defined--typically a .dyn.bss section. VALUE is
// the offset within POSD.
// Define SYM using a COPY reloc. POSD is the Output_data where the
// symbol should be defined--typically a .dyn.bss section. VALUE is
// the offset within POSD.
@@
-1703,7
+1717,8
@@
class Symbol_table
const elfcpp::Sym<size, big_endian>& sym,
unsigned int st_shndx, bool is_ordinary,
unsigned int orig_st_shndx,
const elfcpp::Sym<size, big_endian>& sym,
unsigned int st_shndx, bool is_ordinary,
unsigned int orig_st_shndx,
- Object*, const char* version);
+ Object*, const char* version,
+ bool is_default_version);
template<int size, bool big_endian>
void
template<int size, bool big_endian>
void
@@
-1722,7
+1737,7
@@
class Symbol_table
// resolve.cc.
static bool
should_override(const Symbol*, unsigned int, elfcpp::STT, Defined,
// resolve.cc.
static bool
should_override(const Symbol*, unsigned int, elfcpp::STT, Defined,
- Object*, bool*, bool*);
+ Object*, bool*, bool*
, bool
);
// Report a problem in symbol resolution.
static void
// Report a problem in symbol resolution.
static void
@@
-1942,6
+1957,8
@@
class Symbol_table
const Version_script_info& version_script_;
Garbage_collection* gc_;
Icf* icf_;
const Version_script_info& version_script_;
Garbage_collection* gc_;
Icf* icf_;
+ // Target-specific symbols, if any.
+ std::vector<Symbol*> target_symbols_;
};
// We inline get_sized_symbol for efficiency.
};
// We inline get_sized_symbol for efficiency.
This page took
0.029265 seconds
and
4
git commands to generate.