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

Reply via email to