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