diff options
author | Chris Johns <chrisj@rtems.org> | 2018-08-21 14:43:28 +1000 |
---|---|---|
committer | Chris Johns <chrisj@rtems.org> | 2018-08-21 14:45:25 +1000 |
commit | a3a136411515a83a24cfd67e4c7210057ace4bd2 (patch) | |
tree | 828a31d16da2d35345512d751c83c675496cd6ed /tester/covoar | |
parent | coverage/symbol-sets.ini : Add symbol-sets and paths to respective libraries (diff) | |
download | rtems-tools-a3a136411515a83a24cfd67e4c7210057ace4bd2.tar.bz2 |
covoar: Close the ELF and DWARF handles once the data is loaded.
This avoids the processing being killed with to many file handles
open.
Diffstat (limited to 'tester/covoar')
-rw-r--r-- | tester/covoar/ExecutableInfo.cc | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/tester/covoar/ExecutableInfo.cc b/tester/covoar/ExecutableInfo.cc index 0a629b7..d93860b 100644 --- a/tester/covoar/ExecutableInfo.cc +++ b/tester/covoar/ExecutableInfo.cc @@ -37,27 +37,36 @@ namespace Coverage { executable.open(); executable.begin(); executable.load_symbols(symbols); + debug.begin(executable.elf()); debug.load_debug(); debug.load_functions(); - for (auto& cu : debug.get_cus()) { - for (auto& func : cu.get_functions()) { - if (func.has_machine_code() && (!func.is_inlined() || func.is_external())) { - createCoverageMap (cu.name(), func.name(), - func.pc_low(), func.pc_high()); + try { + for (auto& cu : debug.get_cus()) { + for (auto& func : cu.get_functions()) { + if (func.has_machine_code() && (!func.is_inlined() || func.is_external())) { + createCoverageMap (cu.name(), func.name(), + func.pc_low(), func.pc_high()); + } } } + } catch (...) { + debug.end(); + executable.end(); + executable.close(); + throw; } - } - ExecutableInfo::~ExecutableInfo() - { debug.end(); executable.end(); executable.close(); } + ExecutableInfo::~ExecutableInfo() + { + } + void ExecutableInfo::dumpCoverageMaps( void ) { ExecutableInfo::CoverageMaps::iterator itr; |