On Fri, Nov 22, 2024 at 1:52 PM <jann...@gnu.org> wrote: > Hi! Hi Janneke,
> I have bisected the problem to be in sigaction.o: when linking with > sigaction.o from Debian's libcrt.a it passes, when using Guix's > sigaction.o it fails. Problem solved, you would say? I assume you mean sigreturn.o, not sigaction.o > Anyway, attached are the disassembled versions of Debian's and Guix's > sigaction.o.d. Maybe some of you can spot the significant difference > and where it might come from? >From diff'ing the two files, one of them has 46: 64 44 89 24 25 80 00 mov %r12d,%fs:0x80 after the call to __mach_port_mod_refs (side note: it would be easier to analyze disassembly if you passed --reloc to objdump), where %r12d was previously 6: 41 89 d4 mov %edx,%r12d this corresponds to THREAD_SETMEM (THREAD_SELF, reply_port, sc_reply_port); in the source code. The other one doesn't do this, and seems to clobber %edx without saving it. > Note: on our 32bit Hurd which uses the same patch set for glibc, the > test runs fine. For now I have disabled running check on > findutils...but I'm afraid this test will keep coming back and fail for > every package that uses gnulib :-( Well, sigreturn is arch-specific, i386-gnu and x86_64-gnu (and aarch64-gnu) all have different implementations. Sergey