xref: /aosp_15_r20/external/clang/test/Driver/debug-options.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // Check to make sure clang is somewhat picky about -g options.
2*67e74705SXin Li // rdar://10383444
3*67e74705SXin Li 
4*67e74705SXin Li // RUN: %clang -### -c -g %s -target x86_64-linux-gnu 2>&1 \
5*67e74705SXin Li // RUN:             | FileCheck -check-prefix=G -check-prefix=G_GDB %s
6*67e74705SXin Li // RUN: %clang -### -c -g2 %s -target x86_64-linux-gnu 2>&1 \
7*67e74705SXin Li // RUN:             | FileCheck -check-prefix=G %s
8*67e74705SXin Li // RUN: %clang -### -c -g3 %s -target x86_64-linux-gnu 2>&1 \
9*67e74705SXin Li // RUN:             | FileCheck -check-prefix=G %s
10*67e74705SXin Li // RUN: %clang -### -c -ggdb %s -target x86_64-linux-gnu 2>&1 \
11*67e74705SXin Li // RUN:             | FileCheck -check-prefix=G -check-prefix=G_GDB %s
12*67e74705SXin Li // RUN: %clang -### -c -ggdb1 %s -target x86_64-linux-gnu 2>&1 \
13*67e74705SXin Li // RUN:             | FileCheck -check-prefix=GLTO_ONLY -check-prefix=G_GDB %s
14*67e74705SXin Li // RUN: %clang -### -c -ggdb3 %s -target x86_64-linux-gnu 2>&1 \
15*67e74705SXin Li // RUN:             | FileCheck -check-prefix=G %s
16*67e74705SXin Li // RUN: %clang -### -c -glldb %s -target x86_64-linux-gnu 2>&1 \
17*67e74705SXin Li // RUN:             | FileCheck -check-prefix=G -check-prefix=G_LLDB %s
18*67e74705SXin Li // RUN: %clang -### -c -gsce %s -target x86_64-linux-gnu 2>&1 \
19*67e74705SXin Li // RUN:             | FileCheck -check-prefix=G -check-prefix=G_SCE %s
20*67e74705SXin Li 
21*67e74705SXin Li // RUN: %clang -### -c -g %s -target x86_64-apple-darwin 2>&1 \
22*67e74705SXin Li // RUN:             | FileCheck -check-prefix=G_DARWIN -check-prefix=G_LLDB %s
23*67e74705SXin Li // RUN: %clang -### -c -g2 %s -target x86_64-apple-darwin 2>&1 \
24*67e74705SXin Li // RUN:             | FileCheck -check-prefix=G_DARWIN %s
25*67e74705SXin Li // RUN: %clang -### -c -g3 %s -target x86_64-apple-darwin 2>&1 \
26*67e74705SXin Li // RUN:             | FileCheck -check-prefix=G_DARWIN %s
27*67e74705SXin Li // RUN: %clang -### -c -ggdb %s -target x86_64-apple-darwin 2>&1 \
28*67e74705SXin Li // RUN:             | FileCheck -check-prefix=G_DARWIN -check-prefix=G_GDB %s
29*67e74705SXin Li // RUN: %clang -### -c -ggdb1 %s -target x86_64-apple-darwin 2>&1 \
30*67e74705SXin Li // RUN:             | FileCheck -check-prefix=GLTO_ONLY_DWARF2 %s
31*67e74705SXin Li // RUN: %clang -### -c -ggdb3 %s -target x86_64-apple-darwin 2>&1 \
32*67e74705SXin Li // RUN:             | FileCheck -check-prefix=G_DARWIN %s
33*67e74705SXin Li 
34*67e74705SXin Li // RUN: %clang -### -c -g %s -target x86_64-pc-freebsd10.0 2>&1 \
35*67e74705SXin Li // RUN:             | FileCheck -check-prefix=G_GDB %s
36*67e74705SXin Li 
37*67e74705SXin Li // On the PS4, -g defaults to -gno-column-info, and we always generate the
38*67e74705SXin Li // arange section.
39*67e74705SXin Li // RUN: %clang -### -c %s -target x86_64-scei-ps4 2>&1 \
40*67e74705SXin Li // RUN:             | FileCheck -check-prefix=NOG_PS4 %s
41*67e74705SXin Li // RUN: %clang -### -c %s -g -target x86_64-scei-ps4 2>&1 \
42*67e74705SXin Li // RUN:             | FileCheck -check-prefix=G_PS4 %s
43*67e74705SXin Li // RUN: %clang -### -c %s -g -target x86_64-scei-ps4 2>&1 \
44*67e74705SXin Li // RUN:             | FileCheck -check-prefix=G_SCE %s
45*67e74705SXin Li // RUN: %clang -### -c %s -g -target x86_64-scei-ps4 2>&1 \
46*67e74705SXin Li // RUN:             | FileCheck -check-prefix=NOCI %s
47*67e74705SXin Li // RUN: %clang -### -c %s -g -gcolumn-info -target x86_64-scei-ps4 2>&1 \
48*67e74705SXin Li // RUN:             | FileCheck -check-prefix=CI %s
49*67e74705SXin Li 
50*67e74705SXin Li // RUN: %clang -### -c -gdwarf-2 %s 2>&1 | FileCheck -check-prefix=G_D2 %s
51*67e74705SXin Li //
52*67e74705SXin Li // RUN: %clang -### -c -gfoo %s 2>&1 | FileCheck -check-prefix=G_NO %s
53*67e74705SXin Li // RUN: %clang -### -c -g -g0 %s 2>&1 | FileCheck -check-prefix=G_NO %s
54*67e74705SXin Li // RUN: %clang -### -c -ggdb0 %s 2>&1 | FileCheck -check-prefix=G_NO %s
55*67e74705SXin Li // RUN: %clang -### -c -glldb -g0 %s 2>&1 | FileCheck -check-prefix=G_NO %s
56*67e74705SXin Li // RUN: %clang -### -c -glldb -g1 %s 2>&1 \
57*67e74705SXin Li // RUN:             | FileCheck -check-prefix=GLTO_ONLY -check-prefix=G_LLDB %s
58*67e74705SXin Li //
59*67e74705SXin Li // PS4 defaults to sce; -ggdb0 changes tuning but turns off debug info,
60*67e74705SXin Li // then -g turns it back on without affecting tuning.
61*67e74705SXin Li // RUN: %clang -### -c -ggdb0 -g -target x86_64-scei-ps4 %s 2>&1 \
62*67e74705SXin Li // RUN:             | FileCheck -check-prefix=G -check-prefix=G_GDB %s
63*67e74705SXin Li //
64*67e74705SXin Li // RUN: %clang -### -c -g1 %s 2>&1 \
65*67e74705SXin Li // RUN:             | FileCheck -check-prefix=GLTO_ONLY %s
66*67e74705SXin Li // RUN: %clang -### -c -gmlt %s 2>&1 \
67*67e74705SXin Li // RUN:             | FileCheck -check-prefix=GLTO_ONLY %s
68*67e74705SXin Li // RUN: %clang -### -c -gline-tables-only %s 2>&1 \
69*67e74705SXin Li // RUN:             | FileCheck -check-prefix=GLTO_ONLY %s
70*67e74705SXin Li // RUN: %clang -### -c -gline-tables-only %s -target x86_64-apple-darwin 2>&1 \
71*67e74705SXin Li // RUN:             | FileCheck -check-prefix=GLTO_ONLY_DWARF2 %s
72*67e74705SXin Li // RUN: %clang -### -c -gline-tables-only %s -target i686-pc-openbsd 2>&1 \
73*67e74705SXin Li // RUN:             | FileCheck -check-prefix=GLTO_ONLY_DWARF2 %s
74*67e74705SXin Li // RUN: %clang -### -c -gline-tables-only %s -target x86_64-pc-freebsd10.0 2>&1 \
75*67e74705SXin Li // RUN:             | FileCheck -check-prefix=GLTO_ONLY_DWARF2 %s
76*67e74705SXin Li // RUN: %clang -### -c -gline-tables-only -g %s -target x86_64-linux-gnu 2>&1 \
77*67e74705SXin Li // RUN:             | FileCheck -check-prefix=G_ONLY %s
78*67e74705SXin Li // RUN: %clang -### -c -gline-tables-only -g %s -target x86_64-apple-darwin 2>&1 \
79*67e74705SXin Li // RUN:             | FileCheck -check-prefix=G_ONLY_DWARF2 %s
80*67e74705SXin Li // RUN: %clang -### -c -gline-tables-only -g %s -target i686-pc-openbsd 2>&1 \
81*67e74705SXin Li // RUN:             | FileCheck -check-prefix=G_ONLY_DWARF2 %s
82*67e74705SXin Li // RUN: %clang -### -c -gline-tables-only -g %s -target x86_64-pc-freebsd10.0 2>&1 \
83*67e74705SXin Li // RUN:             | FileCheck -check-prefix=G_ONLY_DWARF2 %s
84*67e74705SXin Li // RUN: %clang -### -c -gline-tables-only -g %s -target i386-pc-solaris 2>&1 \
85*67e74705SXin Li // RUN:             | FileCheck -check-prefix=G_ONLY_DWARF2 %s
86*67e74705SXin Li // RUN: %clang -### -c -gline-tables-only -g0 %s 2>&1 \
87*67e74705SXin Li // RUN:             | FileCheck -check-prefix=GLTO_NO %s
88*67e74705SXin Li //
89*67e74705SXin Li // RUN: %clang -### -c -grecord-gcc-switches -gno-record-gcc-switches \
90*67e74705SXin Li // RUN:        -gstrict-dwarf -gno-strict-dwarf %s 2>&1 \
91*67e74705SXin Li // RUN:        | FileCheck -check-prefix=GIGNORE %s
92*67e74705SXin Li //
93*67e74705SXin Li // RUN: %clang -### -c -ggnu-pubnames %s 2>&1 | FileCheck -check-prefix=GOPT %s
94*67e74705SXin Li //
95*67e74705SXin Li // RUN: %clang -### -c -gdwarf-aranges %s 2>&1 | FileCheck -check-prefix=GARANGE %s
96*67e74705SXin Li //
97*67e74705SXin Li // RUN: %clang -### -fdebug-types-section %s 2>&1 \
98*67e74705SXin Li // RUN:        | FileCheck -check-prefix=FDTS %s
99*67e74705SXin Li //
100*67e74705SXin Li // RUN: %clang -### -fdebug-types-section -fno-debug-types-section %s 2>&1 \
101*67e74705SXin Li // RUN:        | FileCheck -check-prefix=NOFDTS %s
102*67e74705SXin Li //
103*67e74705SXin Li // RUN: %clang -### -g -gno-column-info %s 2>&1 \
104*67e74705SXin Li // RUN:        | FileCheck -check-prefix=NOCI %s
105*67e74705SXin Li //
106*67e74705SXin Li // RUN: %clang -### -g -target x86_64-unknown-unknown %s 2>&1 \
107*67e74705SXin Li //             | FileCheck -check-prefix=CI %s
108*67e74705SXin Li //
109*67e74705SXin Li // RUN: %clang -### -gmodules %s 2>&1 \
110*67e74705SXin Li // RUN:        | FileCheck -check-prefix=GEXTREFS %s
111*67e74705SXin Li //
112*67e74705SXin Li // G: "-cc1"
113*67e74705SXin Li // G: "-debug-info-kind=limited"
114*67e74705SXin Li //
115*67e74705SXin Li // G_DARWIN: "-cc1"
116*67e74705SXin Li // G_DARWIN: "-dwarf-version=2"
117*67e74705SXin Li //
118*67e74705SXin Li // NOG_PS4: "-cc1"
119*67e74705SXin Li // NOG_PS4-NOT "-dwarf-version=
120*67e74705SXin Li // NOG_PS4: "-generate-arange-section"
121*67e74705SXin Li // NOG_PS4-NOT: "-dwarf-version=
122*67e74705SXin Li //
123*67e74705SXin Li // G_PS4: "-cc1"
124*67e74705SXin Li // G_PS4: "-dwarf-version=
125*67e74705SXin Li // G_PS4: "-generate-arange-section"
126*67e74705SXin Li //
127*67e74705SXin Li // G_D2: "-cc1"
128*67e74705SXin Li // G_D2: "-dwarf-version=2"
129*67e74705SXin Li //
130*67e74705SXin Li // G_NO: "-cc1"
131*67e74705SXin Li // G_NO-NOT: -debug-info-kind=
132*67e74705SXin Li //
133*67e74705SXin Li // GLTO_ONLY: "-cc1"
134*67e74705SXin Li // GLTO_ONLY: "-debug-info-kind=line-tables-only"
135*67e74705SXin Li //
136*67e74705SXin Li // GLTO_ONLY_DWARF2: "-cc1"
137*67e74705SXin Li // GLTO_ONLY_DWARF2: "-debug-info-kind=line-tables-only"
138*67e74705SXin Li // GLTO_ONLY_DWARF2: "-dwarf-version=2"
139*67e74705SXin Li //
140*67e74705SXin Li // G_ONLY: "-cc1"
141*67e74705SXin Li // G_ONLY: "-debug-info-kind=limited"
142*67e74705SXin Li //
143*67e74705SXin Li // G_GDB:  "-debugger-tuning=gdb"
144*67e74705SXin Li // G_LLDB: "-debugger-tuning=lldb"
145*67e74705SXin Li // G_SCE:  "-debugger-tuning=sce"
146*67e74705SXin Li //
147*67e74705SXin Li // These tests assert that "-gline-tables-only" "-g" uses the latter,
148*67e74705SXin Li // but otherwise not caring about the DebugInfoKind.
149*67e74705SXin Li // G_ONLY_DWARF2: "-cc1"
150*67e74705SXin Li // G_ONLY_DWARF2: "-debug-info-kind={{standalone|limited}}"
151*67e74705SXin Li // G_ONLY_DWARF2: "-dwarf-version=2"
152*67e74705SXin Li //
153*67e74705SXin Li // This tests asserts that "-gline-tables-only" "-g0" disables debug info.
154*67e74705SXin Li // GLTO_NO: "-cc1"
155*67e74705SXin Li // GLTO_NO-NOT: -debug-info-kind=
156*67e74705SXin Li //
157*67e74705SXin Li // GIGNORE-NOT: "argument unused during compilation"
158*67e74705SXin Li //
159*67e74705SXin Li // GOPT: -generate-gnu-dwarf-pub-sections
160*67e74705SXin Li //
161*67e74705SXin Li // GARANGE: -generate-arange-section
162*67e74705SXin Li //
163*67e74705SXin Li // FDTS: "-backend-option" "-generate-type-units"
164*67e74705SXin Li //
165*67e74705SXin Li // NOFDTS-NOT: "-backend-option" "-generate-type-units"
166*67e74705SXin Li //
167*67e74705SXin Li // CI: "-dwarf-column-info"
168*67e74705SXin Li //
169*67e74705SXin Li // NOCI-NOT: "-dwarf-column-info"
170*67e74705SXin Li //
171*67e74705SXin Li // GEXTREFS: "-dwarf-ext-refs" "-fmodule-format=obj" "-debug-info-kind={{standalone|limited}}"
172*67e74705SXin Li 
173*67e74705SXin Li // RUN: not %clang -cc1 -debug-info-kind=watkind 2>&1 | FileCheck -check-prefix=BADSTRING1 %s
174*67e74705SXin Li // BADSTRING1: error: invalid value 'watkind' in '-debug-info-kind=watkind'
175*67e74705SXin Li // RUN: not %clang -cc1 -debugger-tuning=gmodal 2>&1 | FileCheck -check-prefix=BADSTRING2 %s
176*67e74705SXin Li // BADSTRING2: error: invalid value 'gmodal' in '-debugger-tuning=gmodal'
177