TCF Agent: Fixed computation of run-time addresses of symbols from a separate debug info file

Some versions of Linux require p-header address from debug file, the rest of p-header info - from executable file
diff --git a/agent/tcf/services/tcf_elf.c b/agent/tcf/services/tcf_elf.c
index 90292cc..e6a859f 100644
--- a/agent/tcf/services/tcf_elf.c
+++ b/agent/tcf/services/tcf_elf.c
@@ -1824,11 +1824,14 @@
         }
         for (i = 0; i < mem_file->pheader_cnt; i++) {
             ELF_PHeader * p = mem_file->pheaders + i;
-            if (!is_p_header_region(mem_file, p, r)) continue;
-            if (addr < p->address || addr >= p->address + p->mem_size) continue;
-            rt = (ContextAddress)(addr - p->address + p->offset - r->file_offs + r->addr);
-            if (rt < r->addr || rt > r->addr + r->size - 1) continue;
-            return rt;
+            if (p->type == PT_LOAD) {
+                U8_T p_addr = i < file->pheader_cnt ? file->pheaders[i].address : p->address;
+                if (addr < p_addr || addr >= p_addr + p->mem_size) continue;
+                if (!is_p_header_region(mem_file, p, r)) continue;
+                rt = (ContextAddress)(addr - p_addr + p->offset - r->file_offs + r->addr);
+                if (rt < r->addr || rt > r->addr + r->size - 1) continue;
+                return rt;
+            }
         }
     }
     else if (sec != NULL) {