The output routine is used by a number of tools. --- rtemstoolkit/rld.cpp | 15 +++++++++++++++ rtemstoolkit/rld.h | 5 +++++ 2 files changed, 20 insertions(+)
diff --git a/rtemstoolkit/rld.cpp b/rtemstoolkit/rld.cpp index acce748..90fb39d 100644 --- a/rtemstoolkit/rld.cpp +++ b/rtemstoolkit/rld.cpp @@ -28,6 +28,7 @@ #include <iostream> +#include <cxxabi.h> #include <sys/stat.h> #include <rld.h> @@ -81,6 +82,20 @@ namespace rld */ static uint64_t _version_revision; + void + output_std_exception (std::exception e, std::ostream& out) + { + int status; + char* realname; + realname = abi::__cxa_demangle (e.what(), 0, 0, &status); + out << "error: exception: " << realname << " ["; + ::free (realname); + const std::type_info &ti = typeid (e); + realname = abi::__cxa_demangle (ti.name(), 0, 0, &status); + out << realname << "] " << e.what () << std::endl; + ::free (realname); + } + bool starts_with(const std::string& s1, const std::string& s2) { diff --git a/rtemstoolkit/rld.h b/rtemstoolkit/rld.h index 2b6a40d..1031a54 100644 --- a/rtemstoolkit/rld.h +++ b/rtemstoolkit/rld.h @@ -104,6 +104,11 @@ namespace rld } }; + /** + * Handle a standard exception. + */ + void output_std_exception (std::exception e, std::ostream& out); + /** * A convenience macro to make where a file and line number. */ -- 2.15.1 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel