[compiler-rt] default arch (PR #139097)
Jake Egan via llvm-commits
llvm-commits at lists.llvm.org
Thu May 8 08:52:39 PDT 2025
https://github.com/jakeegan created https://github.com/llvm/llvm-project/pull/139097
None
>From 5c7678d4a3c3de16cabd99a6ef3dad5270b28352 Mon Sep 17 00:00:00 2001
From: Jake Egan <jake.egan at ibm.com>
Date: Thu, 8 May 2025 11:51:58 -0400
Subject: [PATCH] default arch
---
.../sanitizer_symbolizer_libcdep.cpp | 3 +++
.../sanitizer_default_arch/llvm-symbolizer | 7 +++++++
.../symbolizer_default_arch_ppc64.cpp | 18 ++++++++++++++++++
3 files changed, 28 insertions(+)
create mode 100755 compiler-rt/test/sanitizer_common/TestCases/Inputs/sanitizer_default_arch/llvm-symbolizer
create mode 100644 compiler-rt/test/sanitizer_common/TestCases/symbolizer_default_arch_ppc64.cpp
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_libcdep.cpp b/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_libcdep.cpp
index 565701c85d978..d160c26fcbac7 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_libcdep.cpp
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_libcdep.cpp
@@ -282,6 +282,9 @@ class LLVMSymbolizerProcess final : public SymbolizerProcess {
const char *const kSymbolizerArch = "--default-arch=powerpc64";
# elif defined(__powerpc64__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
const char *const kSymbolizerArch = "--default-arch=powerpc64le";
+# elif defined(__powerpc__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
+ // Must check __powerpc__ after __powerpc64__ because both can be set.
+ const char* const kSymbolizerArch = "--default-arch=powerpc";
# elif defined(__s390x__)
const char *const kSymbolizerArch = "--default-arch=s390x";
# elif defined(__s390__)
diff --git a/compiler-rt/test/sanitizer_common/TestCases/Inputs/sanitizer_default_arch/llvm-symbolizer b/compiler-rt/test/sanitizer_common/TestCases/Inputs/sanitizer_default_arch/llvm-symbolizer
new file mode 100755
index 0000000000000..6976ae8514c2b
--- /dev/null
+++ b/compiler-rt/test/sanitizer_common/TestCases/Inputs/sanitizer_default_arch/llvm-symbolizer
@@ -0,0 +1,7 @@
+#!/usr/bin/env python3
+
+ # Assisted by watsonx Code Assistant
+ import json
+ import sys
+ print(json.dumps(sys.argv[1:]), file=sys.stderr)
+ print("main\n??:0:0\n")
diff --git a/compiler-rt/test/sanitizer_common/TestCases/symbolizer_default_arch_ppc64.cpp b/compiler-rt/test/sanitizer_common/TestCases/symbolizer_default_arch_ppc64.cpp
new file mode 100644
index 0000000000000..7c002b4c2dd23
--- /dev/null
+++ b/compiler-rt/test/sanitizer_common/TestCases/symbolizer_default_arch_ppc64.cpp
@@ -0,0 +1,18 @@
+// REQUIRES: powerpc64-target-arch
+
+ // RUN: %clangxx -O0 %s -o %t
+ // RUN: %env_tool_opts=external_symbolizer_path=%p/Inputs/sanitizer_default_arch/llvm-symbolizer \
+ // RUN: %run %t 2>&1 | FileCheck %s
+
+ #include <sanitizer/common_interface_defs.h>
+
+ static void Symbolize() {
+ char buffer[100];
+ __sanitizer_symbolize_pc(__builtin_return_address(0), "%p %F %L", buffer,
+ sizeof(buffer));
+ }
+
+ int main() {
+ // CHECK: "--default-arch=powerpc64"
+ Symbolize();
+ }
More information about the llvm-commits
mailing list