aboutsummaryrefslogtreecommitdiff
path: root/gold/dynobj.cc
diff options
context:
space:
mode:
Diffstat (limited to 'gold/dynobj.cc')
-rw-r--r--gold/dynobj.cc165
1 files changed, 95 insertions, 70 deletions
diff --git a/gold/dynobj.cc b/gold/dynobj.cc
index 9871bde..7afaaa5 100644
--- a/gold/dynobj.cc
+++ b/gold/dynobj.cc
@@ -1050,7 +1050,8 @@ Dynobj::sized_create_gnu_hash_table(
template<int size, bool big_endian>
unsigned char*
-Verdef::write(const Stringpool* dynpool, bool is_last, unsigned char* pb) const
+Verdef::write(const Stringpool* dynpool, bool is_last, unsigned char* pb
+ ACCEPT_SIZE_ENDIAN) const
{
const int verdef_size = elfcpp::Elf_sizes<size>::verdef_size;
const int verdaux_size = elfcpp::Elf_sizes<size>::verdaux_size;
@@ -1129,7 +1130,7 @@ Verneed::finalize(unsigned int index)
template<int size, bool big_endian>
unsigned char*
Verneed::write(const Stringpool* dynpool, bool is_last,
- unsigned char* pb) const
+ unsigned char* pb ACCEPT_SIZE_ENDIAN) const
{
const int verneed_size = elfcpp::Elf_sizes<size>::verneed_size;
const int vernaux_size = elfcpp::Elf_sizes<size>::vernaux_size;
@@ -1367,12 +1368,9 @@ Versions::version_index(const Stringpool* dynpool, const Symbol* sym) const
const char* version = dynpool->find(sym->version(), &version_key);
gold_assert(version != NULL);
- Version_table::const_iterator p;
+ Key k;
if (!sym->is_from_dynobj())
- {
- Key k(version_key, 0);
- p = this->version_table_.find(k);
- }
+ k = Key(version_key, 0);
else
{
Object* object = sym->object();
@@ -1383,10 +1381,10 @@ Versions::version_index(const Stringpool* dynpool, const Symbol* sym) const
const char* filename = dynpool->find(dynobj->soname(), &filename_key);
gold_assert(filename != NULL);
- Key k(version_key, filename_key);
- p = this->version_table_.find(k);
+ k = Key(version_key, filename_key);
}
+ Version_table::const_iterator p = this->version_table_.find(k);
gold_assert(p != this->version_table_.end());
return p->second->index();
@@ -1401,7 +1399,8 @@ Versions::symbol_section_contents(const Stringpool* dynpool,
unsigned int local_symcount,
const std::vector<Symbol*>& syms,
unsigned char** pp,
- unsigned int* psize) const
+ unsigned int* psize
+ ACCEPT_SIZE_ENDIAN) const
{
gold_assert(this->is_finalized_);
@@ -1437,7 +1436,8 @@ template<int size, bool big_endian>
void
Versions::def_section_contents(const Stringpool* dynpool,
unsigned char** pp, unsigned int* psize,
- unsigned int* pentries) const
+ unsigned int* pentries
+ ACCEPT_SIZE_ENDIAN) const
{
gold_assert(this->is_finalized_);
gold_assert(!this->defs_.empty());
@@ -1462,9 +1462,9 @@ Versions::def_section_contents(const Stringpool* dynpool,
for (p = this->defs_.begin(), i = 0;
p != this->defs_.end();
++p, ++i)
- pb = (*p)->write<size, big_endian>(dynpool,
- i + 1 >= this->defs_.size(),
- pb);
+ pb = (*p)->write SELECT_SIZE_ENDIAN_NAME(size, big_endian)(
+ dynpool, i + 1 >= this->defs_.size(), pb
+ SELECT_SIZE_ENDIAN(size, big_endian));
gold_assert(static_cast<unsigned int>(pb - pbuf) == sz);
@@ -1480,7 +1480,8 @@ template<int size, bool big_endian>
void
Versions::need_section_contents(const Stringpool* dynpool,
unsigned char** pp, unsigned int *psize,
- unsigned int *pentries) const
+ unsigned int *pentries
+ ACCEPT_SIZE_ENDIAN) const
{
gold_assert(this->is_finalized_);
gold_assert(!this->needs_.empty());
@@ -1505,9 +1506,9 @@ Versions::need_section_contents(const Stringpool* dynpool,
for (p = this->needs_.begin(), i = 0;
p != this->needs_.end();
++p, ++i)
- pb = (*p)->write<size, big_endian>(dynpool,
- i + 1 >= this->needs_.size(),
- pb);
+ pb = (*p)->write SELECT_SIZE_ENDIAN_NAME(size, big_endian)(
+ dynpool, i + 1 >= this->needs_.size(), pb
+ SELECT_SIZE_ENDIAN(size, big_endian));
gold_assert(static_cast<unsigned int>(pb - pbuf) == sz);
@@ -1533,90 +1534,114 @@ class Sized_dynobj<64, true>;
template
void
-Versions::symbol_section_contents<32, false>(const Stringpool*,
- unsigned int,
- const std::vector<Symbol*>&,
- unsigned char**,
- unsigned int*) const;
+Versions::symbol_section_contents<32, false>(
+ const Stringpool*,
+ unsigned int,
+ const std::vector<Symbol*>&,
+ unsigned char**,
+ unsigned int*
+ ACCEPT_SIZE_ENDIAN_EXPLICIT(32, false)) const;
template
void
-Versions::symbol_section_contents<32, true>(const Stringpool*,
- unsigned int,
- const std::vector<Symbol*>&,
- unsigned char**,
- unsigned int*) const;
+Versions::symbol_section_contents<32, true>(
+ const Stringpool*,
+ unsigned int,
+ const std::vector<Symbol*>&,
+ unsigned char**,
+ unsigned int*
+ ACCEPT_SIZE_ENDIAN_EXPLICIT(32, true)) const;
template
void
-Versions::symbol_section_contents<64, false>(const Stringpool*,
- unsigned int,
- const std::vector<Symbol*>&,
- unsigned char**,
- unsigned int*) const;
+Versions::symbol_section_contents<64, false>(
+ const Stringpool*,
+ unsigned int,
+ const std::vector<Symbol*>&,
+ unsigned char**,
+ unsigned int*
+ ACCEPT_SIZE_ENDIAN_EXPLICIT(64, false)) const;
template
void
-Versions::symbol_section_contents<64, true>(const Stringpool*,
- unsigned int,
- const std::vector<Symbol*>&,
- unsigned char**,
- unsigned int*) const;
+Versions::symbol_section_contents<64, true>(
+ const Stringpool*,
+ unsigned int,
+ const std::vector<Symbol*>&,
+ unsigned char**,
+ unsigned int*
+ ACCEPT_SIZE_ENDIAN_EXPLICIT(64, true)) const;
template
void
-Versions::def_section_contents<32, false>(const Stringpool*,
- unsigned char**,
- unsigned int*,
- unsigned int*) const;
+Versions::def_section_contents<32, false>(
+ const Stringpool*,
+ unsigned char**,
+ unsigned int*,
+ unsigned int*
+ ACCEPT_SIZE_ENDIAN_EXPLICIT(32, false)) const;
template
void
-Versions::def_section_contents<32, true>(const Stringpool*,
- unsigned char**,
- unsigned int*,
- unsigned int*) const;
+Versions::def_section_contents<32, true>(
+ const Stringpool*,
+ unsigned char**,
+ unsigned int*,
+ unsigned int*
+ ACCEPT_SIZE_ENDIAN_EXPLICIT(32, true)) const;
template
void
-Versions::def_section_contents<64, false>(const Stringpool*,
- unsigned char**,
- unsigned int*,
- unsigned int*) const;
+Versions::def_section_contents<64, false>(
+ const Stringpool*,
+ unsigned char**,
+ unsigned int*,
+ unsigned int*
+ ACCEPT_SIZE_ENDIAN_EXPLICIT(64, false)) const;
template
void
-Versions::def_section_contents<64, true>(const Stringpool*,
- unsigned char**,
- unsigned int*,
- unsigned int*) const;
+Versions::def_section_contents<64, true>(
+ const Stringpool*,
+ unsigned char**,
+ unsigned int*,
+ unsigned int*
+ ACCEPT_SIZE_ENDIAN_EXPLICIT(64, true)) const;
template
void
-Versions::need_section_contents<32, false>(const Stringpool*,
- unsigned char**,
- unsigned int*,
- unsigned int*) const;
+Versions::need_section_contents<32, false>(
+ const Stringpool*,
+ unsigned char**,
+ unsigned int*,
+ unsigned int*
+ ACCEPT_SIZE_ENDIAN_EXPLICIT(32, false)) const;
template
void
-Versions::need_section_contents<32, true>(const Stringpool*,
- unsigned char**,
- unsigned int*,
- unsigned int*) const;
+Versions::need_section_contents<32, true>(
+ const Stringpool*,
+ unsigned char**,
+ unsigned int*,
+ unsigned int*
+ ACCEPT_SIZE_ENDIAN_EXPLICIT(32, true)) const;
template
void
-Versions::need_section_contents<64, false>(const Stringpool*,
- unsigned char**,
- unsigned int*,
- unsigned int*) const;
+Versions::need_section_contents<64, false>(
+ const Stringpool*,
+ unsigned char**,
+ unsigned int*,
+ unsigned int*
+ ACCEPT_SIZE_ENDIAN_EXPLICIT(64, false)) const;
template
void
-Versions::need_section_contents<64, true>(const Stringpool*,
- unsigned char**,
- unsigned int*,
- unsigned int*) const;
+Versions::need_section_contents<64, true>(
+ const Stringpool*,
+ unsigned char**,
+ unsigned int*,
+ unsigned int*
+ ACCEPT_SIZE_ENDIAN_EXPLICIT(64, true)) const;
} // End namespace gold.