[Lldb-commits] [lldb] [LLDB] Serve unknown type symbols through `qSymbol` (PR #200134)
David Spickett via lldb-commits
lldb-commits at lists.llvm.org
Tue Jun 2 06:24:32 PDT 2026
================
@@ -4156,41 +4158,55 @@ void GDBRemoteCommunicationClient::ServeSymbolLookups(
if (symbol_load_addr != LLDB_INVALID_ADDRESS)
break;
if (sc.symbol) {
- switch (sc.symbol->GetType()) {
- case eSymbolTypeInvalid:
- case eSymbolTypeAbsolute:
- case eSymbolTypeUndefined:
- case eSymbolTypeSourceFile:
- case eSymbolTypeHeaderFile:
- case eSymbolTypeObjectFile:
- case eSymbolTypeCommonBlock:
- case eSymbolTypeBlock:
- case eSymbolTypeLocal:
- case eSymbolTypeParam:
- case eSymbolTypeVariable:
- case eSymbolTypeVariableType:
- case eSymbolTypeLineEntry:
- case eSymbolTypeLineHeader:
- case eSymbolTypeScopeBegin:
- case eSymbolTypeScopeEnd:
- case eSymbolTypeAdditional:
- case eSymbolTypeCompiler:
- case eSymbolTypeInstrumentation:
- case eSymbolTypeTrampoline:
- break;
-
- case eSymbolTypeCode:
- case eSymbolTypeResolver:
- case eSymbolTypeData:
- case eSymbolTypeRuntime:
- case eSymbolTypeException:
- case eSymbolTypeObjCClass:
- case eSymbolTypeObjCMetaClass:
- case eSymbolTypeObjCIVar:
- case eSymbolTypeReExported:
+ if (sc.module_sp->GetArchitecture()
+ .GetTriple()
+ .getObjectFormat() ==
+ llvm::Triple::ObjectFormatType::MachO) {
+ switch (sc.symbol->GetType()) {
+ case eSymbolTypeInvalid:
+ case eSymbolTypeAbsolute:
+ case eSymbolTypeUndefined:
+ case eSymbolTypeSourceFile:
+ case eSymbolTypeHeaderFile:
+ case eSymbolTypeObjectFile:
+ case eSymbolTypeCommonBlock:
+ case eSymbolTypeBlock:
+ case eSymbolTypeLocal:
+ case eSymbolTypeParam:
+ case eSymbolTypeVariable:
+ case eSymbolTypeVariableType:
+ case eSymbolTypeLineEntry:
+ case eSymbolTypeLineHeader:
+ case eSymbolTypeScopeBegin:
+ case eSymbolTypeScopeEnd:
+ case eSymbolTypeAdditional:
+ case eSymbolTypeCompiler:
+ case eSymbolTypeInstrumentation:
+ case eSymbolTypeTrampoline:
+ break;
----------------
DavidSpickett wrote:
An alternative that has fewer extra indents is to keep the original code and for the first set of cases, end it with:
```
case eSymbolTypeTrampoline:
if (we are not macho/darwin/whatever && symbol_load_addr == LLDB_INVALID_ADDRESS) {
symbol_load_addr = sc.symbol->GetRawValue();
}
break;
```
Then the switch case can be read as:
* For [these cases] we return the raw value if we're not MachO
* For [the other cases] we get the load address of the symbol regardless of the target
https://github.com/llvm/llvm-project/pull/200134
More information about the lldb-commits
mailing list