[all-commits] [llvm/llvm-project] 9c2bb1: [LLDB] Support Auxiliary library in ELF format

aokblast via All-commits all-commits at lists.llvm.org
Sun Jul 12 01:20:38 PDT 2026


  Branch: refs/heads/users/aokblast/lldb/fix_auxilary_handle
  Home:   https://github.com/llvm/llvm-project
  Commit: 9c2bb1a439fcf2c880ad7b6cfcfa3f0668610a4a
      https://github.com/llvm/llvm-project/commit/9c2bb1a439fcf2c880ad7b6cfcfa3f0668610a4a
  Author: ShengYi Hung <aokblast at FreeBSD.org>
  Date:   2026-07-12 (Sun, 12 Jul 2026)

  Changed paths:
    M lldb/include/lldb/Symbol/Symbol.h
    M lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.cpp
    M lldb/source/Plugins/ObjectFile/ELF/ObjectFileELF.h
    M lldb/source/Symbol/Symbol.cpp

  Log Message:
  -----------
  [LLDB] Support Auxiliary library in ELF format

An ELF filter library (DT_FILTER) or auxiliary filter (DT_AUXILIARY)
delegates symbol resolution to its filtee: the dynamic linker looks up
each symbol in the filtee first, falling back to the filter library's
own definition. Filter library may export placeholder smyolbs whose
addresses are not the actual function entry points.

To support this, we teach ObjectFileELF to parse the filtee and model
placeholder function definition in filter libraries as ReExported,
reusing the existing re-export machinery.

Notice that in ELF, we don't record the per-symbol target ReExported
library like Macho. Instead, it is a suggestion list from the libraries
that exposes this symbol. As a result, we need to pass the library
Module to read the suggestion list to correctly parse the file in
Resolver.


  Commit: 31ae997374d4b7752c736865ef844b31e43af815
      https://github.com/llvm/llvm-project/commit/31ae997374d4b7752c736865ef844b31e43af815
  Author: ShengYi Hung <aokblast at FreeBSD.org>
  Date:   2026-07-12 (Sun, 12 Jul 2026)

  Changed paths:
    M lldb/unittests/ObjectFile/ELF/TestObjectFileELF.cpp
    M lldb/unittests/Target/CMakeLists.txt
    A lldb/unittests/Target/ReExportedSymbolTest.cpp

  Log Message:
  -----------
  Add unit tests for ELF filter-library symbol handling.

* ObjectFileELFTest.FilterLibraryPlaceholderSymbols: a yaml2obj ELF
  filter library with two DT_AUXILIARY entries checks that
  GetReExportedLibraries() returns the filtees in dynamic-section
  order, that zero-sized exported functions become re-exported symbols
  recording the first filtee and the unversioned name (@VERSION suffix
  stripped), and that nonzero-sized and local definitions are left
  alone.

* ReExportedSymbolTest.ResolveThroughFilteesInOrder: a target holding
  a filter library and two filtee modules checks that
  Symbol::ResolveReExportedSymbol finds a definition in the first
  filtee via the library recorded on the symbol, continues to the next
  filtee in declaration order for symbols the first filtee lacks, and
  that without the containing module only the recorded library is
  searched.

Co-Authored-By: Claude Fable 5 <noreply at anthropic.com>


Compare: https://github.com/llvm/llvm-project/compare/53557d331b0d...31ae997374d4

To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list