[clang] [compiler-rt] Revert "[XRay][AArch64] Support -fxray-shared" (PR #115022)
via cfe-commits
cfe-commits at lists.llvm.org
Tue Nov 5 08:44:05 PST 2024
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-xray
@llvm/pr-subscribers-clang
Author: Felipe de Azevedo Piovezan (felipepiovezan)
<details>
<summary>Changes</summary>
Reverts llvm/llvm-project#<!-- -->114431
---
Full diff: https://github.com/llvm/llvm-project/pull/115022.diff
11 Files Affected:
- (modified) clang/lib/Driver/XRayArgs.cpp (+2-6)
- (modified) clang/test/Driver/XRay/xray-shared.cpp (+5-11)
- (modified) compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake (+1-1)
- (modified) compiler-rt/lib/xray/CMakeLists.txt (-4)
- (modified) compiler-rt/lib/xray/xray_trampoline_AArch64.S (+14-18)
- (modified) compiler-rt/test/xray/TestCases/Posix/basic-mode-dso.cpp (+1-2)
- (modified) compiler-rt/test/xray/TestCases/Posix/clang-xray-shared.cpp (+1-1)
- (modified) compiler-rt/test/xray/TestCases/Posix/dlopen.cpp (+1-1)
- (modified) compiler-rt/test/xray/TestCases/Posix/dso-dep-chains.cpp (+1-1)
- (modified) compiler-rt/test/xray/TestCases/Posix/patch-premain-dso.cpp (+1-1)
- (modified) compiler-rt/test/xray/TestCases/Posix/patching-unpatching-dso.cpp (+1-1)
``````````diff
diff --git a/clang/lib/Driver/XRayArgs.cpp b/clang/lib/Driver/XRayArgs.cpp
index c270a94f216ebd..d0bb5d4887c184 100644
--- a/clang/lib/Driver/XRayArgs.cpp
+++ b/clang/lib/Driver/XRayArgs.cpp
@@ -67,12 +67,8 @@ XRayArgs::XRayArgs(const ToolChain &TC, const ArgList &Args) {
false)) {
XRayShared = true;
- // Certain targets support DSO instrumentation
- switch (Triple.getArch()) {
- case llvm::Triple::aarch64:
- case llvm::Triple::x86_64:
- break;
- default:
+ // DSO instrumentation is currently limited to x86_64
+ if (Triple.getArch() != llvm::Triple::x86_64) {
D.Diag(diag::err_drv_unsupported_opt_for_target)
<< "-fxray-shared" << Triple.str();
}
diff --git a/clang/test/Driver/XRay/xray-shared.cpp b/clang/test/Driver/XRay/xray-shared.cpp
index 820c5b363d2c62..e331fefed1e0c9 100644
--- a/clang/test/Driver/XRay/xray-shared.cpp
+++ b/clang/test/Driver/XRay/xray-shared.cpp
@@ -1,21 +1,15 @@
-// Check supported targets
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fPIC -fxray-instrument -fxray-shared -c %s -o /dev/null 2>&1 | FileCheck %s
-// RUN: %clang -### --target=aarch64-unknown-linux-gnu -fPIC -fxray-instrument -fxray-shared -c %s -o /dev/null 2>&1 | FileCheck %s
-
-// Check unsupported targets
-// RUN: not %clang -### --target=arm-unknown-linux-gnu -fPIC -fxray-instrument -fxray-shared -c %s -o /dev/null 2>&1 | FileCheck %s --check-prefix=ERR-TARGET
-// RUN: not %clang -### --target=mips-unknown-linux-gnu -fPIC -fxray-instrument -fxray-shared -c %s -o /dev/null 2>&1 | FileCheck %s --check-prefix=ERR-TARGET
-// RUN: not %clang -### --target=loongarch64-unknown-linux-gnu -fPIC -fxray-instrument -fxray-shared -c %s -o /dev/null 2>&1 | FileCheck %s --check-prefix=ERR-TARGET
-// RUN: not %clang -### --target=hexagon-unknown-linux-gnu -fPIC -fxray-instrument -fxray-shared -c %s -o /dev/null 2>&1 | FileCheck %s --check-prefix=ERR-TARGET
-// RUN: not %clang -### --target=powerpc64le-unknown-linux-gnu -fPIC -fxray-instrument -fxray-shared -c %s -o /dev/null 2>&1 | FileCheck %s --check-prefix=ERR-TARGET
-
-// Check PIC requirement
// RUN: %clang -### --target=x86_64-unknown-linux-gnu -fpic -fxray-instrument -fxray-shared -c %s -o /dev/null 2>&1 | FileCheck %s
// RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fno-PIC -fxray-instrument -fxray-shared -c %s -o /dev/null 2>&1 | FileCheck %s --check-prefix=ERR-PIC
// RUN: not %clang -### --target=x86_64-unknown-linux-gnu -fno-pic -fxray-instrument -fxray-shared -c %s -o /dev/null 2>&1 | FileCheck %s --check-prefix=ERR-PIC
+
// On 64 bit darwin, PIC is always enabled
// RUN: %clang -### --target=x86_64-apple-darwin -fxray-instrument -fxray-shared -c %s -o /dev/null 2>&1 | FileCheck %s
+// Check unsupported targets
+// RUN: not %clang -### --target=aarch64-pc-freebsd -fPIC -fxray-instrument -fxray-shared -c %s -o /dev/null 2>&1 | FileCheck %s --check-prefix=ERR-TARGET
+// RUN: not %clang -### --target=arm64-apple-macos -fPIC -fxray-instrument -fxray-shared -c %s -o /dev/null 2>&1 | FileCheck %s --check-prefix=ERR-TARGET
+
// CHECK: "-cc1" {{.*}}"-fxray-instrument" {{.*}}"-fxray-shared"
// ERR-TARGET: error: unsupported option '-fxray-shared' for target
// ERR-PIC: error: option '-fxray-shared' cannot be specified without '-fPIC'
diff --git a/compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake b/compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake
index b29ae179c2b4f4..fb4dfa7bd09dfe 100644
--- a/compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake
+++ b/compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake
@@ -104,7 +104,7 @@ else()
set(ALL_XRAY_SUPPORTED_ARCH ${X86_64} ${ARM32} ${ARM64} ${MIPS32} ${MIPS64}
powerpc64le ${HEXAGON} ${LOONGARCH64})
endif()
-set(ALL_XRAY_DSO_SUPPORTED_ARCH ${X86_64} ${ARM64})
+set(ALL_XRAY_DSO_SUPPORTED_ARCH ${X86_64})
set(ALL_SHADOWCALLSTACK_SUPPORTED_ARCH ${ARM64})
if (UNIX)
diff --git a/compiler-rt/lib/xray/CMakeLists.txt b/compiler-rt/lib/xray/CMakeLists.txt
index 633c2e3a402f50..f38c07420c9abf 100644
--- a/compiler-rt/lib/xray/CMakeLists.txt
+++ b/compiler-rt/lib/xray/CMakeLists.txt
@@ -56,10 +56,6 @@ set(aarch64_SOURCES
xray_trampoline_AArch64.S
)
-set(aarch64_DSO_SOURCES
- xray_trampoline_AArch64.S
- )
-
set(loongarch64_SOURCES
xray_loongarch64.cpp
xray_trampoline_loongarch64.S
diff --git a/compiler-rt/lib/xray/xray_trampoline_AArch64.S b/compiler-rt/lib/xray/xray_trampoline_AArch64.S
index 2586def04cbb19..536a79e0d150e7 100644
--- a/compiler-rt/lib/xray/xray_trampoline_AArch64.S
+++ b/compiler-rt/lib/xray/xray_trampoline_AArch64.S
@@ -26,17 +26,6 @@
ldp x1, x2, [sp], #16
.endm
-.macro LOAD_HANDLER_ADDR reg handler
-#if !defined(XRAY_PIC)
- adrp \reg, ASM_SYMBOL(\handler)
- ldr \reg, [\reg, :lo12:ASM_SYMBOL(\handler)]
-#else
- adrp \reg, :got:ASM_SYMBOL(\handler)
- ldr \reg, [\reg, :got_lo12:ASM_SYMBOL(\handler)]
- ldr \reg, [\reg]
-#endif
-.endm
-
.text
.p2align 2
.global ASM_SYMBOL(__xray_FunctionEntry)
@@ -53,7 +42,8 @@ ASM_SYMBOL(__xray_FunctionEntry):
SAVE_REGISTERS
// Load the handler function pointer.
- LOAD_HANDLER_ADDR x2, _ZN6__xray19XRayPatchedFunctionE
+ adrp x2, ASM_SYMBOL(_ZN6__xray19XRayPatchedFunctionE)
+ ldr x2, [x2, #:lo12:ASM_SYMBOL(_ZN6__xray19XRayPatchedFunctionE)]
cbz x2, 1f
// Set w0 to the function ID (w17). Set x1 to XRayEntryType::ENTRY = 0.
mov w0, w17
@@ -79,7 +69,8 @@ ASM_SYMBOL(__xray_FunctionExit):
SAVE_REGISTERS
// Load the handler function pointer into x2.
- LOAD_HANDLER_ADDR x2, _ZN6__xray19XRayPatchedFunctionE
+ adrp x2, ASM_SYMBOL(_ZN6__xray19XRayPatchedFunctionE)
+ ldr x2, [x2, #:lo12:ASM_SYMBOL(_ZN6__xray19XRayPatchedFunctionE)]
cbz x2, 1f
// Set w0 to the function ID (w17). Set x1 to XRayEntryType::EXIT = 1.
mov w0, w17
@@ -105,7 +96,8 @@ ASM_SYMBOL(__xray_FunctionTailExit):
// Save the registers which may be modified by the handler function.
SAVE_REGISTERS
// Load the handler function pointer into x2.
- LOAD_HANDLER_ADDR x2, _ZN6__xray19XRayPatchedFunctionE
+ adrp x2, ASM_SYMBOL(_ZN6__xray19XRayPatchedFunctionE)
+ ldr x2, [x2, #:lo12:ASM_SYMBOL(_ZN6__xray19XRayPatchedFunctionE)]
cbz x2, 1f
// Set w0 to the function ID (w17). Set x1 to XRayEntryType::TAIL = 2.
mov w0, w17
@@ -126,11 +118,13 @@ ASM_SYMBOL(__xray_ArgLoggerEntry):
// Push the registers which may be modified by the handler function.
SAVE_REGISTERS
- LOAD_HANDLER_ADDR x8, _ZN6__xray13XRayArgLoggerE
+ adrp x8, ASM_SYMBOL(_ZN6__xray13XRayArgLoggerE)
+ ldr x8, [x8, #:lo12:ASM_SYMBOL(_ZN6__xray13XRayArgLoggerE)]
cbnz x8, 2f
// Load the handler function pointer.
- LOAD_HANDLER_ADDR x8, _ZN6__xray19XRayPatchedFunctionE
+ adrp x8, ASM_SYMBOL(_ZN6__xray19XRayPatchedFunctionE)
+ ldr x8, [x8, #:lo12:ASM_SYMBOL(_ZN6__xray19XRayPatchedFunctionE)]
cbz x8, 1f
2:
@@ -150,7 +144,8 @@ ASM_SIZE(__xray_ArgLoggerEntry)
ASM_TYPE_FUNCTION(__xray_CustomEvent)
ASM_SYMBOL(__xray_CustomEvent):
SAVE_REGISTERS
- LOAD_HANDLER_ADDR x8, _ZN6__xray22XRayPatchedCustomEventE
+ adrp x8, ASM_SYMBOL(_ZN6__xray22XRayPatchedCustomEventE)
+ ldr x8, [x8, #:lo12:ASM_SYMBOL(_ZN6__xray22XRayPatchedCustomEventE)]
cbz x8, 1f
blr x8
1:
@@ -162,7 +157,8 @@ ASM_SIZE(__xray_CustomEvent)
ASM_TYPE_FUNCTION(__xray_TypedEvent)
ASM_SYMBOL(__xray_TypedEvent):
SAVE_REGISTERS
- LOAD_HANDLER_ADDR x8, _ZN6__xray21XRayPatchedTypedEventE
+ adrp x8, ASM_SYMBOL(_ZN6__xray21XRayPatchedTypedEventE)
+ ldr x8, [x8, #:lo12:ASM_SYMBOL(_ZN6__xray21XRayPatchedTypedEventE)]
cbz x8, 1f
blr x8
1:
diff --git a/compiler-rt/test/xray/TestCases/Posix/basic-mode-dso.cpp b/compiler-rt/test/xray/TestCases/Posix/basic-mode-dso.cpp
index d40dcd808bcbaf..31c615bd1f81bf 100644
--- a/compiler-rt/test/xray/TestCases/Posix/basic-mode-dso.cpp
+++ b/compiler-rt/test/xray/TestCases/Posix/basic-mode-dso.cpp
@@ -8,8 +8,7 @@
// RUN: %llvm_xray account --format=csv --sort=funcid "`ls basic-mode-dso-* | head -1`" | FileCheck --check-prefix=ACCOUNT %s
// RUN: rm basic-mode-dso-*
-// REQUIRES: target={{(aarch64|x86_64)-.*}}
-// REQUIRES: built-in-llvm-tree
+// REQUIRES: target=x86_64{{.*}}
//--- main.cpp
diff --git a/compiler-rt/test/xray/TestCases/Posix/clang-xray-shared.cpp b/compiler-rt/test/xray/TestCases/Posix/clang-xray-shared.cpp
index f36b64dd59f1ab..0dd721571de9b8 100644
--- a/compiler-rt/test/xray/TestCases/Posix/clang-xray-shared.cpp
+++ b/compiler-rt/test/xray/TestCases/Posix/clang-xray-shared.cpp
@@ -6,7 +6,7 @@
// RUN: %clangxx -fxray-instrument %s -shared -o %t.so
// RUN: llvm-nm %t.so | FileCheck %s --check-prefix DISABLED
//
-// REQUIRES: target={{(aarch64|x86_64)-.*}}
+// REQUIRES: target=x86_64{{.*}}
[[clang::xray_always_instrument]] int always_instrumented() { return 42; }
diff --git a/compiler-rt/test/xray/TestCases/Posix/dlopen.cpp b/compiler-rt/test/xray/TestCases/Posix/dlopen.cpp
index 9567269e8ff1b8..9db411d5ff1c6e 100644
--- a/compiler-rt/test/xray/TestCases/Posix/dlopen.cpp
+++ b/compiler-rt/test/xray/TestCases/Posix/dlopen.cpp
@@ -7,7 +7,7 @@
//
// RUN: XRAY_OPTIONS="patch_premain=true" %run %t/main.o %t/testlib.so 2>&1 | FileCheck %s
-// REQUIRES: target={{(aarch64|x86_64)-.*}}
+// REQUIRES: target=x86_64{{.*}}
//--- main.cpp
diff --git a/compiler-rt/test/xray/TestCases/Posix/dso-dep-chains.cpp b/compiler-rt/test/xray/TestCases/Posix/dso-dep-chains.cpp
index 82cc127b521a6f..89da2764c35cee 100644
--- a/compiler-rt/test/xray/TestCases/Posix/dso-dep-chains.cpp
+++ b/compiler-rt/test/xray/TestCases/Posix/dso-dep-chains.cpp
@@ -17,7 +17,7 @@
//
// RUN: XRAY_OPTIONS="patch_premain=true" %run %t/main.o %t/testlibd.so %t/testlibe.so 2>&1 | FileCheck %s
-// REQUIRES: target={{(aarch64|x86_64)-.*}}
+// REQUIRES: target=x86_64{{.*}}
//--- main.cpp
diff --git a/compiler-rt/test/xray/TestCases/Posix/patch-premain-dso.cpp b/compiler-rt/test/xray/TestCases/Posix/patch-premain-dso.cpp
index 7bce653fe72337..0708d0383439d0 100644
--- a/compiler-rt/test/xray/TestCases/Posix/patch-premain-dso.cpp
+++ b/compiler-rt/test/xray/TestCases/Posix/patch-premain-dso.cpp
@@ -6,7 +6,7 @@
// RUN: XRAY_OPTIONS="patch_premain=true,verbosity=1" %run %t/main.o 2>&1 | FileCheck %s
-// REQUIRES: target={{(aarch64|x86_64)-.*}}
+// REQUIRES: target=x86_64{{.*}}
//--- main.cpp
diff --git a/compiler-rt/test/xray/TestCases/Posix/patching-unpatching-dso.cpp b/compiler-rt/test/xray/TestCases/Posix/patching-unpatching-dso.cpp
index 640cf9bcc1a341..d3e992dd497725 100644
--- a/compiler-rt/test/xray/TestCases/Posix/patching-unpatching-dso.cpp
+++ b/compiler-rt/test/xray/TestCases/Posix/patching-unpatching-dso.cpp
@@ -8,7 +8,7 @@
// RUN: XRAY_OPTIONS="patch_premain=false" %run %t/main.o 2>&1 | FileCheck %s
-// REQUIRES: target={{(aarch64|x86_64)-.*}}
+// REQUIRES: target=x86_64{{.*}}
//--- main.cpp
``````````
</details>
https://github.com/llvm/llvm-project/pull/115022
More information about the cfe-commits
mailing list