From 7387d26ef9663acc6b0815b782dd36b00a6468a6 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Tue, 20 Mar 2018 09:54:20 -0700 Subject: [PATCH] Port to 32-bit sparc64 Problem reported by Ulrich Mueller; fix suggested by Eli Zaretskii and Andreas Schwab (Bug#30855). * src/alloc.c (mark_memory): Call mark_maybe_object only on pointers that are properly aligned for Lisp_Object. --- src/alloc.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/alloc.c b/src/alloc.c index f97b99c0f31..da01173fba2 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -4981,7 +4981,11 @@ mark_memory (void *start, void *end) for (pp = start; (void *) pp < end; pp += GC_POINTER_ALIGNMENT) { mark_maybe_pointer (*(void **) pp); - mark_maybe_object (*(Lisp_Object *) pp); + + verify (alignof (Lisp_Object) % GC_POINTER_ALIGNMENT == 0); + if (alignof (Lisp_Object) == GC_POINTER_ALIGNMENT + || (uintptr_t) pp % alignof (Lisp_Object) == 0) + mark_maybe_object (*(Lisp_Object *) pp); } } -- 2.39.2