aboutsummaryrefslogtreecommitdiff
path: root/lldb/test/Shell/Commands/list-header.test
blob: 53c4b786f181055bac18d2963c2f666a0d375230 (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
54
55
56
57
58
59
60
61
## 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: %clang_host -g %t/main_with_inlined.cc %t/foo.cc -o %t/main_with_inlined.out
# RUN: %clang_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;
}