From 98ff9231545f9ba7221ad64ec1ff17cf52cafc07 Mon Sep 17 00:00:00 2001 From: Cary Coutant Date: Mon, 10 Mar 2014 13:33:20 -0700 Subject: Allow target to set dynsym indexes. 2014-03-10 Sasa Stankovic gold/ * symtab.cc (Symbol_table::set_dynsym_indexes): Allow a target to set dynsym indexes. * target.h (Target::has_custom_set_dynsym_indexes): New function. (Target::do_has_custom_set_dynsym_indexes): New function. (Target::set_dynsym_indexes): New function. (Target::do_set_dynsym_indexes): New function. --- gold/symtab.cc | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'gold/symtab.cc') diff --git a/gold/symtab.cc b/gold/symtab.cc index 363653e..87173b2 100644 --- a/gold/symtab.cc +++ b/gold/symtab.cc @@ -2371,6 +2371,25 @@ Symbol_table::set_dynsym_indexes(unsigned int index, { std::vector as_needed_sym; + // Allow a target to set dynsym indexes. + if (parameters->target().has_custom_set_dynsym_indexes()) + { + std::vector dyn_symbols; + for (Symbol_table_type::iterator p = this->table_.begin(); + p != this->table_.end(); + ++p) + { + Symbol* sym = p->second; + if (!sym->should_add_dynsym_entry(this)) + sym->set_dynsym_index(-1U); + else + dyn_symbols.push_back(sym); + } + + return parameters->target().set_dynsym_indexes(&dyn_symbols, index, syms, + dynpool, versions, this); + } + for (Symbol_table_type::iterator p = this->table_.begin(); p != this->table_.end(); ++p) -- cgit v1.1