Enna1 created this revision. Herald added subscribers: yaneury, supersymetrie, Chia-hungDuan, cryptoad. Herald added a project: All. Enna1 updated this revision to Diff 509252. Enna1 added a comment. Enna1 edited the summary of this revision. Enna1 added reviewers: eugenis, alekseyshl, pcc, vitalybuka. Enna1 added a subscriber: MTC. Enna1 published this revision for review. Herald added subscribers: cfe-commits, MaskRay. Herald added a project: clang.
update Enna1 added a comment. Under my test on aarch64 linux, all hwasan tests passed without PIE. IIUC, only global variables in hwasan are affected by PIE. Without PIE, a special instruction sequence assembly will be to emitted to add the tag to the global variable address, see https://reviews.llvm.org/D120305 . I'm not sure if hwasan linux x86-64 is different from linux aarch64 and have a special requirment for PIE. Also note that since https://reviews.llvm.org/D120305, CLANG_DEFAULT_PIE_ON_LINUX was default on. The requirement for PIE of hwasan was introduced in https://reviews.llvm.org/D44745, this patch removes requirement for PIE. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D147121 Files: clang/lib/Driver/SanitizerArgs.cpp clang/test/Driver/sanitizer-ld.c Index: clang/test/Driver/sanitizer-ld.c =================================================================== --- clang/test/Driver/sanitizer-ld.c +++ clang/test/Driver/sanitizer-ld.c @@ -961,7 +961,6 @@ // RUN: | FileCheck --check-prefix=CHECK-HWASAN-X86-64-LINUX %s // // CHECK-HWASAN-X86-64-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" -// CHECK-HWASAN-X86-64-LINUX: "-pie" // CHECK-HWASAN-X86-64-LINUX-NOT: "-lc" // CHECK-HWASAN-X86-64-LINUX: libclang_rt.hwasan-x86_64.a" // CHECK-HWASAN-X86-64-LINUX-NOT: "--export-dynamic" @@ -979,7 +978,6 @@ // RUN: | FileCheck --check-prefix=CHECK-SHARED-HWASAN-X86-64-LINUX %s // // CHECK-SHARED-HWASAN-X86-64-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" -// CHECK-SHARED-HWASAN-X86-64-LINUX: "-pie" // CHECK-SHARED-HWASAN-X86-64-LINUX-NOT: "-lc" // CHECK-SHARED-HWASAN-X86-64-LINUX: libclang_rt.hwasan-x86_64.so" // CHECK-SHARED-HWASAN-X86-64-LINUX-NOT: "-lpthread" @@ -996,7 +994,6 @@ // RUN: | FileCheck --check-prefix=CHECK-DSO-SHARED-HWASAN-X86-64-LINUX %s // // CHECK-DSO-SHARED-HWASAN-X86-64-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" -// CHECK-DSO_SHARED-HWASAN-X86-64-LINUX: "-pie" // CHECK-DSO-SHARED-HWASAN-X86-64-LINUX-NOT: "-lc" // CHECK-DSO-SHARED-HWASAN-X86-64-LINUX: libclang_rt.hwasan-x86_64.so" // CHECK-DSO-SHARED-HWASAN-X86-64-LINUX-NOT: "-lpthread" @@ -1013,7 +1010,6 @@ // RUN: | FileCheck --check-prefix=CHECK-HWASAN-AARCH64-LINUX %s // // CHECK-HWASAN-AARCH64-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" -// CHECK-HWASAN-AARCH64-LINUX: "-pie" // CHECK-HWASAN-AARCH64-LINUX-NOT: "-lc" // CHECK-HWASAN-AARCH64-LINUX: libclang_rt.hwasan-aarch64.a" // CHECK-HWASAN-AARCH64-LINUX-NOT: "--export-dynamic" @@ -1032,7 +1028,6 @@ // RUN: | FileCheck --check-prefix=CHECK-SHARED-HWASAN-AARCH64-LINUX %s // // CHECK-SHARED-HWASAN-AARCH64-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" -// CHECK-SHARED-HWASAN-AARCH64-LINUX: "-pie" // CHECK-SHARED-HWASAN-AARCH64-LINUX-NOT: "-lc" // CHECK-SHARED-HWASAN-AARCH64-LINUX: libclang_rt.hwasan-aarch64.so" // CHECK-SHARED-HWASAN-AARCH64-LINUX-NOT: "-lpthread" @@ -1049,7 +1044,6 @@ // RUN: | FileCheck --check-prefix=CHECK-DSO-SHARED-HWASAN-AARCH64-LINUX %s // // CHECK-DSO-SHARED-HWASAN-AARCH64-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" -// CHECK-DSO_SHARED-HWASAN-AARCH64-LINUX: "-pie" // CHECK-DSO-SHARED-HWASAN-AARCH64-LINUX-NOT: "-lc" // CHECK-DSO-SHARED-HWASAN-AARCH64-LINUX: libclang_rt.hwasan-aarch64.so" // CHECK-DSO-SHARED-HWASAN-AARCH64-LINUX-NOT: "-lpthread" Index: clang/lib/Driver/SanitizerArgs.cpp =================================================================== --- clang/lib/Driver/SanitizerArgs.cpp +++ clang/lib/Driver/SanitizerArgs.cpp @@ -38,8 +38,7 @@ static const SanitizerMask NotAllowedWithMinimalRuntime = SanitizerKind::Function | SanitizerKind::Vptr; static const SanitizerMask RequiresPIE = - SanitizerKind::DataFlow | SanitizerKind::HWAddress | SanitizerKind::Scudo | - SanitizerKind::KCFI; + SanitizerKind::DataFlow | SanitizerKind::Scudo | SanitizerKind::KCFI; static const SanitizerMask NeedsUnwindTables = SanitizerKind::Address | SanitizerKind::HWAddress | SanitizerKind::Thread | SanitizerKind::Memory | SanitizerKind::DataFlow;
Index: clang/test/Driver/sanitizer-ld.c =================================================================== --- clang/test/Driver/sanitizer-ld.c +++ clang/test/Driver/sanitizer-ld.c @@ -961,7 +961,6 @@ // RUN: | FileCheck --check-prefix=CHECK-HWASAN-X86-64-LINUX %s // // CHECK-HWASAN-X86-64-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" -// CHECK-HWASAN-X86-64-LINUX: "-pie" // CHECK-HWASAN-X86-64-LINUX-NOT: "-lc" // CHECK-HWASAN-X86-64-LINUX: libclang_rt.hwasan-x86_64.a" // CHECK-HWASAN-X86-64-LINUX-NOT: "--export-dynamic" @@ -979,7 +978,6 @@ // RUN: | FileCheck --check-prefix=CHECK-SHARED-HWASAN-X86-64-LINUX %s // // CHECK-SHARED-HWASAN-X86-64-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" -// CHECK-SHARED-HWASAN-X86-64-LINUX: "-pie" // CHECK-SHARED-HWASAN-X86-64-LINUX-NOT: "-lc" // CHECK-SHARED-HWASAN-X86-64-LINUX: libclang_rt.hwasan-x86_64.so" // CHECK-SHARED-HWASAN-X86-64-LINUX-NOT: "-lpthread" @@ -996,7 +994,6 @@ // RUN: | FileCheck --check-prefix=CHECK-DSO-SHARED-HWASAN-X86-64-LINUX %s // // CHECK-DSO-SHARED-HWASAN-X86-64-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" -// CHECK-DSO_SHARED-HWASAN-X86-64-LINUX: "-pie" // CHECK-DSO-SHARED-HWASAN-X86-64-LINUX-NOT: "-lc" // CHECK-DSO-SHARED-HWASAN-X86-64-LINUX: libclang_rt.hwasan-x86_64.so" // CHECK-DSO-SHARED-HWASAN-X86-64-LINUX-NOT: "-lpthread" @@ -1013,7 +1010,6 @@ // RUN: | FileCheck --check-prefix=CHECK-HWASAN-AARCH64-LINUX %s // // CHECK-HWASAN-AARCH64-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" -// CHECK-HWASAN-AARCH64-LINUX: "-pie" // CHECK-HWASAN-AARCH64-LINUX-NOT: "-lc" // CHECK-HWASAN-AARCH64-LINUX: libclang_rt.hwasan-aarch64.a" // CHECK-HWASAN-AARCH64-LINUX-NOT: "--export-dynamic" @@ -1032,7 +1028,6 @@ // RUN: | FileCheck --check-prefix=CHECK-SHARED-HWASAN-AARCH64-LINUX %s // // CHECK-SHARED-HWASAN-AARCH64-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" -// CHECK-SHARED-HWASAN-AARCH64-LINUX: "-pie" // CHECK-SHARED-HWASAN-AARCH64-LINUX-NOT: "-lc" // CHECK-SHARED-HWASAN-AARCH64-LINUX: libclang_rt.hwasan-aarch64.so" // CHECK-SHARED-HWASAN-AARCH64-LINUX-NOT: "-lpthread" @@ -1049,7 +1044,6 @@ // RUN: | FileCheck --check-prefix=CHECK-DSO-SHARED-HWASAN-AARCH64-LINUX %s // // CHECK-DSO-SHARED-HWASAN-AARCH64-LINUX: "{{(.*[^-.0-9A-Z_a-z])?}}ld{{(.exe)?}}" -// CHECK-DSO_SHARED-HWASAN-AARCH64-LINUX: "-pie" // CHECK-DSO-SHARED-HWASAN-AARCH64-LINUX-NOT: "-lc" // CHECK-DSO-SHARED-HWASAN-AARCH64-LINUX: libclang_rt.hwasan-aarch64.so" // CHECK-DSO-SHARED-HWASAN-AARCH64-LINUX-NOT: "-lpthread" Index: clang/lib/Driver/SanitizerArgs.cpp =================================================================== --- clang/lib/Driver/SanitizerArgs.cpp +++ clang/lib/Driver/SanitizerArgs.cpp @@ -38,8 +38,7 @@ static const SanitizerMask NotAllowedWithMinimalRuntime = SanitizerKind::Function | SanitizerKind::Vptr; static const SanitizerMask RequiresPIE = - SanitizerKind::DataFlow | SanitizerKind::HWAddress | SanitizerKind::Scudo | - SanitizerKind::KCFI; + SanitizerKind::DataFlow | SanitizerKind::Scudo | SanitizerKind::KCFI; static const SanitizerMask NeedsUnwindTables = SanitizerKind::Address | SanitizerKind::HWAddress | SanitizerKind::Thread | SanitizerKind::Memory | SanitizerKind::DataFlow;
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits