summaryrefslogtreecommitdiffstats
path: root/tester/covoar/ExecutableInfo.cc
diff options
context:
space:
mode:
Diffstat (limited to 'tester/covoar/ExecutableInfo.cc')
-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;