This changes the ExecutableInfo class to only store the executable file's name rather than an entire instance of rld::files::object. This allows the rld::files::object to be cleaned up in the ExecutableInfo constructor.
Updates #4383 --- tester/covoar/ExecutableInfo.cc | 12 +++++------- tester/covoar/ExecutableInfo.h | 10 +++++----- 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/tester/covoar/ExecutableInfo.cc b/tester/covoar/ExecutableInfo.cc index fc368ce..861e60d 100644 --- a/tester/covoar/ExecutableInfo.cc +++ b/tester/covoar/ExecutableInfo.cc @@ -21,7 +21,7 @@ namespace Coverage { const char* const theExecutableName, const char* const theLibraryName, bool verbose - ) : executable(theExecutableName), + ) : fileName(theExecutableName), loadAddress(0) { if (theLibraryName != nullptr) @@ -34,6 +34,8 @@ namespace Coverage { std::cerr << std::endl; } + rld::files::object executable(theExecutableName); + executable.open(); executable.begin(); executable.load_symbols(symbols); @@ -82,8 +84,6 @@ namespace Coverage { } } catch (...) { debug.end(); - executable.end(); - executable.close(); throw; } @@ -95,8 +95,6 @@ namespace Coverage { ExecutableInfo::~ExecutableInfo() { debug.end(); - executable.end(); - executable.close(); } void ExecutableInfo::dumpCoverageMaps( void ) { @@ -132,9 +130,9 @@ namespace Coverage { return aCoverageMap; } - const std::string ExecutableInfo::getFileName ( void ) const + const std::string& ExecutableInfo::getFileName ( void ) const { - return executable.name().full(); + return fileName; } const std::string ExecutableInfo::getLibraryName( void ) const diff --git a/tester/covoar/ExecutableInfo.h b/tester/covoar/ExecutableInfo.h index d5ccb19..5d5a595 100644 --- a/tester/covoar/ExecutableInfo.h +++ b/tester/covoar/ExecutableInfo.h @@ -77,7 +77,7 @@ namespace Coverage { * * @return Returns the executable's file name */ - const std::string getFileName( void ) const; + const std::string& getFileName( void ) const; /*! * This method returns the library name associated with the executable. @@ -158,14 +158,14 @@ namespace Coverage { ); /*! - * The ELF executable. + * The DWARF data to the ELF executable. */ - rld::files::object executable; + rld::dwarf::file debug; /*! - * The DWARF data to the ELF executable. + * The executable's file name. */ - rld::dwarf::file debug; + std::string fileName; /*! * The executable's symbol table. -- 2.27.0 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel