Skip to content

Revert "[XRay][AArch64] Support -fxray-shared" #115022

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Nov 5, 2024

Conversation

felipepiovezan
Copy link
Contributor

Reverts #114431

@felipepiovezan felipepiovezan merged commit cb9700e into main Nov 5, 2024
4 of 5 checks passed
@llvmbot llvmbot added clang Clang issues not falling into any other category compiler-rt clang:driver 'clang' and 'clang++' user-facing binaries. Not 'clang-cl' xray labels Nov 5, 2024
@felipepiovezan felipepiovezan deleted the revert-114431-xray_shared_aarch64 branch November 5, 2024 16:43
@llvmbot
Copy link
Member

llvmbot commented Nov 5, 2024

@llvm/pr-subscribers-clang-driver
@llvm/pr-subscribers-xray

@llvm/pr-subscribers-clang

Author: Felipe de Azevedo Piovezan (felipepiovezan)

Changes

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 --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
 

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
clang:driver 'clang' and 'clang++' user-facing binaries. Not 'clang-cl' clang Clang issues not falling into any other category compiler-rt xray
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants