Bug#995194: libopenal1: i386 baseline violation

Nicholas Guriev nicholas at guriev.su
Mon Sep 27 20:20:15 BST 2021


Package: libopenal1
Version: 1:1.19.1-2

Dear maintainer,

The library is not usable on the i386 Debian platform which is in fact
i686 with no MMX nor SSE. This is roughly corresponds to Pentium Pro
released in late 1995 (it's even older than me 😌️).

https://wiki.debian.org/ArchitectureSpecificsMemo#i386-1

Consider the following noop program.

   #include <stddef.h>
   #include <AL/alc.h>
   
   int main()
   {
     ALCdevice *device;
   
     device = alcOpenDevice(NULL);
     alcCloseDevice(device);
   
     return 0;
   }

Try to compile it and run with QEMU.

   $ gcc t1.c -lopenal -o t1.out
   $ qemu-i386-static -cpu pentium,+cmov,-mmx,-sse ./t1.out
   qemu: uncaught target signal 4 (Illegal instruction) - core dumped
   Illegal instruction (core dumped)

I expect the program would finish successfully with zero exit status but
it crashes with SIGILL. If I disassemble the instruction with GDB, I see
the library attempts to use an SSE register that is forbidden.

   (gdb) x/i $pc
   => 0x3f6eba9f:  movq   0x240(%ebx,%ebp,8),%xmm0
   
Unfortunately, the debugger is unable to generate backtrace here.

I can see the package was build with -msse2 -mfpmath=sse compiler
switches. Build scripts in general should not set machine dependent
flags. Please remove them. Actually, you can utilize SSE on i386
provided that code consults CPUID at runtime.

https://buildd.debian.org/status/fetch.php?pkg=openal-soft&arch=i386&ver=1%3A1.19.1-2&stamp=1600984802&raw=0

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 228 bytes
Desc: This is a digitally signed message part
URL: <http://alioth-lists.debian.net/pipermail/pkg-games-devel/attachments/20210927/5d43fbc0/attachment.sig>


More information about the Pkg-games-devel mailing list