summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2018-08-21 14:43:28 +1000
committerChris Johns <chrisj@rtems.org>2018-08-21 14:45:25 +1000
commita3a136411515a83a24cfd67e4c7210057ace4bd2 (patch)
tree828a31d16da2d35345512d751c83c675496cd6ed
parentcoverage/symbol-sets.ini : Add symbol-sets and paths to respective libraries (diff)
downloadrtems-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.
-rw-r--r--tester/covoar/ExecutableInfo.cc25
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;