nerix bdb9283eec
[LLDB][NativePDB] Find global variables in namespaces (#156736)
To find global variables, `SymbolFileNativePDB` used to search the
globals stream for the name passed to `FindGlobalVariables`. However,
the symbols in the globals stream contain the fully qualified name and
`FindGlobalVariables` only gets the basename. The approach here is
similar to the one for types and functions.

As we already search the globals stream for functions, we can cache the
basenames for global variables there as well.

This makes the `expressions.test` from the DIA PDB plugin pass with the
native one (#114906).
2025-09-04 19:30:34 +02:00

37 lines
1.5 KiB
Plaintext

REQUIRES: target-windows, msvc
RUN: %build --compiler=msvc --nodefaultlib --output=%t.exe %S/Inputs/ExpressionsTest.cpp
RUN: env LLDB_USE_NATIVE_PDB_READER=0 not %lldb -b -s %S/Inputs/ExpressionsTest0.script -s %S/Inputs/ExpressionsTest1.script -s %S/Inputs/ExpressionsTest2.script -- %t.exe 2>&1 | FileCheck %s
RUN: env LLDB_USE_NATIVE_PDB_READER=1 not %lldb -b -s %S/Inputs/ExpressionsTest0.script -s %S/Inputs/ExpressionsTest1.script -s %S/Inputs/ExpressionsTest2.script -- %t.exe 2>&1 | FileCheck %s
// Check the variable value through `expression`
CHECK: (lldb) expression result
CHECK: (char) $0 = '\x1c'
// Call the function just like in the code
CHECK: (lldb) expression N0::N1::sum(N0::N1::buf1, sizeof(N0::N1::buf1))
CHECK: (char) $1 = '\x1c'
// Try the relaxed namespaces search
CHECK: (lldb) expression N1::sum(N1::buf1, sizeof(N1::buf1))
CHECK: (char) $2 = '\x1c'
// Try the relaxed variables and functions search
CHECK: (lldb) expression sum(buf1, sizeof(buf1))
CHECK: (char) $3 = '\x1c'
// Make a crash during expression calculation
CHECK: (lldb) expression sum(buf1, 1000000000)
CHECK: The process has been returned to the state before expression evaluation.
// Make one more crash
CHECK: (lldb) expression sum(buf0, 1)
CHECK: The process has been returned to the state before expression evaluation.
// Check if the process state was restored succesfully
CHECK: (lldb) expression sum(buf0, result - 28)
CHECK: (char) $4 = '\0'
// Call the function with arbitrary parameters
CHECK: (lldb) expression sum(buf1 + 3, 3)
CHECK: (char) $5 = '\f'