[Lldb-commits] [lldb] [LLDB] Support Auxiliary library in ELF format (PR #208905)

via lldb-commits lldb-commits at lists.llvm.org
Mon Aug 24 16:56:39 PDT 2026


================
@@ -340,14 +340,12 @@ BreakpointResolverName::SearchCallback(SearchFilter &filter,
           break_addr.Slide(prologue_byte_size);
       }
     } else if (sc.symbol) {
-      if (sc.symbol->GetType() == eSymbolTypeReExported) {
-        const Symbol *actual_symbol =
-            sc.symbol->ResolveReExportedSymbol(breakpoint.GetTarget());
-        if (actual_symbol) {
-          is_reexported = true;
-          break_addr = actual_symbol->GetAddress();
-        }
-      } else {
+      const Symbol *actual_symbol = sc.symbol->ResolveReExportedSymbol(
+          breakpoint.GetTarget(), sc.module_sp);
+      if (actual_symbol) {
+        is_reexported = true;
+        break_addr = actual_symbol->GetAddress();
+      } else if (sc.symbol->GetType() != eSymbolTypeReExported) {
----------------
aokblast wrote:

This model doesn't perfectly match the ELF specification. In Mach-O, each ReExportedSymbol has a per-symbol tag, so every symbol knows which filtee it comes from. In ELF, however, it behaves more like a list that defines libraries whose symbols can override the current symbol. If a symbol is found in one of the filtees, rtld uses it.

As a result, there is no way to correctly determine whether a symbol is eSymbolTypeReExported without consulting the resolver each time.

https://github.com/llvm/llvm-project/pull/208905


More information about the lldb-commits mailing list