Re: Bug#963108: perl: Please include minor patch to fix FTBFS on m68k
Hi!
On 6/19/20 8:22 AM, John Paul Adrian Glaubitz wrote:
> The attached patch fixes the problem by adding an additional 16 bits padding
> before the opslot member which causes the alignment of opslot to be 32 bits.
Attaching a patch with a better commit message for explanation.
Adrian
--
.''`. John Paul Adrian Glaubitz
: :' : Debian Developer - glaubitz@debian.org
`. `' Freie Universitaet Berlin - glaubitz@physik.fu-berlin.de
`- GPG: 62FF 8A75 84E0 2956 9546 0006 7426 3B37 F5B5 F913
>From 8cd015a5cc230105bdcb8c33db80ef9f06b1c670 Mon Sep 17 00:00:00 2001
From: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
Date: Fri, 19 Jun 2020 08:33:33 +0200
Subject: [PATCH] op.h: Add additional padding to struct opslab to ensure
proper alignment
Perl crashes with a segmentation fault on m68k due to an alignment issue.
On m68k, the natural alignment is 16 bits which causes the opslot
member of "struct opslab" to be aligned at a 16-bit offset.
On other 32-bit and 64-bit architectures, the natural alignment is at
least 32 bits, so the offset is always guaranteed to be 32-bit aligned.
Fix this by adding an additional 16 bits padding before the opslot member
which causes the offset of oplab_slots to be 32-bit aligned.
On architectures which have a natural alignment of at least 32 bits,
the padding does not affect the alignment, offsets or struct size.
---
op.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/op.h b/op.h
index fc21f03cda..fb9f538e23 100644
--- a/op.h
+++ b/op.h
@@ -714,6 +714,7 @@ struct opslab {
# ifdef PERL_DEBUG_READONLY_OPS
bool opslab_readonly;
# endif
+ U16 opslab_padding; /* padding to ensure proper alignment */
OPSLOT opslab_slots; /* slots begin here */
};
--
2.27.0
Reply to: