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