[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