summaryrefslogtreecommitdiffstats
path: root/rtemstoolkit/rld-files.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'rtemstoolkit/rld-files.cpp')
-rw-r--r--rtemstoolkit/rld-files.cpp38
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);
}