[compiler-rt] [sanitizer_common] Add default arch powerpc (PR #139097)

Jake Egan via llvm-commits llvm-commits at lists.llvm.org
Thu May 8 10:57:28 PDT 2025


https://github.com/jakeegan updated https://github.com/llvm/llvm-project/pull/139097

>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 1/2] 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();
+ }

>From 9a7a3e0bac4c20326bcd0c3d15fe849f4a523e95 Mon Sep 17 00:00:00 2001
From: Jake Egan <jake.egan at ibm.com>
Date: Thu, 8 May 2025 13:57:16 -0400
Subject: [PATCH 2/2] Fix formatting

---
 .../sanitizer_symbolizer_libcdep.cpp          |  2 +-
 .../symbolizer_default_arch_ppc64.cpp         | 24 +++++++++----------
 2 files changed, 13 insertions(+), 13 deletions(-)

diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_libcdep.cpp b/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_libcdep.cpp
index d160c26fcbac7..6492e8ebe73ad 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_libcdep.cpp
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_symbolizer_libcdep.cpp
@@ -284,7 +284,7 @@ class LLVMSymbolizerProcess final : public SymbolizerProcess {
     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";
+    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/symbolizer_default_arch_ppc64.cpp b/compiler-rt/test/sanitizer_common/TestCases/symbolizer_default_arch_ppc64.cpp
index 7c002b4c2dd23..30ae4a6df8ed6 100644
--- a/compiler-rt/test/sanitizer_common/TestCases/symbolizer_default_arch_ppc64.cpp
+++ b/compiler-rt/test/sanitizer_common/TestCases/symbolizer_default_arch_ppc64.cpp
@@ -1,18 +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: %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>
+#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));
- }
+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();
- }
+int main() {
+  // CHECK: "--default-arch=powerpc64"
+  Symbolize();
+}



More information about the llvm-commits mailing list