master: Mostly combine all definitions of arch_get_bad_address into one

snuglas via Sbcl-commits <[email protected]>
Newsgroups gmane.lisp.steel-bank.cvs
Message-ID <[email protected]>
The branch "master" has been updated in SBCL:
       via  cce821a3c73151cd969dcfbd371eaa80470a51a1 (commit)
      from  f368a022c003221f206ddc86239278e0c5e3f723 (commit)

- Log -----------------------------------------------------------------
commit cce821a3c73151cd969dcfbd371eaa80470a51a1
Author: Douglas Katzman <[email protected]>
Date:   Sun Apr 5 22:48:25 2026 -0400

    Mostly combine all definitions of arch_get_bad_address into one
    
    Only PPC seems to do anything other than read si_addr. I'm not sure it's
    correct, but I'm leaving it.
---
 src/runtime/arch.h             |  4 ++++
 src/runtime/arm-arch.c         |  5 -----
 src/runtime/arm64-arch.c       |  8 --------
 src/runtime/bsd-os.c           |  3 ++-
 src/runtime/haiku-os.c         |  3 ++-
 src/runtime/linux-os.c         |  3 ++-
 src/runtime/loongarch64-arch.c |  6 ------
 src/runtime/mips-arch.c        |  9 ---------
 src/runtime/riscv-arch.c       |  6 ------
 src/runtime/sparc-arch.c       |  5 -----
 src/runtime/sunos-os.c         |  3 ++-
 src/runtime/x86-64-arch.c      | 11 -----------
 src/runtime/x86-arch.c         |  8 --------
 13 files changed, 12 insertions(+), 62 deletions(-)

diff --git a/src/runtime/arch.h b/src/runtime/arch.h
index 683cdd3e2..427f4c807 100644
--- a/src/runtime/arch.h
+++ b/src/runtime/arch.h
@@ -30,7 +30,11 @@ extern void arch_handle_allocation_trap(os_context_t*);
 extern bool arch_pseudo_atomic_atomic(struct thread *thread);
 extern void arch_set_pseudo_atomic_interrupted(struct thread *thread);
 extern void arch_clear_pseudo_atomic_interrupted(struct thread *thread);
+#ifdef LISP_FEATURE_PPC
 extern os_vm_address_t arch_get_bad_addr(int, siginfo_t*, os_context_t*);
+#else
+#define arch_get_bad_addr(sig,info,context) info->si_addr
+#endif
 extern unsigned char *arch_internal_error_arguments(os_context_t*);
 extern unsigned int arch_install_breakpoint(void *pc);
 extern void arch_remove_breakpoint(void *pc, unsigned int orig_inst);
diff --git a/src/runtime/arm-arch.c b/src/runtime/arm-arch.c
index 558c856e3..762ebdafb 100644
--- a/src/runtime/arm-arch.c
+++ b/src/runtime/arm-arch.c
@@ -22,11 +22,6 @@
 #include "interr.h"
 #include "breakpoint.h"
 
-os_vm_address_t arch_get_bad_addr(int sig, siginfo_t *code, os_context_t *context)
-{
-    return (os_vm_address_t)code->si_addr;
-}
-
 void arch_skip_instruction(os_context_t *context)
 {
     /* KLUDGE: Other platforms check for trap codes and skip inlined
diff --git a/src/runtime/arm64-arch.c b/src/runtime/arm64-arch.c
index 9833c8314..9183013fe 100644
--- a/src/runtime/arm64-arch.c
+++ b/src/runtime/arm64-arch.c
@@ -23,14 +23,6 @@
 #include "breakpoint.h"
 #include "pseudo-atomic.h"
 
-#ifndef LISP_FEATURE_WIN32
-os_vm_address_t arch_get_bad_addr(int sig, siginfo_t *code, os_context_t *context)
-{
-    return (os_vm_address_t)code->si_addr;
-
-}
-#endif
-
 void arch_skip_instruction(os_context_t *context)
 {
     uint32_t trap_instruction = *(uint32_t *)OS_CONTEXT_PC(context);
diff --git a/src/runtime/bsd-os.c b/src/runtime/bsd-os.c
index 362b5bfbc..06e8f31e2 100644
--- a/src/runtime/bsd-os.c
+++ b/src/runtime/bsd-os.c
@@ -157,7 +157,8 @@ os_context_sigmask_addr(os_context_t *context)
  */
 
 void
-memory_fault_handler(int signal, siginfo_t *siginfo, os_context_t *context)
+memory_fault_handler(__attribute__((unused)) int signal,
+                     siginfo_t *siginfo, os_context_t *context)
 {
     void *fault_addr = arch_get_bad_addr(signal, siginfo, context);
 
diff --git a/src/runtime/haiku-os.c b/src/runtime/haiku-os.c
index c02941523..5d468938e 100644
--- a/src/runtime/haiku-os.c
+++ b/src/runtime/haiku-os.c
@@ -55,7 +55,8 @@ char *os_get_runtime_executable_path()
 void os_init() {}
 
 static void
-sigsegv_handler(int signal, siginfo_t *info, os_context_t *context)
+sigsegv_handler(__attribute__((unused)) int signal,
+                siginfo_t *info, os_context_t *context)
 {
     /*fprintf(stderr, "SIGSEGV: pc=%p addr=%p\n",
            context->uc_mcontext.rip, info->si_addr);*/
diff --git a/src/runtime/linux-os.c b/src/runtime/linux-os.c
index 8a3e2b000..0581c985d 100644
--- a/src/runtime/linux-os.c
+++ b/src/runtime/linux-os.c
@@ -272,7 +272,8 @@ int os_preinit(char *argv[], char *envp[])
  * page fault on this OS.
  */
 static void
-fallback_sigsegv_handler(int signal, siginfo_t *info, os_context_t *context)
+fallback_sigsegv_handler(__attribute__((unused)) int signal,
+                         siginfo_t *info, os_context_t *context)
 {
     // This calls corruption_warning_and_maybe_lose.
     lisp_memory_fault_error(context, arch_get_bad_addr(signal, info, context));
diff --git a/src/runtime/loongarch64-arch.c b/src/runtime/loongarch64-arch.c
index fd396430d..ca4fd7861 100644
--- a/src/runtime/loongarch64-arch.c
+++ b/src/runtime/loongarch64-arch.c
@@ -27,12 +27,6 @@
 #define BREAK_INST 0x002A0000
 #define BREAK_MASK 0xFFFF8000
 
-os_vm_address_t
-arch_get_bad_addr(int signam, siginfo_t *siginfo, os_context_t *context)
-{
-    return (os_vm_address_t)siginfo->si_addr;
-}
-
 void arch_skip_instruction(os_context_t *context)
 {
     OS_CONTEXT_PC(context) += 4;
diff --git a/src/runtime/mips-arch.c b/src/runtime/mips-arch.c
index 77292d832..aaf7e4445 100644
--- a/src/runtime/mips-arch.c
+++ b/src/runtime/mips-arch.c
@@ -22,15 +22,6 @@
 
 #define INSN_LEN sizeof(unsigned int)
 
-os_vm_address_t
-arch_get_bad_addr(int signam, siginfo_t *siginfo, os_context_t *context)
-{
-    /* Classic CMUCL comment:
-
-       Finding the bad address on the mips is easy. */
-    return (os_vm_address_t)siginfo->si_addr;
-}
-
 static inline unsigned int
 os_context_register(os_context_t *context, int offset)
 {
diff --git a/src/runtime/riscv-arch.c b/src/runtime/riscv-arch.c
index 591599982..6afbc2272 100644
--- a/src/runtime/riscv-arch.c
+++ b/src/runtime/riscv-arch.c
@@ -23,12 +23,6 @@
 #include "breakpoint.h"
 #include "pseudo-atomic.h"
 
-os_vm_address_t
-arch_get_bad_addr(int signam, siginfo_t *siginfo, os_context_t *context)
-{
-    return (os_vm_address_t)siginfo->si_addr;
-}
-
 void arch_skip_instruction(os_context_t *context)
 {
     /* KLUDGE: Other platforms check for trap codes and skip inlined
diff --git a/src/runtime/sparc-arch.c b/src/runtime/sparc-arch.c
index 9bbf985a2..7cfcfbad9 100644
--- a/src/runtime/sparc-arch.c
+++ b/src/runtime/sparc-arch.c
@@ -23,11 +23,6 @@
 #include "breakpoint.h"
 #include "pseudo-atomic.h"
 
-os_vm_address_t arch_get_bad_addr(int sig, siginfo_t *code, os_context_t *context)
-{
-    return (os_vm_address_t)code->si_addr;
-}
-
 void arch_skip_instruction(os_context_t *context)
 {
     OS_CONTEXT_PC(context) = *os_context_npc_addr(context);
diff --git a/src/runtime/sunos-os.c b/src/runtime/sunos-os.c
index 3b62d47b1..0d1902564 100644
--- a/src/runtime/sunos-os.c
+++ b/src/runtime/sunos-os.c
@@ -76,7 +76,8 @@ sigsegv_handler(int signal, siginfo_t *info, os_context_t *context)
 #else
 
 static void
-sigsegv_handler(int signal, siginfo_t *info, os_context_t *context)
+sigsegv_handler(__attribute__((unused)) int signal,
+                siginfo_t *info, os_context_t *context)
 {
     os_vm_address_t addr = arch_get_bad_addr(signal, info, context);
 
diff --git a/src/runtime/x86-64-arch.c b/src/runtime/x86-64-arch.c
index bde54ebf4..39c7cad32 100644
--- a/src/runtime/x86-64-arch.c
+++ b/src/runtime/x86-64-arch.c
@@ -184,17 +184,6 @@ void untune_asm_routines_for_microarch(void)
     memset(consts, 0, sizeof *consts);
     SYMBOL(CALLBACK_WRAPPER_TRAMPOLINE)->value = 0;
 }
-
-#ifndef _WIN64
-os_vm_address_t
-arch_get_bad_addr(int __attribute__((unused)) sig,
-                  siginfo_t *code,
-                  os_context_t __attribute__((unused)) *context)
-{
-    return (os_vm_address_t)code->si_addr;
-}
-#endif
-
 
 /*
  * hacking signal contexts
diff --git a/src/runtime/x86-arch.c b/src/runtime/x86-arch.c
index 05bb3f722..cc8cc887a 100644
--- a/src/runtime/x86-arch.c
+++ b/src/runtime/x86-arch.c
@@ -36,14 +36,6 @@
 #define UD2_INST 0x0b0f
 #define BREAKPOINT_WIDTH 1
 
-#ifndef LISP_FEATURE_WIN32
-os_vm_address_t
-arch_get_bad_addr(int sig, siginfo_t *code, os_context_t *context)
-{
-    return (os_vm_address_t)code->si_addr;
-}
-#endif
-
 
 /*
  * hacking signal contexts

-----------------------------------------------------------------------


hooks/post-receive
-- 
SBCL
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.