1 // Check the -mharden-sls= option, which has a required argument to select 2 // scope. 3 // RUN: %clang -target aarch64 -c %s -### 2>&1 | \ 4 // RUN: FileCheck %s --check-prefix=RETBR-OFF --check-prefix=BLR-OFF --check-prefix=NOCOMDAT-OFF 5 // RUN: %clang -target armv7a--none-eabi -c %s -### 2>&1 | \ 6 // RUN: FileCheck %s --check-prefix=RETBR-OFF --check-prefix=BLR-OFF --check-prefix=NOCOMDAT-OFF 7 8 // RUN: %clang -target aarch64 -c %s -### -mharden-sls=none 2>&1 | \ 9 // RUN: FileCheck %s --check-prefix=RETBR-OFF --check-prefix=BLR-OFF --check-prefix=NOCOMDAT-OFF 10 // RUN: %clang -target armv7a--none-eabi -c %s -### -mharden-sls=none 2>&1 | \ 11 // RUN: FileCheck %s --check-prefix=RETBR-OFF --check-prefix=BLR-OFF --check-prefix=NOCOMDAT-OFF 12 13 // RUN: %clang -target aarch64 -c %s -### -mharden-sls=retbr 2>&1 | \ 14 // RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-OFF --check-prefix=NOCOMDAT-OFF 15 // RUN: %clang -target armv7a--none-eabi -c %s -### -mharden-sls=retbr 2>&1 | \ 16 // RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-OFF --check-prefix=NOCOMDAT-OFF 17 18 // RUN: %clang -target aarch64 -c %s -### -mharden-sls=blr 2>&1 | \ 19 // RUN: FileCheck %s --check-prefix=RETBR-OFF --check-prefix=BLR-ON --check-prefix=NOCOMDAT-OFF 20 // RUN: %clang -target armv7a--none-eabi -c %s -### -mharden-sls=blr 2>&1 | \ 21 // RUN: FileCheck %s --check-prefix=RETBR-OFF --check-prefix=BLR-ON --check-prefix=NOCOMDAT-OFF 22 23 // RUN: %clang -target aarch64 -c %s -### -mharden-sls=blr -mharden-sls=none 2>&1 | \ 24 // RUN: FileCheck %s --check-prefix=RETBR-OFF --check-prefix=BLR-OFF --check-prefix=NOCOMDAT-OFF 25 // RUN: %clang -target armv7a--none-eabi -c %s -### -mharden-sls=blr -mharden-sls=none 2>&1 | \ 26 // RUN: FileCheck %s --check-prefix=RETBR-OFF --check-prefix=BLR-OFF --check-prefix=NOCOMDAT-OFF 27 28 // RUN: %clang -target aarch64 -c %s -### -mharden-sls=blr -mharden-sls=retbr 2>&1 | \ 29 // RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-OFF --check-prefix=NOCOMDAT-OFF 30 // RUN: %clang -target armv7a--none-eabi -c %s -### -mharden-sls=blr -mharden-sls=retbr 2>&1 | \ 31 // RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-OFF --check-prefix=NOCOMDAT-OFF 32 33 // RUN: %clang -target aarch64 -c %s -### -mharden-sls=retbr,blr 2>&1 | \ 34 // RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-ON --check-prefix=NOCOMDAT-OFF 35 // RUN: %clang -target armv7a--none-eabi -c %s -### -mharden-sls=retbr,blr 2>&1 | \ 36 // RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-ON --check-prefix=NOCOMDAT-OFF 37 38 // RUN: %clang -target aarch64 -c %s -### -mharden-sls=all 2>&1 | \ 39 // RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-ON --check-prefix=NOCOMDAT-OFF 40 // RUN: %clang -target armv7a--none-eabi -c %s -### -mharden-sls=all 2>&1 | \ 41 // RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-ON --check-prefix=NOCOMDAT-OFF 42 43 // RUN: %clang -target aarch64 -c %s -### -mharden-sls=retbr,blr,retbr 2>&1 | \ 44 // RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-ON --check-prefix=NOCOMDAT-OFF 45 // RUN: %clang -target armv7a--none-eabi -c %s -### -mharden-sls=retbr,blr,retbr 2>&1 | \ 46 // RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-ON --check-prefix=NOCOMDAT-OFF 47 48 // RUN: not %clang --target=aarch64 -c %s -### -mharden-sls=retbr,blr,r 2>&1 | \ 49 // RUN: FileCheck %s --check-prefix=BAD-SLS-SPEC 50 // RUN: not %clang --target=armv7a--none-eabi -c %s -### -mharden-sls=retbr,blr,r 2>&1 | \ 51 // RUN: FileCheck %s --check-prefix=BAD-SLS-SPEC 52 53 // RUN: not %clang --target=aarch64 -c %s -### -mharden-sls=none,blr 2>&1 | \ 54 // RUN: FileCheck %s --check-prefix=BAD-SLS-SPEC 55 // RUN: not %clang --target=armv7a--none-eabi -c %s -### -mharden-sls=none,blr 2>&1 | \ 56 // RUN: FileCheck %s --check-prefix=BAD-SLS-SPEC 57 58 // RUN: not %clang --target=aarch64 -c %s -### -mharden-sls=all,-blr 2>&1 | \ 59 // RUN: FileCheck %s --check-prefix=BAD-SLS-SPEC 60 // RUN: not %clang --target=armv7a--none-eabi -c %s -### -mharden-sls=all,-blr 2>&1 | \ 61 // RUN: FileCheck %s --check-prefix=BAD-SLS-SPEC 62 63 // RUN: %clang -target aarch64 -c %s -### -mharden-sls=retbr,blr,nocomdat 2>&1 | \ 64 // RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-ON --check-prefix=NOCOMDAT 65 // RUN: %clang -target armv7a--none-eabi -c %s -### -mharden-sls=retbr,blr,nocomdat 2>&1 | \ 66 // RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-ON --check-prefix=NOCOMDAT 67 68 // RUN: %clang -target aarch64 -c %s -### -mharden-sls=all,nocomdat 2>&1 | \ 69 // RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-ON --check-prefix=NOCOMDAT 70 // RUN: %clang -target armv7a--none-eabi -c %s -### -mharden-sls=all,nocomdat 2>&1 | \ 71 // RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-ON --check-prefix=NOCOMDAT 72 73 // RUN: %clang -target aarch64 -c %s -### -mharden-sls=retbr,blr,retbr,nocomdat 2>&1 | \ 74 // RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-ON --check-prefix=NOCOMDAT 75 // RUN: %clang -target armv7a--none-eabi -c %s -### -mharden-sls=retbr,blr,retbr,nocomdat 2>&1 | \ 76 // RUN: FileCheck %s --check-prefix=RETBR-ON --check-prefix=BLR-ON --check-prefix=NOCOMDAT 77 78 // RUN: not %clang --target=aarch64 -c %s -### -mharden-sls=retbr,comdat,r 2>&1 | \ 79 // RUN: FileCheck %s --check-prefix=BAD-SLS-SPEC 80 // RUN: not %clang --target=armv7a--none-eabi -c %s -### -mharden-sls=retbr,comdat,r 2>&1 | \ 81 // RUN: FileCheck %s --check-prefix=BAD-SLS-SPEC 82 83 // RUN: not %clang --target=aarch64 -c %s -### -mharden-sls=none,comdat 2>&1 | \ 84 // RUN: FileCheck %s --check-prefix=BAD-SLS-SPEC 85 // RUN: not %clang --target=armv7a--none-eabi -c %s -### -mharden-sls=none,comdat 2>&1 | \ 86 // RUN: FileCheck %s --check-prefix=BAD-SLS-SPEC 87 88 // RUN: not %clang --target=aarch64 -c %s -### -mharden-sls=all,-comdat 2>&1 | \ 89 // RUN: FileCheck %s --check-prefix=BAD-SLS-SPEC 90 // RUN: not %clang --target=armv7a--none-eabi -c %s -### -mharden-sls=all,-comdat 2>&1 | \ 91 // RUN: FileCheck %s --check-prefix=BAD-SLS-SPEC 92 93 // RETBR-OFF-NOT: "harden-sls-retbr" 94 // RETBR-ON: "+harden-sls-retbr" 95 96 // BLR-OFF-NOT: "harden-sls-blr" 97 // BLR-ON: "+harden-sls-blr" 98 99 // NOCOMDAT-OFF-NOT: "harden-sls-nocomdat" 100 // NOCOMDAT: "+harden-sls-nocomdat" 101 102 // BAD-SLS-SPEC: unsupported argument '{{[^']+}}' to option '-mharden-sls=' 103 104 // RUN: not %clang --target=armv6a--none-eabi -c %s -### -mharden-sls=all 2>&1 | \ 105 // RUN: FileCheck %s --check-prefix=SLS-NOT-SUPPORTED 106 107 // RUN: not %clang --target=armv6a--none-eabi -c %s -### -mharden-sls=retbr 2>&1 | \ 108 // RUN: FileCheck %s --check-prefix=SLS-NOT-SUPPORTED 109 110 // RUN: not %clang --target=armv6a--none-eabi -c %s -### -mharden-sls=blr 2>&1 | \ 111 // RUN: FileCheck %s --check-prefix=SLS-NOT-SUPPORTED 112 113 // RUN: not %clang --target=armv7r--none-eabi -c %s -### -mharden-sls=all 2>&1 | \ 114 // RUN: FileCheck %s --check-prefix=SLS-NOT-SUPPORTED 115 116 // RUN: not %clang --target=armv7m--none-eabi -c %s -### -mharden-sls=all 2>&1 | \ 117 // RUN: FileCheck %s --check-prefix=SLS-NOT-SUPPORTED 118 119 // RUN: %clang -target armv6a--none-eabi -c %s -### -mharden-sls=none 2>&1 | \ 120 // RUN: FileCheck %s --check-prefix=SLS-SUPPORTED 121 122 // RUN: %clang -target armv7a-linux-gnueabihf -c %s -### -mharden-sls=all 2>&1 | \ 123 // RUN: FileCheck %s --check-prefix=SLS-SUPPORTED 124 125 // RUN: %clang -target armv8a-linux-gnueabihf -c %s -### -mharden-sls=all 2>&1 | \ 126 // RUN: FileCheck %s --check-prefix=SLS-SUPPORTED 127 128 // SLS-NOT-SUPPORTED: -mharden-sls is only supported on armv7-a or later 129 // SLS-SUPPORTED-NOT: mharden-sls 130 131