[compiler-rt] 6d719d9 - Revert "[SystemZ][XRay] XRay runtime support for SystemZ (#113252)"
Sylvestre Ledru via llvm-commits
llvm-commits at lists.llvm.org
Tue Nov 5 23:32:15 PST 2024
Author: Sylvestre Ledru
Date: 2024-11-06T08:31:58+01:00
New Revision: 6d719d9700261283e7f90cdaffb64a62d526f583
URL: https://github.com/llvm/llvm-project/commit/6d719d9700261283e7f90cdaffb64a62d526f583
DIFF: https://github.com/llvm/llvm-project/commit/6d719d9700261283e7f90cdaffb64a62d526f583.diff
LOG: Revert "[SystemZ][XRay] XRay runtime support for SystemZ (#113252)"
for causing: https://github.com/llvm/llvm-project/issues/115129
This reverts commit db1882e2484013066139f0b3f77d968d84a79158.
Added:
Modified:
compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake
compiler-rt/lib/xray/CMakeLists.txt
compiler-rt/lib/xray/xray_interface.cpp
compiler-rt/lib/xray/xray_interface_internal.h
compiler-rt/lib/xray/xray_tsc.h
Removed:
compiler-rt/lib/xray/xray_s390x.cpp
compiler-rt/lib/xray/xray_trampoline_s390x.S
################################################################################
diff --git a/compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake b/compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake
index 69e9b522775f95..fb4dfa7bd09dfe 100644
--- a/compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake
+++ b/compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake
@@ -102,7 +102,7 @@ if(APPLE)
set(ALL_XRAY_SUPPORTED_ARCH ${X86_64} ${ARM64})
else()
set(ALL_XRAY_SUPPORTED_ARCH ${X86_64} ${ARM32} ${ARM64} ${MIPS32} ${MIPS64}
- powerpc64le ${HEXAGON} ${LOONGARCH64} ${S390X})
+ powerpc64le ${HEXAGON} ${LOONGARCH64})
endif()
set(ALL_XRAY_DSO_SUPPORTED_ARCH ${X86_64})
set(ALL_SHADOWCALLSTACK_SUPPORTED_ARCH ${ARM64})
diff --git a/compiler-rt/lib/xray/CMakeLists.txt b/compiler-rt/lib/xray/CMakeLists.txt
index 20bdeeaee09e43..f38c07420c9abf 100644
--- a/compiler-rt/lib/xray/CMakeLists.txt
+++ b/compiler-rt/lib/xray/CMakeLists.txt
@@ -92,13 +92,6 @@ set(hexagon_SOURCES
xray_trampoline_hexagon.S
)
-set(s390x_SOURCES
- xray_s390x.cpp
- xray_trampoline_s390x.S
- )
-# Enable vector instructions in the assembly file.
-set_source_files_properties(xray_trampoline_s390x.S PROPERTIES COMPILE_FLAGS -mvx)
-
set(XRAY_SOURCE_ARCHS
arm
armhf
@@ -109,7 +102,6 @@ set(XRAY_SOURCE_ARCHS
mips64
mips64el
powerpc64le
- s390x
x86_64
)
@@ -160,7 +152,6 @@ set(XRAY_ALL_SOURCE_FILES
${mips64_SOURCES}
${mips64el_SOURCES}
${powerpc64le_SOURCES}
- ${s390x_SOURCES}
${XRAY_IMPL_HEADERS}
)
list(REMOVE_DUPLICATES XRAY_ALL_SOURCE_FILES)
diff --git a/compiler-rt/lib/xray/xray_interface.cpp b/compiler-rt/lib/xray/xray_interface.cpp
index 2ebaebd279e873..b6f0e6762f1681 100644
--- a/compiler-rt/lib/xray/xray_interface.cpp
+++ b/compiler-rt/lib/xray/xray_interface.cpp
@@ -57,8 +57,6 @@ static const int16_t cSledLength = 64;
static const int16_t cSledLength = 8;
#elif defined(__hexagon__)
static const int16_t cSledLength = 20;
-#elif defined(__s390x__)
-static const int16_t cSledLength = 18;
#else
#error "Unsupported CPU Architecture"
#endif /* CPU architecture */
diff --git a/compiler-rt/lib/xray/xray_interface_internal.h b/compiler-rt/lib/xray/xray_interface_internal.h
index 5dcccfe825cf59..a8cfe0fde84dd2 100644
--- a/compiler-rt/lib/xray/xray_interface_internal.h
+++ b/compiler-rt/lib/xray/xray_interface_internal.h
@@ -29,10 +29,6 @@ extern void __xray_FunctionTailExit();
extern void __xray_ArgLoggerEntry();
extern void __xray_CustomEvent();
extern void __xray_TypedEvent();
-#if defined(__s390x__)
-extern void __xray_FunctionEntryVec();
-extern void __xray_FunctionExitVec();
-#endif
}
extern "C" {
diff --git a/compiler-rt/lib/xray/xray_s390x.cpp b/compiler-rt/lib/xray/xray_s390x.cpp
deleted file mode 100644
index 86ef3573ce5092..00000000000000
--- a/compiler-rt/lib/xray/xray_s390x.cpp
+++ /dev/null
@@ -1,88 +0,0 @@
-//===-- xray_s390x.cpp ------------------------------------------*- C++ -*-===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-//
-// This file is a part of XRay, a dynamic runtime instrumentation system.
-//
-// Implementation of s390x routines.
-//
-//===----------------------------------------------------------------------===//
-#include "sanitizer_common/sanitizer_common.h"
-#include "xray_defs.h"
-#include "xray_interface_internal.h"
-#include <cassert>
-#include <cstring>
-
-bool __xray::patchFunctionEntry(const bool Enable, uint32_t FuncId,
- const XRaySledEntry &Sled,
- void (*Trampoline)()) XRAY_NEVER_INSTRUMENT {
- uint32_t *Address = reinterpret_cast<uint32_t *>(Sled.address());
- if (Enable) {
- // The resulting code is:
- // stmg %r2, %r15, 16(%r15)
- // llilf %2, FuncID
- // brasl %r14, __xray_FunctionEntry at GOT
- // The FuncId and the stmg instruction must be written.
-
- // Write FuncId into llilf.
- Address[2] = FuncId;
- // Write last part of stmg.
- reinterpret_cast<uint16_t *>(Address)[2] = 0x24;
- // Write first part of stmg.
- Address[0] = 0xeb2ff010;
- } else {
- // j +16 instructions.
- Address[0] = 0xa7f4000b;
- }
- return true;
-}
-
-bool __xray::patchFunctionExit(const bool Enable, uint32_t FuncId,
- const XRaySledEntry &Sled)
- XRAY_NEVER_INSTRUMENT {
- uint32_t *Address = reinterpret_cast<uint32_t *>(Sled.address());
- if (Enable) {
- // The resulting code is:
- // stmg %r2, %r15, 24(%r15)
- // llilf %2,FuncID
- // j __xray_FunctionEntry at GOT
- // The FuncId and the stmg instruction must be written.
-
- // Write FuncId into llilf.
- Address[2] = FuncId;
- // Write last part of of stmg.
- reinterpret_cast<uint16_t *>(Address)[2] = 0x24;
- // Write first part of stmg.
- Address[0] = 0xeb2ff010;
- } else {
- // br %14 instruction.
- reinterpret_cast<uint16_t *>(Address)[0] = 0x07fe;
- }
- return true;
-}
-
-bool __xray::patchFunctionTailExit(const bool Enable, const uint32_t FuncId,
- const XRaySledEntry &Sled)
- XRAY_NEVER_INSTRUMENT {
- return patchFunctionExit(Enable, FuncId, Sled);
-}
-
-bool __xray::patchCustomEvent(const bool Enable, const uint32_t FuncId,
- const XRaySledEntry &Sled) XRAY_NEVER_INSTRUMENT {
- // TODO Implement.
- return false;
-}
-
-bool __xray::patchTypedEvent(const bool Enable, const uint32_t FuncId,
- const XRaySledEntry &Sled) XRAY_NEVER_INSTRUMENT {
- // TODO Implement.
- return false;
-}
-
-extern "C" void __xray_ArgLoggerEntry() XRAY_NEVER_INSTRUMENT {
- // TODO this will have to be implemented in the trampoline assembly file.
-}
diff --git a/compiler-rt/lib/xray/xray_trampoline_s390x.S b/compiler-rt/lib/xray/xray_trampoline_s390x.S
deleted file mode 100644
index 4073943641b999..00000000000000
--- a/compiler-rt/lib/xray/xray_trampoline_s390x.S
+++ /dev/null
@@ -1,176 +0,0 @@
-//===-- xray_trampoline_s390x.s ---------------------------------*- ASM -*-===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-//
-// This file is a part of XRay, a dynamic runtime instrumentation system.
-//
-// This implements the s390x-specific assembler for the trampolines.
-// 2 versions of the functions are provided: one which does not store the
-// vector registers, and one which does store them. The compiler decides
-// which to call based on the availability of the vector extension.
-//
-//===----------------------------------------------------------------------===//
-
- .text
-
-// Minimal stack frame size
-#define STACKSZ 160
-
-// Minimal stack frame size (160) plus space for 8 vector registers a 16 bytes.
-#define STACKSZ_VEC 288
-
-//===----------------------------------------------------------------------===//
-
- .globl __xray_FunctionEntry
- .p2align 4
- .type __xray_FunctionEntry, at function
-__xray_FunctionEntry:
- # The registers r2-15 of the instrumented function are already saved in the
- # stack frame. On entry, r2 contains the function id, and %r14 the address
- # of the first instruction of the instrumented function.
- # Register r14 will be stored in the slot reserved for compiler use.
- stg %r14, 8(%r15)
- std %f0, 128(%r15)
- std %f2, 136(%r15)
- std %f4, 144(%r15)
- std %f6, 152(%r15)
- aghi %r15, -STACKSZ
-
- lgrl %r1, _ZN6__xray19XRayPatchedFunctionE at GOT
- ltg %r1, 0(%r1)
- je .Lrestore0
-
- # Set r3 to XRayEntryType::ENTRY = 0.
- # The FuncId is still stored in r2.
- lghi %r3, 0
- basr %r14, %r1
-
-.Lrestore0:
- ld %f6, STACKSZ+152(%r15)
- ld %f4, STACKSZ+144(%r15)
- ld %f2, STACKSZ+136(%r15)
- ld %f0, STACKSZ+128(%r15)
- lmg %r1, %r15, STACKSZ+8(%r15)
- br %r1
-.Lfunc_end0:
- .size __xray_FunctionEntry, .Lfunc_end0-__xray_FunctionEntry
-
-//===----------------------------------------------------------------------===//
-
- .globl __xray_FunctionEntryVec
- .p2align 4
- .type __xray_FunctionEntryVec, at function
-__xray_FunctionEntryVec:
- # The registers r2-15 of the instrumented function are already saved in the
- # stack frame. On entry, r2 contains the function id, and %r14 the address
- # of the first instruction of the instrumented function.
- # Register r14 will be stored in the slot reserved for compiler use.
- stg %r14, 8(%r15)
- std %f0, 128(%r15)
- std %f2, 136(%r15)
- std %f4, 144(%r15)
- std %f6, 152(%r15)
- aghi %r15, -STACKSZ_VEC
- vstm %v24, %v31, 160(%r15)
-
- lgrl %r1, _ZN6__xray19XRayPatchedFunctionE at GOT
- ltg %r1, 0(%r1)
- je .Lrestore1
-
- # Set r3 to XRayEntryType::ENTRY = 0.
- # The FuncId is still stored in r2.
- lghi %r3, 0
- basr %r14, %r1
-
-.Lrestore1:
- vlm %v24, %v31, 160(%r15)
- ld %f6, STACKSZ_VEC+152(%r15)
- ld %f4, STACKSZ_VEC+144(%r15)
- ld %f2, STACKSZ_VEC+136(%r15)
- ld %f0, STACKSZ_VEC+128(%r15)
- lmg %r1, %r15, STACKSZ_VEC+8(%r15)
- br %r1
-.Lfunc_end1:
- .size __xray_FunctionEntryVec, .Lfunc_end1-__xray_FunctionEntryVec
-
-//===----------------------------------------------------------------------===//
-
- .globl __xray_FunctionExit
- .p2align 4
- .type __xray_FunctionExit, at function
-__xray_FunctionExit:
- # The registers r2-15 of the instrumented function are already saved in the
- # stack frame. On entry, the register r2 contains the function id.
- # At the end, the function jumps to the address saved in the slot for r14,
- # which contains the return address into the caller of the instrumented
- # function.
- std %f0, 128(%r15)
- std %f2, 136(%r15)
- std %f4, 144(%r15)
- std %f6, 152(%r15)
- aghi %r15, -STACKSZ
-
- lgrl %r1, _ZN6__xray19XRayPatchedFunctionE at GOT
- ltg %r1, 0(%r1)
- je .Lrestore2
-
- # Set r3 to XRayEntryType::EXIT = 1.
- # The FuncId is still stored in r2.
- lghi %r3, 1
- basr %r14, %r1
-
-.Lrestore2:
- ld %f6, STACKSZ+152(%r15)
- ld %f4, STACKSZ+144(%r15)
- ld %f2, STACKSZ+136(%r15)
- ld %f0, STACKSZ+128(%r15)
- lmg %r2, %r15, STACKSZ+16(%r15)
- br %r14
-.Lfunc_end2:
- .size __xray_FunctionExit, .Lfunc_end2-__xray_FunctionExit
-
-//===----------------------------------------------------------------------===//
-
- .globl __xray_FunctionExitVec
- .p2align 4
- .type __xray_FunctionExitVec, at function
-__xray_FunctionExitVec:
- # The registers r2-15 of the instrumented function are already saved in the
- # stack frame. On entry, the register r2 contains the function id.
- # At the end, the function jumps to the address saved in the slot for r14,
- # which contains the return address into the caller of the instrumented
- # function.
- std %f0, 128(%r15)
- std %f2, 136(%r15)
- std %f4, 144(%r15)
- std %f6, 152(%r15)
- aghi %r15, -STACKSZ_VEC
- vstm %v24, %v31, 160(%r15)
-
- lgrl %r1, _ZN6__xray19XRayPatchedFunctionE at GOT
- ltg %r1, 0(%r1)
- je .Lrestore3
-
- # Set r3 to XRayEntryType::EXIT = 1.
- # The FuncId is still stored in r2.
- lghi %r3, 1
- basr %r14, %r1
-
-.Lrestore3:
- vlm %v24, %v31, 160(%r15)
- ld %f6, STACKSZ_VEC+152(%r15)
- ld %f4, STACKSZ_VEC+144(%r15)
- ld %f2, STACKSZ_VEC+136(%r15)
- ld %f0, STACKSZ_VEC+128(%r15)
- lmg %r2, %r15, STACKSZ_VEC+16(%r15)
- br %r14
-.Lfunc_end3:
- .size __xray_FunctionExit, .Lfunc_end3-__xray_FunctionExit
-
-//===----------------------------------------------------------------------===//
-
- .section ".note.GNU-stack","", at progbits
diff --git a/compiler-rt/lib/xray/xray_tsc.h b/compiler-rt/lib/xray/xray_tsc.h
index 5b2ba49b85f5d6..e1cafe1bf11d2d 100644
--- a/compiler-rt/lib/xray/xray_tsc.h
+++ b/compiler-rt/lib/xray/xray_tsc.h
@@ -83,28 +83,6 @@ inline uint64_t getTSCFrequency() XRAY_NEVER_INSTRUMENT {
} // namespace __xray
-#elif defined(__s390x__)
-#include "sanitizer_common/sanitizer_common.h"
-#include "sanitizer_common/sanitizer_internal_defs.h"
-#include "xray_defs.h"
-#include <cerrno>
-#include <cstdint>
-#include <time.h>
-
-namespace __xray {
-
-inline bool probeRequiredCPUFeatures() XRAY_NEVER_INSTRUMENT { return true; }
-
-ALWAYS_INLINE uint64_t readTSC(uint8_t &CPU) XRAY_NEVER_INSTRUMENT {
- return __builtin_readcyclecounter();
-}
-
-inline uint64_t getTSCFrequency() XRAY_NEVER_INSTRUMENT {
- return NanosecondsPerSecond;
-}
-
-} // namespace __xray
-
#else
#error Target architecture is not supported.
#endif // CPU architecture
More information about the llvm-commits
mailing list