Skip to content

Commit f9da0a7

Browse files
MaskRaytstellar
authored andcommitted
[Driver] Support -fsanitize=shadow-call-stack and cfi-icall on aarch64_be
D80647 did not fix https://bugs.llvm.org/show_bug.cgi?id=46076 This is the fix. (cherry picked from commit b9c6871)
1 parent 1a25347 commit f9da0a7

File tree

2 files changed

+6
-8
lines changed

2 files changed

+6
-8
lines changed

clang/lib/Driver/ToolChain.cpp

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -954,15 +954,12 @@ SanitizerMask ToolChain::getSupportedSanitizers() const {
954954
if (getTriple().getArch() == llvm::Triple::x86 ||
955955
getTriple().getArch() == llvm::Triple::x86_64 ||
956956
getTriple().getArch() == llvm::Triple::arm ||
957-
getTriple().getArch() == llvm::Triple::aarch64 ||
958957
getTriple().getArch() == llvm::Triple::wasm32 ||
959-
getTriple().getArch() == llvm::Triple::wasm64)
958+
getTriple().getArch() == llvm::Triple::wasm64 || getTriple().isAArch64())
960959
Res |= SanitizerKind::CFIICall;
961-
if (getTriple().getArch() == llvm::Triple::x86_64 ||
962-
getTriple().getArch() == llvm::Triple::aarch64)
960+
if (getTriple().getArch() == llvm::Triple::x86_64 || getTriple().isAArch64())
963961
Res |= SanitizerKind::ShadowCallStack;
964-
if (getTriple().getArch() == llvm::Triple::aarch64 ||
965-
getTriple().getArch() == llvm::Triple::aarch64_be)
962+
if (getTriple().isAArch64())
966963
Res |= SanitizerKind::MemTag;
967964
return Res;
968965
}

clang/test/Driver/fsanitize.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -577,6 +577,7 @@
577577
// RUN: %clang -target aarch64-linux-gnu -fvisibility=hidden -fsanitize=cfi -flto -c %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-CFI
578578
// RUN: %clang -target arm-linux-android -fvisibility=hidden -fsanitize=cfi -flto -c %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-CFI
579579
// RUN: %clang -target aarch64-linux-android -fvisibility=hidden -fsanitize=cfi -flto -c %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-CFI
580+
// RUN: %clang -target aarch64_be -fvisibility=hidden -fsanitize=cfi -flto -c %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-CFI
580581
// CHECK-CFI: -emit-llvm-bc{{.*}}-fsanitize=cfi-derived-cast,cfi-icall,cfi-mfcall,cfi-unrelated-cast,cfi-nvcall,cfi-vcall
581582
// CHECK-CFI-NOMFCALL: -emit-llvm-bc{{.*}}-fsanitize=cfi-derived-cast,cfi-icall,cfi-unrelated-cast,cfi-nvcall,cfi-vcall
582583
// CHECK-CFI-DCAST: -emit-llvm-bc{{.*}}-fsanitize=cfi-derived-cast
@@ -809,8 +810,8 @@
809810
// CHECK-SCS-MINIMAL: "-fsanitize=shadow-call-stack"
810811
// CHECK-SCS-MINIMAL: "-fsanitize-minimal-runtime"
811812

812-
// RUN: %clang -target aarch64 -fsanitize=shadow-call-stack %s -### 2>&1 | FileCheck %s --check-prefix=AARCH64-SCS
813-
// RUN: %clang -target aarch64_be -fsanitize=shadow-call-stack %s -### 2>&1 | FileCheck %s --check-prefix=AARCH64-SCS
813+
// RUN: %clang -target aarch64 -fsanitize=shadow-call-stack -ffixed-x18 %s -### 2>&1 | FileCheck %s --check-prefix=AARCH64-SCS
814+
// RUN: %clang -target aarch64_be -fsanitize=shadow-call-stack -ffixed-x18 %s -### 2>&1 | FileCheck %s --check-prefix=AARCH64-SCS
814815
// AARCH64-SCS: "-fsanitize=shadow-call-stack"
815816

816817
// RUN: %clang -target aarch64-linux-gnu -fsanitize=scudo %s -### 2>&1 | FileCheck %s --check-prefix=CHECK-SCUDO

0 commit comments

Comments
 (0)