llvm-project/lldb/test/Shell/Commands/list-header.test
Raul Tambre 21041c9292
[NFCI][lldb][test] Fix mismatched C/C++ substitutions (#165773)
Most of the cases were where a C++ file was being compiled with the C substitution.
There were a few cases of the opposite though.

LLDB seems to be the only real culprit in the LLVM codebase for these mismatches.
Rest of the LLVM presumably sticks at least language-specific options in the common substitutions
making the mistakes immediately apparent.

I found these by using Clang frontend configuration files containing language-specific options for
both C and C++ (e.g. `-std=c2y` and `-std=c++26`).
2025-10-30 23:18:32 +02:00

62 lines
1.4 KiB
Plaintext

## Does not work on windows (yet?) PDB debug-info likely does something wrong
## with the header files.
# XFAIL: target-windows
## Test that `list header.h:<line>` works correctly when header is available.
##
# RUN: split-file %s %t
# RUN: %clangxx_host -g %t/main_with_inlined.cc %t/foo.cc -o %t/main_with_inlined.out
# RUN: %clangxx_host -g %t/main_no_inlined.cc %t/foo.cc -o %t/main_no_inlined.out
# RUN: %lldb %t/main_with_inlined.out -o "list foo.h:2" -o "exit" 2>&1 \
# RUN: | FileCheck %s --check-prefix=CHECK-INLINED
## Would be nice if this listed the header too - but probably not something
## we want to support right now.
# RUN: echo quit | %lldb %t/main_no_inlined.out -o "list foo.h:2" -o "exit" 2>&1 \
# RUN: | FileCheck %s --check-prefix=CHECK-NO-INLINED
# CHECK-INLINED: 2 extern int* ptr;
# CHECK-INLINED: 3 void f(int x);
# CHECK-INLINED: 4
# CHECK-INLINED: 5 inline void g(int x) {
# CHECK-INLINED: 6 *ptr = x; // should crash here
# CHECK-INLINED: 7 }
# CHECK-NO-INLINED: error: Could not find source file "foo.h".
#--- foo.h
// foo.h
extern int* ptr;
void f(int x);
inline void g(int x) {
*ptr = x; // should crash here
}
#--- foo.cc
#include "foo.h"
int* ptr;
void f(int x) {
*ptr = x;
}
#--- main_with_inlined.cc
#include "foo.h"
int main() {
g(123); // Call the inlined function
return 0;
}
#--- main_no_inlined.cc
#include "foo.h"
int main() {
f(234);
return 0;
}