Subject: bug#56549: closed (Re: bug#56549: 28.1; Compilation failure for lib-src/seccomp-filter.c on x86_64 with 32 bit userspace)

From: [email-masked] (GNU bug Tracking System)
Date: Sat, 16 Jul 2022 10:51:02 +0000

Your bug report

#56549: 28.1; Compilation failure for lib-src/seccomp-filter.c on x86_64 with 32 bit userspace

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
56549: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=56549
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: bug#56549: 28.1; Compilation failure for lib-src/seccomp-filter.c on x86_64 with 32 bit userspace
From: Philipp Stephani <[email-masked]>
To: Ulrich Mueller <[email-masked]>
Cc: [email-masked]
Date: Sat, 16 Jul 2022 12:50:44 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

> Am 15.07.2022 um 21:42 schrieb Ulrich Mueller <[email-masked]>:
> 
>>>>>> On Fri, 15 Jul 2022, Philipp Stephani wrote:
> 
>> I've now tried fixing this with commit db259d8fd369e6036df782d5fe51723a68220074.
> 
> Thank you, this fixes the problem for me.

Thanks, closing this bug then.

Subject: 28.1; Compilation failure for lib-src/seccomp-filter.c on x86_64 with 32 bit userspace
From: Ulrich Mueller <[email-masked]>
To: [email-masked]
Date: Thu, 14 Jul 2022 08:46:25 +0200
List-Id: <debbugs-submit.debbugs.gnu.org>

Forwarding Gentoo bug https://bugs.gentoo.org/857906:

i686-pc-linux-gnu-gcc     -I. -I../src -I../lib -I. -I./../src -I./../lib  -Wl,-O1 -Wl,--as-needed  -mtune=i686 -O2 -pipe  seccomp-filter.c \                           
  -lseccomp  -o seccomp-filter                                                                                                                                          
In file included from seccomp-filter.c:62:                                                                                                                              
seccomp-filter.c: In function 'main':                                                                                                                                   
../lib/verify.h:213:41: error: static assertion failed: "verify (sizeof (long) == 8 && LONG_MIN == INT64_MIN && LONG_MAX == INT64_MAX)"                                 
  213 | # define _GL_VERIFY(R, DIAGNOSTIC, ...) _Static_assert (R, DIAGNOSTIC)                                                                                          
      |                                         ^~~~~~~~~~~~~~                                                                                                          
../lib/verify.h:273:20: note: in expansion of macro '_GL_VERIFY'                                                                                                        
  273 | # define verify(R) _GL_VERIFY (R, "verify (" #R ")", -)                                                                                                         
      |                    ^~~~~~~~~~                                                                                                                                   
seccomp-filter.c:173:3: note: in expansion of macro 'verify'                                                                                                            
  173 |   verify (sizeof (long) == 8 && LONG_MIN == INT64_MIN                                                                                                           
      |   ^~~~~~                                                                                                                                                        
../lib/verify.h:213:41: error: static assertion failed: "verify (sizeof (void *) == 8)"                                                                                 
  213 | # define _GL_VERIFY(R, DIAGNOSTIC, ...) _Static_assert (R, DIAGNOSTIC)                                                                                          
      |                                         ^~~~~~~~~~~~~~
...
seccomp-filter.c:175:3: note: in expansion of macro 'verify'                                                                                                            
  175 |   verify (sizeof (void *) == 8);                                                                                                                                
      |   ^~~~~~                                                                                                                                                        
make[1]: *** [Makefile:435: seccomp-filter] Error 1                                                                                                                     
make[1]: *** Waiting for unfinished jobs....                                                                                                                            
make[1]: Leaving directory '/var/tmp/portage/app-editors/emacs-28.1/work/emacs-28.1/lib-src'                                                                            
make: *** [Makefile:436: lib-src] Error 2

This is on an x86_64 machine with 32 bit userspace.

AFAICS, the problem is that lib-src/seccomp-filter.c (line 173) tests
for a 64 bit userspace:

  verify (sizeof (long) == 8 && LONG_MIN == INT64_MIN
          && LONG_MAX == INT64_MAX);

However, lib_src/Makefile.in (line 203) tests for 64 bit hardware:

ifeq ($(shell uname -m),x86_64)
[...]
SECCOMP_FILTER=1
endif