[DynInst_API:] [dyninst/dyninst] 2b8973: Remove Symtab::findModuleByName(Module *&, std::st...


Date: Sun, 08 Oct 2023 12:47:42 -0700
From: Tim Haines <noreply@xxxxxxxxxx>
Subject: [DynInst_API:] [dyninst/dyninst] 2b8973: Remove Symtab::findModuleByName(Module *&, std::st...
  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


[← Prev in Thread] Current Thread [Next in Thread→]
  • [DynInst_API:] [dyninst/dyninst] 2b8973: Remove Symtab::findModuleByName(Module *&, std::st..., Tim Haines <=