[compiler-rt] 28f9575 - [compiler-rt] Require glibc for DumpAllRegisters on Linux (#101131)
via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 29 23:18:05 PDT 2024
Author: Dmitry Chestnykh
Date: 2024-07-30T09:18:01+03:00
New Revision: 28f9575b41ce5a184baeaab95f5db74fb3ad176f
URL: https://github.com/llvm/llvm-project/commit/28f9575b41ce5a184baeaab95f5db74fb3ad176f
DIFF: https://github.com/llvm/llvm-project/commit/28f9575b41ce5a184baeaab95f5db74fb3ad176f.diff
LOG: [compiler-rt] Require glibc for DumpAllRegisters on Linux (#101131)
For example musl doesn't provide REG_R* definitions for ARM
#100398
Added:
Modified:
compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp
compiler-rt/test/sanitizer_common/TestCases/Linux/dump_registers_aarch64.cpp
compiler-rt/test/sanitizer_common/TestCases/Linux/dump_registers_arm.cpp
compiler-rt/test/sanitizer_common/TestCases/Linux/dump_registers_i386.cpp
compiler-rt/test/sanitizer_common/TestCases/Linux/dump_registers_x86_64.cpp
Removed:
################################################################################
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp b/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp
index 7b73c3576fd35..22aaf07a9d90a 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_linux.cpp
@@ -2121,7 +2121,7 @@ bool SignalContext::IsTrueFaultingAddress() const {
UNUSED
static const char *RegNumToRegName(int reg) {
switch (reg) {
-# if SANITIZER_LINUX
+# if SANITIZER_LINUX && SANITIZER_GLIBC
# if defined(__x86_64__)
case REG_RAX:
return "rax";
@@ -2240,14 +2240,15 @@ static const char *RegNumToRegName(int reg) {
case 31:
return "sp";
# endif
-# endif // SANITIZER_LINUX
+# endif // SANITIZER_LINUX && SANITIZER_GLIBC
default:
return NULL;
}
return NULL;
}
-# if SANITIZER_LINUX && (defined(__arm__) || defined(__aarch64__))
+# if SANITIZER_LINUX && SANITIZER_GLIBC && \
+ (defined(__arm__) || defined(__aarch64__))
static uptr GetArmRegister(ucontext_t *ctx, int RegNum) {
switch (RegNum) {
# if defined(__arm__)
@@ -2289,7 +2290,8 @@ static uptr GetArmRegister(ucontext_t *ctx, int RegNum) {
}
return 0;
}
-# endif // SANITIZER_LINUX && (defined(__arm__) || defined(__aarch64__))
+# endif // SANITIZER_LINUX && SANITIZER_GLIBC && (defined(__arm__) ||
+ // defined(__aarch64__))
UNUSED
static void DumpSingleReg(ucontext_t *ctx, int RegNum) {
@@ -2312,7 +2314,7 @@ static void DumpSingleReg(ucontext_t *ctx, int RegNum) {
void SignalContext::DumpAllRegisters(void *context) {
ucontext_t *ucontext = (ucontext_t *)context;
-# if SANITIZER_LINUX
+# if SANITIZER_LINUX && SANITIZER_GLIBC
# if defined(__x86_64__)
Report("Register values:\n");
DumpSingleReg(ucontext, REG_RAX);
diff --git a/compiler-rt/test/sanitizer_common/TestCases/Linux/dump_registers_aarch64.cpp b/compiler-rt/test/sanitizer_common/TestCases/Linux/dump_registers_aarch64.cpp
index e01b826c86b8a..d1015a4e36956 100644
--- a/compiler-rt/test/sanitizer_common/TestCases/Linux/dump_registers_aarch64.cpp
+++ b/compiler-rt/test/sanitizer_common/TestCases/Linux/dump_registers_aarch64.cpp
@@ -3,7 +3,7 @@
// RUN: %env_tool_opts=dump_registers=0 not %run %t 2>&1 | FileCheck %s --check-prefix=CHECK-NODUMP
// RUN: not %run %t 2>&1 | FileCheck %s --strict-whitespace --check-prefix=CHECK-DUMP
//
-// REQUIRES: aarch64-target-arch
+// REQUIRES: aarch64-target-arch && glibc
#include <signal.h>
diff --git a/compiler-rt/test/sanitizer_common/TestCases/Linux/dump_registers_arm.cpp b/compiler-rt/test/sanitizer_common/TestCases/Linux/dump_registers_arm.cpp
index e17dbf196227b..e747f78188d32 100644
--- a/compiler-rt/test/sanitizer_common/TestCases/Linux/dump_registers_arm.cpp
+++ b/compiler-rt/test/sanitizer_common/TestCases/Linux/dump_registers_arm.cpp
@@ -3,7 +3,7 @@
// RUN: %env_tool_opts=dump_registers=0 not %run %t 2>&1 | FileCheck %s --check-prefix=CHECK-NODUMP
// RUN: not %run %t 2>&1 | FileCheck %s --strict-whitespace --check-prefix=CHECK-DUMP
//
-// REQUIRES: arm-target-arch
+// REQUIRES: arm-target-arch && glibc
#include <signal.h>
diff --git a/compiler-rt/test/sanitizer_common/TestCases/Linux/dump_registers_i386.cpp b/compiler-rt/test/sanitizer_common/TestCases/Linux/dump_registers_i386.cpp
index 74aea4d8b360a..5a62ef88ccd89 100644
--- a/compiler-rt/test/sanitizer_common/TestCases/Linux/dump_registers_i386.cpp
+++ b/compiler-rt/test/sanitizer_common/TestCases/Linux/dump_registers_i386.cpp
@@ -3,7 +3,7 @@
// RUN: %env_tool_opts=dump_registers=0 not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK-NODUMP --strict-whitespace
// RUN: not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK-DUMP --strict-whitespace
//
-// REQUIRES: i386-target-arch
+// REQUIRES: i386-target-arch && glibc
#include <signal.h>
diff --git a/compiler-rt/test/sanitizer_common/TestCases/Linux/dump_registers_x86_64.cpp b/compiler-rt/test/sanitizer_common/TestCases/Linux/dump_registers_x86_64.cpp
index 3d11ef0e098f1..aac3c3fbd1052 100644
--- a/compiler-rt/test/sanitizer_common/TestCases/Linux/dump_registers_x86_64.cpp
+++ b/compiler-rt/test/sanitizer_common/TestCases/Linux/dump_registers_x86_64.cpp
@@ -3,7 +3,7 @@
// RUN: %env_tool_opts=dump_registers=0 not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK-NODUMP --strict-whitespace
// RUN: not %run %t 2>&1 | FileCheck %s --check-prefixes=CHECK-DUMP --strict-whitespace
//
-// REQUIRES: x86_64-target-arch
+// REQUIRES: x86_64-target-arch && glibc
#include <signal.h>
More information about the llvm-commits
mailing list