aboutsummaryrefslogtreecommitdiff
path: root/lldb/test/Shell/Settings/TestCxxFrameFormatMixedLanguages.test
blob: bafd36f5ae1774cf6efee1ae449b6f8fff742513 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# UNSUPPORTED: system-windows

# Test the plugin.cplusplus.display.function-name-format setting
# when interoperating multiple languages.

# RUN: split-file %s %t
# RUN: %clangxx_host -x c -c -g %t/lib.c -o %t.clib.o
# RUN: %clangxx_host -c -g %t/lib.cpp -o %t.cxxlib.o
# RUN: %clangxx_host %t/main.m %t.cxxlib.o %t.clib.o -o %t.out
# RUN: %lldb -x -b -s %t/commands.input %t.out -o exit 2>&1 | FileCheck %s

#--- lib.c

void foo();

void func() {
  foo();
}

#--- lib.cpp

namespace ns {
struct Foo {
    void method() {}
};
}

extern "C" {
void foo() {
  ns::Foo{}.method();
}
}

#--- main.m

void func();

int main() {
  func();
}

#--- commands.input
settings set plugin.cplusplus.display.function-name-format "this affects C++ only"
settings set -f frame-format "custom-frame '${function.name-with-args}'\n"
break set -n method

run
bt

# CHECK: custom-frame 'this affects C++ only' 
# CHECK: custom-frame 'this affects C++ only' 
# CHECK: custom-frame 'func' 
# CHECK: custom-frame 'main'