4
0
mirror of https://github.com/QuasarApp/LIEF.git synced 2025-05-05 16:39:32 +00:00

Include static symbols in exported/imported

This commit is contained in:
Romain Thomas 2018-04-23 09:34:18 +02:00
parent cda91aec7a
commit 30f34a6952
2 changed files with 21 additions and 28 deletions
include/LIEF/ELF
src/ELF

@ -524,6 +524,7 @@ class LIEF_API Binary : public LIEF::Binary {
template<bool LOADED>
Section& add_section(const Section& section);
symbols_t static_dyn_symbols(void) const;
//! The binary type
//! (i.e. `ELF32` or `ELF64`)

@ -355,33 +355,11 @@ it_const_symbols Binary::dynamic_symbols(void) const {
it_symbols Binary::symbols(void) {
symbols_t symbols;
symbols.reserve(this->dynamic_symbols().size() + this->static_symbols().size());
for (Symbol& s : this->dynamic_symbols()) {
symbols.push_back(&s);
}
for (Symbol& s : this->static_symbols()) {
symbols.push_back(&s);
}
return it_symbols{symbols};
return this->static_dyn_symbols();
}
it_const_symbols Binary::symbols(void) const {
symbols_t symbols;
symbols.reserve(this->dynamic_symbols().size() + this->static_symbols().size());
for (const Symbol& s : this->dynamic_symbols()) {
symbols.push_back(const_cast<Symbol*>(&s));
}
for (const Symbol& s : this->static_symbols()) {
symbols.push_back(const_cast<Symbol*>(&s));
}
return it_const_symbols{symbols};
return this->static_dyn_symbols();
}
@ -553,17 +531,31 @@ Symbol& Binary::get_static_symbol(const std::string& name) {
}
symbols_t Binary::static_dyn_symbols(void) const {
symbols_t symbols;
symbols.reserve(this->dynamic_symbols().size() + this->static_symbols().size());
for (Symbol& s : this->dynamic_symbols()) {
symbols.push_back(&s);
}
for (Symbol& s : this->static_symbols()) {
symbols.push_back(&s);
}
return symbols;
}
// Exported
// --------
it_exported_symbols Binary::exported_symbols(void) {
return {this->dynamic_symbols_,
return {this->static_dyn_symbols(),
[] (const Symbol* symbol) { return symbol->is_exported(); }
};
}
it_const_exported_symbols Binary::exported_symbols(void) const {
return {this->dynamic_symbols_,
return {this->static_dyn_symbols(),
[] (const Symbol* symbol) { return symbol->is_exported(); }
};
}
@ -574,13 +566,13 @@ it_const_exported_symbols Binary::exported_symbols(void) const {
// --------
it_imported_symbols Binary::imported_symbols(void) {
return filter_iterator<symbols_t>{std::ref(this->dynamic_symbols_),
return {this->static_dyn_symbols(),
[] (const Symbol* symbol) { return symbol->is_imported(); }
};
}
it_const_imported_symbols Binary::imported_symbols(void) const {
return const_filter_iterator<symbols_t>{std::cref(this->dynamic_symbols_),
return {this->static_dyn_symbols(),
[] (const Symbol* symbol) { return symbol->is_imported(); }
};
}