| skipped 308 lines |
309 | 309 | | return export_symbol(*s); |
310 | 310 | | } |
311 | 311 | | |
312 | | - | s = get_static_symbol(symbol_name); |
| 312 | + | s = get_symtab_symbol(symbol_name); |
313 | 313 | | if (s != nullptr) { |
314 | 314 | | if (value > 0) { |
315 | 315 | | s->value(value); |
| skipped 32 lines |
348 | 348 | | } |
349 | 349 | | |
350 | 350 | | // Second: Check if a symbol with the given 'name' exists in the **static** |
351 | | - | s = get_static_symbol(funcname); |
| 351 | + | s = get_symtab_symbol(funcname); |
352 | 352 | | if (s != nullptr) { |
353 | 353 | | s->type(Symbol::TYPE::FUNC); |
354 | 354 | | s->binding(Symbol::BINDING::GLOBAL); |
| skipped 44 lines |
399 | 399 | | return const_cast<Symbol*>(static_cast<const Binary*>(this)->get_dynamic_symbol(name)); |
400 | 400 | | } |
401 | 401 | | |
402 | | - | bool Binary::has_static_symbol(const std::string& name) const { |
403 | | - | const auto it_symbol = std::find_if( |
404 | | - | std::begin(static_symbols_), std::end(static_symbols_), |
405 | | - | [&name] (const std::unique_ptr<Symbol>& s) { |
406 | | - | return s->name() == name; |
407 | | - | }); |
408 | | - | return it_symbol != std::end(static_symbols_); |
409 | | - | } |
410 | | - | |
411 | | - | const Symbol* Binary::get_static_symbol(const std::string& name) const { |
| 402 | + | const Symbol* Binary::get_symtab_symbol(const std::string& name) const { |
412 | 403 | | const auto it_symbol = std::find_if( |
413 | | - | std::begin(static_symbols_), std::end(static_symbols_), |
| 404 | + | std::begin(symtab_symbols_), std::end(symtab_symbols_), |
414 | 405 | | [&name] (const std::unique_ptr<Symbol>& s) { |
415 | 406 | | return s->name() == name; |
416 | 407 | | }); |
417 | | - | if (it_symbol == std::end(static_symbols_)) { |
| 408 | + | if (it_symbol == std::end(symtab_symbols_)) { |
418 | 409 | | return nullptr; |
419 | 410 | | } |
420 | 411 | | return it_symbol->get(); |
| skipped 38 lines |
459 | 450 | | return list; |
460 | 451 | | } |
461 | 452 | | |
462 | | - | Symbol* Binary::get_static_symbol(const std::string& name) { |
463 | | - | return const_cast<Symbol*>(static_cast<const Binary*>(this)->get_static_symbol(name)); |
| 453 | + | Symbol* Binary::get_symtab_symbol(const std::string& name) { |
| 454 | + | return const_cast<Symbol*>(static_cast<const Binary*>(this)->get_symtab_symbol(name)); |
464 | 455 | | } |
465 | 456 | | |
466 | 457 | | |
467 | | - | std::vector<Symbol*> Binary::static_dyn_symbols() const { |
| 458 | + | std::vector<Symbol*> Binary::symtab_dyn_symbols() const { |
468 | 459 | | std::vector<Symbol*> symbols; |
469 | | - | symbols.reserve(static_symbols_.size() + dynamic_symbols_.size()); |
| 460 | + | symbols.reserve(symtab_symbols_.size() + dynamic_symbols_.size()); |
470 | 461 | | for (const std::unique_ptr<Symbol>& s : dynamic_symbols_) { |
471 | 462 | | symbols.push_back(s.get()); |
472 | 463 | | } |
473 | 464 | | |
474 | | - | for (const std::unique_ptr<Symbol>& s : static_symbols_) { |
| 465 | + | for (const std::unique_ptr<Symbol>& s : symtab_symbols_) { |
475 | 466 | | symbols.push_back(s.get()); |
476 | 467 | | } |
477 | 468 | | return symbols; |
| skipped 3 lines |
481 | 472 | | // -------- |
482 | 473 | | |
483 | 474 | | Binary::it_exported_symbols Binary::exported_symbols() { |
484 | | - | return {static_dyn_symbols(), [] (const Symbol* symbol) { |
| 475 | + | return {symtab_dyn_symbols(), [] (const Symbol* symbol) { |
485 | 476 | | return symbol->is_exported(); |
486 | 477 | | }}; |
487 | 478 | | } |
488 | 479 | | |
489 | 480 | | Binary::it_const_exported_symbols Binary::exported_symbols() const { |
490 | | - | return {static_dyn_symbols(), [] (const Symbol* symbol) { |
| 481 | + | return {symtab_dyn_symbols(), [] (const Symbol* symbol) { |
491 | 482 | | return symbol->is_exported(); |
492 | 483 | | }}; |
493 | 484 | | } |
| skipped 4 lines |
498 | 489 | | // -------- |
499 | 490 | | |
500 | 491 | | Binary::it_imported_symbols Binary::imported_symbols() { |
501 | | - | return {static_dyn_symbols(), [] (const Symbol* symbol) { |
| 492 | + | return {symtab_dyn_symbols(), [] (const Symbol* symbol) { |
502 | 493 | | return symbol->is_imported(); |
503 | 494 | | }}; |
504 | 495 | | } |
505 | 496 | | |
506 | 497 | | Binary::it_const_imported_symbols Binary::imported_symbols() const { |
507 | | - | return {static_dyn_symbols(), [] (const Symbol* symbol) { |
| 498 | + | return {symtab_dyn_symbols(), [] (const Symbol* symbol) { |
508 | 499 | | return symbol->is_imported(); |
509 | 500 | | }}; |
510 | 501 | | } |
511 | 502 | | |
512 | 503 | | void Binary::remove_symbol(const std::string& name) { |
513 | | - | remove_static_symbol(name); |
| 504 | + | remove_symtab_symbol(name); |
514 | 505 | | remove_dynamic_symbol(name); |
515 | 506 | | } |
516 | 507 | | |
517 | | - | void Binary::remove_static_symbol(const std::string& name) { |
518 | | - | Symbol* sym = get_static_symbol(name); |
| 508 | + | void Binary::remove_symtab_symbol(const std::string& name) { |
| 509 | + | Symbol* sym = get_symtab_symbol(name); |
519 | 510 | | if (sym == nullptr) { |
520 | | - | LIEF_WARN("Can't find the static symbol '{}'. It won't be removed", name); |
| 511 | + | LIEF_WARN("Can't find the symtab symbol '{}'. It won't be removed", name); |
521 | 512 | | return; |
522 | 513 | | } |
523 | | - | remove_static_symbol(sym); |
| 514 | + | remove_symtab_symbol(sym); |
524 | 515 | | } |
525 | 516 | | |
526 | | - | void Binary::remove_static_symbol(Symbol* symbol) { |
| 517 | + | void Binary::remove_symtab_symbol(Symbol* symbol) { |
527 | 518 | | if (symbol == nullptr) { |
528 | 519 | | return; |
529 | 520 | | } |
530 | 521 | | |
531 | 522 | | const auto it_symbol = std::find_if( |
532 | | - | std::begin(static_symbols_), std::end(static_symbols_), |
| 523 | + | std::begin(symtab_symbols_), std::end(symtab_symbols_), |
533 | 524 | | [symbol] (const std::unique_ptr<Symbol>& sym) { |
534 | 525 | | return *symbol == *sym; |
535 | 526 | | } |
536 | 527 | | ); |
537 | 528 | | |
538 | | - | if (it_symbol == std::end(static_symbols_)) { |
539 | | - | LIEF_WARN("Can't find the static symbol '{}'. It won't be removed", symbol->name()); |
| 529 | + | if (it_symbol == std::end(symtab_symbols_)) { |
| 530 | + | LIEF_WARN("Can't find the symtab symbol '{}'. It won't be removed", symbol->name()); |
540 | 531 | | return; |
541 | 532 | | } |
542 | 533 | | |
543 | | - | static_symbols_.erase(it_symbol); |
| 534 | + | symtab_symbols_.erase(it_symbol); |
544 | 535 | | } |
545 | | - | |
546 | | - | |
547 | 536 | | |
548 | 537 | | void Binary::remove_dynamic_symbol(const std::string& name) { |
549 | 538 | | Symbol* sym = get_dynamic_symbol(name); |
| skipped 259 lines |
809 | 798 | | |
810 | 799 | | LIEF::Binary::symbols_t Binary::get_abstract_symbols() { |
811 | 800 | | LIEF::Binary::symbols_t symbols; |
812 | | - | symbols.reserve(dynamic_symbols_.size() + static_symbols_.size()); |
| 801 | + | symbols.reserve(dynamic_symbols_.size() + symtab_symbols_.size()); |
813 | 802 | | std::transform(std::begin(dynamic_symbols_), std::end(dynamic_symbols_), |
814 | 803 | | std::back_inserter(symbols), |
815 | 804 | | [] (std::unique_ptr<Symbol>& s) { |
816 | 805 | | return s.get(); |
817 | 806 | | }); |
818 | 807 | | |
819 | | - | std::transform(std::begin(static_symbols_), std::end(static_symbols_), |
| 808 | + | std::transform(std::begin(symtab_symbols_), std::end(symtab_symbols_), |
820 | 809 | | std::back_inserter(symbols), |
821 | 810 | | [] (std::unique_ptr<Symbol>& s) { |
822 | 811 | | return s.get(); |
| skipped 52 lines |
875 | 864 | | |
876 | 865 | | } |
877 | 866 | | |
878 | | - | Section* Binary::static_symbols_section() { |
| 867 | + | Section* Binary::symtab_symbols_section() { |
879 | 868 | | const auto it_symtab_section = std::find_if( |
880 | 869 | | std::begin(sections_), std::end(sections_), |
881 | 870 | | [] (const std::unique_ptr<Section>& section) { |
| skipped 49 lines |
931 | 920 | | } |
932 | 921 | | |
933 | 922 | | result<uint64_t> Binary::get_function_address(const std::string& func_name, bool demangled) const { |
934 | | - | const auto it_symbol = std::find_if(std::begin(static_symbols_), std::end(static_symbols_), |
| 923 | + | const auto it_symbol = std::find_if(std::begin(symtab_symbols_), std::end(symtab_symbols_), |
935 | 924 | | [&func_name, demangled] (const std::unique_ptr<Symbol>& symbol) { |
936 | 925 | | std::string sname; |
937 | 926 | | if (demangled) { |
| skipped 7 lines |
945 | 934 | | symbol->type() == Symbol::TYPE::FUNC; |
946 | 935 | | }); |
947 | 936 | | |
948 | | - | if (it_symbol == std::end(static_symbols_)) { |
| 937 | + | if (it_symbol == std::end(symtab_symbols_)) { |
949 | 938 | | return make_error_code(lief_errors::not_found); |
950 | 939 | | } |
951 | 940 | | |
| skipped 567 lines |
1519 | 1508 | | } |
1520 | 1509 | | |
1521 | 1510 | | void Binary::strip() { |
1522 | | - | static_symbols_.clear(); |
| 1511 | + | symtab_symbols_.clear(); |
1523 | 1512 | | Section* symtab = get(Section::TYPE::SYMTAB); |
1524 | 1513 | | if (symtab != nullptr) { |
1525 | 1514 | | remove(*symtab, /* clear */ true); |
| skipped 1 lines |
1527 | 1516 | | } |
1528 | 1517 | | |
1529 | 1518 | | |
1530 | | - | Symbol& Binary::add_static_symbol(const Symbol& symbol) { |
1531 | | - | static_symbols_.push_back(std::make_unique<Symbol>(symbol)); |
1532 | | - | return *static_symbols_.back(); |
| 1519 | + | Symbol& Binary::add_symtab_symbol(const Symbol& symbol) { |
| 1520 | + | symtab_symbols_.push_back(std::make_unique<Symbol>(symbol)); |
| 1521 | + | return *symtab_symbols_.back(); |
1533 | 1522 | | } |
1534 | 1523 | | |
1535 | 1524 | | |
| skipped 1642 lines |
3178 | 3167 | | os << std::endl; |
3179 | 3168 | | |
3180 | 3169 | | |
3181 | | - | os << "Static symbols" << std::endl; |
| 3170 | + | os << "Symtab symbols" << std::endl; |
3182 | 3171 | | os << "==============" << std::endl; |
3183 | 3172 | | |
3184 | | - | for (const Symbol& symbol : static_symbols()) { |
| 3173 | + | for (const Symbol& symbol : symtab_symbols()) { |
3185 | 3174 | | os << symbol << std::endl; |
3186 | 3175 | | } |
3187 | 3176 | | |
| skipped 96 lines |