diff options
Diffstat (limited to 'rtemstoolkit/rld-files.cpp')
-rw-r--r-- | rtemstoolkit/rld-files.cpp | 38 |
1 files changed, 30 insertions, 8 deletions
diff --git a/rtemstoolkit/rld-files.cpp b/rtemstoolkit/rld-files.cpp index 03310e8..995b059 100644 --- a/rtemstoolkit/rld-files.cpp +++ b/rtemstoolkit/rld-files.cpp @@ -1040,10 +1040,32 @@ namespace rld rld::symbols::pointers syms; - elf ().get_symbols (syms, false, local, false, true); + if (local) + { + elf ().get_symbols (syms, false, true, false, false); + + if (rld::verbose () >= RLD_VERBOSE_TRACE_SYMS) + std::cout << "object:load-sym: local: total " + << syms.size () << std::endl; + + for (symbols::pointers::iterator si = syms.begin (); + si != syms.end (); + ++si) + { + symbols::symbol& sym = *(*si); + + if (rld::verbose () >= RLD_VERBOSE_TRACE_SYMS) + std::cout << "object:load-sym: local: " << sym << std::endl; + + sym.set_object (*this); + symbols.add_local (sym); + } + } + + elf ().get_symbols (syms, false, false, true, false); if (rld::verbose () >= RLD_VERBOSE_TRACE_SYMS) - std::cout << "object:load-sym: exported: total " + std::cout << "object:load-sym: weak: total " << syms.size () << std::endl; for (symbols::pointers::iterator si = syms.begin (); @@ -1053,17 +1075,17 @@ namespace rld symbols::symbol& sym = *(*si); if (rld::verbose () >= RLD_VERBOSE_TRACE_SYMS) - std::cout << "object:load-sym: exported: " << sym << std::endl; + std::cout << "object:load-sym: weak: " << sym << std::endl; sym.set_object (*this); - symbols.add_external (sym); + symbols.add_weak (sym); externals.push_back (&sym); } - elf ().get_symbols (syms, false, false, true, false); + elf ().get_symbols (syms, false, false, false, true); if (rld::verbose () >= RLD_VERBOSE_TRACE_SYMS) - std::cout << "object:load-sym: weak: total " + std::cout << "object:load-sym: global: total " << syms.size () << std::endl; for (symbols::pointers::iterator si = syms.begin (); @@ -1073,10 +1095,10 @@ namespace rld symbols::symbol& sym = *(*si); if (rld::verbose () >= RLD_VERBOSE_TRACE_SYMS) - std::cout << "object:load-sym: weak: " << sym << std::endl; + std::cout << "object:load-sym: global: " << sym << std::endl; sym.set_object (*this); - symbols.add_weak (sym); + symbols.add_global (sym); externals.push_back (&sym); } |