From 48f19407e04593eca64fc31b69d7a27483f06fe3 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Sun, 25 Dec 2022 13:24:12 +0000 Subject: syscall: fix i386/i686 detection Both __ILP32__ and __x86_64__ need to be defined for a system to be considered x32. Without this, my 32-bit Debian VM on a 64-bit kernel would fail after upgrading to Perl 5.32.1 on Debian 11 (bullseye). --- lib/PublicInbox/Syscall.pm | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'lib/PublicInbox/Syscall.pm') diff --git a/lib/PublicInbox/Syscall.pm b/lib/PublicInbox/Syscall.pm index cecb1247..530ee93b 100644 --- a/lib/PublicInbox/Syscall.pm +++ b/lib/PublicInbox/Syscall.pm @@ -87,7 +87,9 @@ if ($^O eq "linux") { # if we're running on an x86_64 kernel, but a 32-bit process, # we need to use the x32 or i386 syscall numbers. if ($machine eq 'x86_64') { - $machine = $Config{cppsymbols} =~ /\b__ILP32__=1\b/ ? 'x32' : 'i386' + my $s = $Config{cppsymbols}; + $machine = ($s =~ /\b__ILP32__=1\b/ && $s =~ /\b__x86_64__=1\b/) ? + 'x32' : 'i386' } elsif ($machine eq 'mips64') { # similarly for mips64 vs mips $machine = 'mips'; } -- cgit v1.2.3-24-ge0c7