summaryrefslogtreecommitdiffstats
path: root/rtemstoolkit/rld-symbols.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'rtemstoolkit/rld-symbols.cpp')
-rw-r--r--rtemstoolkit/rld-symbols.cpp22
1 files changed, 18 insertions, 4 deletions
diff --git a/rtemstoolkit/rld-symbols.cpp b/rtemstoolkit/rld-symbols.cpp
index 92803d8..19d5680 100644
--- a/rtemstoolkit/rld-symbols.cpp
+++ b/rtemstoolkit/rld-symbols.cpp
@@ -37,8 +37,22 @@ namespace rld
/**
* Get the demangled name.
*/
- static void
- denamgle_name (std::string& name, std::string& demangled)
+ bool
+ is_cplusplus (const std::string& name)
+ {
+ char* demangled_name = ::cplus_demangle (name.c_str (),
+ DMGL_ANSI | DMGL_PARAMS);
+ bool yes = false;
+ if (demangled_name)
+ {
+ yes = true;
+ ::free (demangled_name);
+ }
+ return yes;
+ }
+
+ void
+ demangle_name (std::string& name, std::string& demangled)
{
char* demangled_name = ::cplus_demangle (name.c_str (),
DMGL_ANSI | DMGL_PARAMS);
@@ -70,7 +84,7 @@ namespace rld
if (!object_)
throw rld_error_at ("object pointer is 0");
if (is_cplusplus ())
- denamgle_name (name_, demangled_);
+ demangle_name (name_, demangled_);
}
symbol::symbol (int index,
@@ -83,7 +97,7 @@ namespace rld
references_ (0)
{
if (is_cplusplus ())
- denamgle_name (name_, demangled_);
+ demangle_name (name_, demangled_);
}
symbol::symbol (const std::string& name,