Branch: refs/heads/thaines/symtab_remove_findModuleByName
Home: https://github.com/dyninst/dyninst
Commit: 2b8973b9385b559eb70b16187a62cc634bd9d2a9
https://github.com/dyninst/dyninst/commit/2b8973b9385b559eb70b16187a62cc634bd9d2a9
Author: Tim Haines <thaines.astro@xxxxxxxxx>
Date: 2023-10-07 (Sat, 07 Oct 2023)
Changed paths:
M symtabAPI/doc/3-Examples.tex
M symtabAPI/doc/API/LineInfo/Iterating.tex
M symtabAPI/doc/API/Symtab/Symtab.tex
M symtabAPI/h/Symtab.h
M symtabAPI/src/Symtab-lookup.C
M symtabAPI/src/Symtab.C
Log Message:
-----------
Remove Symtab::findModuleByName(Module *&, std::string)
We consider the name of a module to be the DW_AT_name of the containing
DIE. This is either the full path name of the source file used to create
the CU or the relative path of the same with respect to the
DW_AT_comp_dir. We ensure that the module's name is always an absolute
path.
Modules have never been required to have unique names. That is, many
modules can share the same name. The following demonstrates this case:
test.c
------
void func1(){}
void func2(){}
$ gcc -g -c -DFUNC1 -o func1.o test.c
$ gcc -g -c -DFUNC2 -o func2.o test.c
$ gcc -g -fPIC -shared func1.o func2.o -o libfunc.so
$ readelf --debug-dump=info libfunc.so | grep -A 5 DW_TAG_compile_unit
<0><c>: Abbrev Number: 1 (DW_TAG_compile_unit)
<d> DW_AT_producer : (indirect string, offset: 0x0): <redacted>
<11> DW_AT_language : 29 (C11)
<12> DW_AT_name : (indirect line string, offset: 0x19): test.c
<16> DW_AT_comp_dir : (indirect line string, offset: 0x0): /path/to/test
<1a> DW_AT_low_pc : 0x10f9
<0><55>: Abbrev Number: 1 (DW_TAG_compile_unit)
<56> DW_AT_producer : (indirect string, offset: 0x0): <redacted>
<5a> DW_AT_language : 29 (C11)
<5b> DW_AT_name : (indirect line string, offset: 0x19): test.c
<5f> DW_AT_comp_dir : (indirect line string, offset: 0x0): /path/to/test
<63> DW_AT_low_pc : 0x1104
|