1 // Check that we split debug output properly
2 //
3 // RUN: %clang -target x86_64-unknown-linux-gnu -gsplit-dwarf -c -### %s 2> %t
4 // RUN: FileCheck -check-prefix=CHECK-ACTIONS < %t %s
5 //
6 // CHECK-ACTIONS: objcopy{{.*}}--extract-dwo{{.*}}"split-debug.dwo"
7 // CHECK-ACTIONS: objcopy{{.*}}--strip-dwo{{.*}}"split-debug.o"
8 
9 
10 // RUN: %clang -target x86_64-macosx -gsplit-dwarf -c -### %s 2> %t
11 // RUN: FileCheck -check-prefix=CHECK-NO-ACTIONS < %t %s
12 //
13 // CHECK-NO-ACTIONS-NOT: -split-dwarf
14 
15 
16 // RUN: %clang -target x86_64-unknown-linux-gnu -gsplit-dwarf -o Bad.x -### %s 2> %t
17 // RUN: FileCheck -check-prefix=CHECK-BAD < %t %s
18 //
19 // CHECK-BAD-NOT: "Bad.dwo"
20 
21 // RUN: %clang -target x86_64-unknown-linux-gnu -gsplit-dwarf -c -### %s 2> %t
22 // RUN: FileCheck -check-prefix=CHECK-OPTION < %t %s
23 //
24 // CHECK-OPTION: "-split-dwarf-file" "split-debug.dwo"
25 
26 // RUN: %clang -target x86_64-unknown-linux-gnu -gsplit-dwarf -S -### %s 2> %t
27 // RUN: FileCheck -check-prefix=CHECK-ASM < %t %s
28 //
29 // CHECK-ASM-NOT: objcopy
30 
31 // RUN: %clang -target x86_64-unknown-linux-gnu -no-integrated-as -gsplit-dwarf -c -### %s 2> %t
32 // RUN: FileCheck -check-prefix=CHECK-IAS < %t %s
33 //
34 // CHECK-IAS: objcopy
35 
36 // RUN: %clang -target x86_64-unknown-linux-gnu -gsplit-dwarf -gmlt -fno-split-dwarf-inlining -S -### %s 2> %t
37 // RUN: FileCheck -check-prefix=CHECK-GMLT-WITH-SPLIT < %t %s
38 //
39 // CHECK-GMLT-WITH-SPLIT: "-split-dwarf=Enable"
40 // CHECK-GMLT-WITH-SPLIT: "-debug-info-kind=line-tables-only"
41 // CHECK-GMLT-WITH-SPLIT: "-split-dwarf-file"
42 
43 // RUN: %clang -target x86_64-unknown-linux-gnu -gmlt -gsplit-dwarf -fno-split-dwarf-inlining -S -### %s 2> %t
44 // RUN: FileCheck -check-prefix=CHECK-SPLIT-WITH-GMLT < %t %s
45 //
46 // CHECK-SPLIT-WITH-GMLT: "-split-dwarf=Enable"
47 // CHECK-SPLIT-WITH-GMLT: "-debug-info-kind=line-tables-only"
48 // CHECK-SPLIT-WITH-GMLT: "-split-dwarf-file"
49 
50 // RUN: %clang -target x86_64-unknown-linux-gnu -gsplit-dwarf -fno-split-dwarf-inlining -S -### %s 2> %t
51 // RUN: FileCheck -check-prefix=CHECK-SPLIT-WITH-NOINL < %t %s
52 //
53 // CHECK-SPLIT-WITH-NOINL: "-split-dwarf=Enable"
54 // CHECK-SPLIT-WITH-NOINL: "-debug-info-kind=limited"
55 // CHECK-SPLIT-WITH-NOINL: "-split-dwarf-file"
56 
57 // RUN: %clang -target x86_64-unknown-linux-gnu -gsplit-dwarf -gmlt -S -### %s 2> %t
58 // RUN: FileCheck -check-prefix=CHECK-GMLT-OVER-SPLIT < %t %s
59 //
60 // CHECK-GMLT-OVER-SPLIT-NOT: "-split-dwarf=Enable"
61 // CHECK-GMLT-OVER-SPLIT: "-debug-info-kind=line-tables-only"
62 // CHECK-GMLT-OVER-SPLIT-NOT: "-split-dwarf-file"
63 
64 // RUN: %clang -target x86_64-unknown-linux-gnu -gmlt -gsplit-dwarf -S -### %s 2> %t
65 // RUN: FileCheck -check-prefix=CHECK-SPLIT-OVER-GMLT < %t %s
66 //
67 // CHECK-SPLIT-OVER-GMLT: "-split-dwarf=Enable" "-debug-info-kind=limited"
68 // CHECK-SPLIT-OVER-GMLT: "-split-dwarf-file"
69 
70 // RUN: %clang -target x86_64-unknown-linux-gnu -gsplit-dwarf -g0 -fno-split-dwarf-inlining -S -### %s 2> %t
71 // RUN: FileCheck -check-prefix=CHECK-G0-OVER-SPLIT < %t %s
72 //
73 // CHECK-G0-OVER-SPLIT-NOT: "-split-dwarf=Enable"
74 // CHECK-G0-OVER-SPLIT-NOT: "-debug-info-kind
75 // CHECK-G0-OVER-SPLIT-NOT: "-split-dwarf-file"
76 
77 // RUN: %clang -target x86_64-unknown-linux-gnu -gsplit-dwarf -g0 -S -### %s 2> %t
78 // RUN: FileCheck -check-prefix=CHECK-G0-OVER-SPLIT < %t %s
79 //
80 // CHECK-G0-OVER-SPLIT-NOT: "-split-dwarf=Enable"
81 // CHECK-G0-OVER-SPLIT-NOT: "-debug-info-kind
82 // CHECK-G0-OVER-SPLIT-NOT: "-split-dwarf-file"
83 
84 // RUN: %clang -target x86_64-unknown-linux-gnu -g0 -gsplit-dwarf -S -### %s 2> %t
85 // RUN: FileCheck -check-prefix=CHECK-SPLIT-OVER-G0 < %t %s
86 //
87 // CHECK-SPLIT-OVER-G0: "-split-dwarf=Enable" "-debug-info-kind=limited"
88 // CHECK-SPLIT-OVER-G0: "-split-dwarf-file"
89