TCF Agent: fixed: when handling GCC separate symbol file, should use program headers from original executable file
diff --git a/agent/tcf/services/tcf_elf.c b/agent/tcf/services/tcf_elf.c
index 61d92ba..d853445 100644
--- a/agent/tcf/services/tcf_elf.c
+++ b/agent/tcf/services/tcf_elf.c
@@ -1668,6 +1668,7 @@
if (elf_get_map(ctx, 0, ~(ContextAddress)0, &elf_map) < 0) return 0;
for (i = 0; i < elf_map.region_cnt; i++) {
MemoryRegion * r = elf_map.regions + i;
+ ELF_File * exec = file;
int same_file = 0;
if (r->dev == 0) {
same_file = file_name_equ(file, r->file_name);
@@ -1679,13 +1680,12 @@
}
if (!same_file) {
/* Check if the memory map entry has a separate debug info file */
- ELF_File * exec = NULL;
if (!file->debug_info_file) continue;
exec = elf_open_memory_region_file(r, NULL);
if (exec == NULL) continue;
if (get_dwarf_file(exec) != file) continue;
}
- rt = elf_run_time_address_in_region(ctx, r, file, sec, addr);
+ rt = elf_run_time_address_in_region(ctx, r, exec, sec, addr);
if (errno == 0) return rt;
}
if (file->type == ET_EXEC) {