[rtems-tools commit] TraceConverter.cc: Fix Uncaught exception issue

Joel Sherrill joel at rtems.org
Wed Dec 15 16:35:05 UTC 2021


Module:    rtems-tools
Branch:    master
Commit:    c9aefbba45ec19085e6f668c3da7d617d21ce181
Changeset: http://git.rtems.org/rtems-tools/commit/?id=c9aefbba45ec19085e6f668c3da7d617d21ce181

Author:    Ryan Long <ryan.long at oarcorp.com>
Date:      Mon Dec 13 08:40:35 2021 -0500

TraceConverter.cc: Fix Uncaught exception issue

CID 1471639: Uncaught exception

Closes #4501

---

 tester/covoar/TraceConverter.cc | 30 +++++++++++++++++++++++++++---
 1 file changed, 27 insertions(+), 3 deletions(-)

diff --git a/tester/covoar/TraceConverter.cc b/tester/covoar/TraceConverter.cc
index 8e30ae5..e393268 100644
--- a/tester/covoar/TraceConverter.cc
+++ b/tester/covoar/TraceConverter.cc
@@ -87,13 +87,37 @@ int main(
   std::string                         tracefile;
   std::string                         logname = "/tmp/qemu.log";
   Coverage::ExecutableInfo*           executableInfo;
-  rld::process::tempfile              objdumpFile( ".dmp" );
-  rld::process::tempfile              err( ".err" );
   Coverage::DesiredSymbols            symbolsToAnalyze;
   bool                                verbose = false;
   std::string                         dynamicLibrary;
   int                                 ec = 0;
   std::shared_ptr<Target::TargetBase> targetInfo;
+  rld::process::tempfile              *objdumpFile;
+  rld::process::tempfile              *err;
+
+  try
+  {
+    objdumpFile = new rld::process::tempfile( ".dmp" );
+  }
+  catch ( rld::error re )
+  {
+    std::cerr << "Failed to make .dmp tempfile " << std::endl;
+    ec = 10;
+
+    return ec;
+  }
+
+  try
+  {
+    err = new rld::process::tempfile( ".err" );
+  }
+  catch ( rld::error re )
+  {
+    std::cerr << "Failed to make .err tempfile " << std::endl;
+    ec = 10;
+
+    return ec;
+  }
 
   setup_signals();
 
@@ -195,7 +219,7 @@ int main(
 
   try
   {
-    objdumpProcessor.loadAddressTable( executableInfo, objdumpFile, err );
+    objdumpProcessor.loadAddressTable( executableInfo, *objdumpFile, *err );
     log.processFile( logname.c_str(), objdumpProcessor );
     trace.writeFile( tracefile.c_str(), &log, verbose );
   }



More information about the vc mailing list