[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: libc6:m68k 2.28-1



Hi!

On 12/8/18 9:34 AM, John Paul Adrian Glaubitz wrote:
> Working on this now. Bisecting between 2.27 and 2.28 and testing on qemu-system
> now that I have a usable reproducer.

I found the commit which broke glibc on m68k, it is:

b4a5d26d8835d972995f0a0a2f805a8845bafa0b is the first bad commit
commit b4a5d26d8835d972995f0a0a2f805a8845bafa0b
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Thu Nov 2 11:04:18 2017 -0200

    linux: Consolidate sigaction implementation
    
    This patch consolidates all Linux sigaction implementations on the default
    sysdeps/unix/sysv/linux/sigaction.c.  The idea is remove redundant code
    and simplify new ports addition by following the current generic
    Linux User API (UAPI).
    
    The UAPI for new ports defines a generic extensible sigaction struct as:
    
      struct sigaction
      {
        __sighandler_t sa_handler;
        unsigned long sa_flags;
      #ifdef SA_RESTORER
        void (*sa_restorer) (void);
      #endif
        sigset_t sa_mask;
      };
    
    Where SA_RESTORER is just placed for compatibility reasons (news ports
    should not add it).  A similar definition is used on generic
    kernel_sigaction.h.
    
    The user exported sigaction definition is not changed, so for most
    architectures it requires an adjustment to kernel expected one for the
    syscall.
    
    The main changes are:
    
      - All architectures now define and use a kernel_sigaction struct meant
        for the syscall, even for the architectures where the user sigaction
        has the same layout of the kernel expected one (s390-64 and ia64).
        Although it requires more work for these architectures, it simplifies
        the generic implementation. Also, sigaction is hardly a hotspot where
        micro optimization would play an important role.
    
      - The generic kernel_sigaction definition is now aligned with expected
        UAPI one for newer ports, where SA_RESTORER and sa_restorer are not
        expected to be defined.  This means adding kernel_sigaction for
        current architectures that does define it (m68k, nios2, powerpc, s390,
        sh, sparc, and tile) and which rely on previous generic definition.
    
      - Remove old MIPS usage of sa_restorer.  This was removed since 2.6.27
        (2957c9e61ee9c - "[MIPS] IRIX: Goodbye and thanks for all the fish").
    
      - The remaining arch-specific sigaction.c are to handle ABI idiosyncrasies
        (like SPARC kernel ABI for rt_sigaction that requires an additional
        stub argument).
    
    So for new ports the generic implementation should work if its uses
    Linux UAPI.  If SA_RESTORER is still required (due some architecture
    limitation), it should define its own kernel_sigaction.h, define it and
    include generic header (assuming it still uses the default generic kernel
    layout).
    
    Checked on x86_64-linux-gnu, i686-linux-gnu, arm-linux-gnueabihf,
    aarch64-linux-gnu, sparc64-linux-gnu, sparcv9-linux-gnu, powerpc-linux-gnu,
    powerpc64-linux-gnu, ia64-linux-gnu and alpha-linux-gnu.  I also checked the
    build on all remaining affected ABIs.
    
            * sysdeps/unix/sysv/linux/aarch64/sigaction.c: Use default Linux version
            as base implementation.
            * sysdeps/unix/sysv/linux/arm/sigaction.c: Likewise.
            * sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise.
            * sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c: Likewise.
            * sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c: Likewise.
            * sysdeps/unix/sysv/linux/x86_64/sigaction.c: Likewise.
            * sysdeps/unix/sysv/linux/alpha/kernel_sigaction.h: Add include guards,
            remove unrequired definitions and update comments.
            * sysdeps/unix/sysv/linux/kernel_sigaction.h: Likewise.
            * sysdeps/unix/sysv/linux/mips/kernel_sigaction.h: Likewise.
            * sysdeps/unix/sysv/linux/ia64/kernel_sigaction.h: New file.
            * sysdeps/unix/sysv/linux/m68k/kernel_sigaction.h: Likewise.
            * sysdeps/unix/sysv/linux/nios2/kernel_sigaction.h: Likewise.
            * sysdeps/unix/sysv/linux/powerpc/kernel_sigaction: Likewise.
            * sysdeps/unix/sysv/linux/s390/kernel_sigaction.h: Likewise.
            * sysdeps/unix/sysv/linux/sh/kernel_sigaction.h: Likewise.
            * sysdeps/unix/sysv/linux/sparc/kernel_sigaction.h: Likewise.
            * sysdeps/unix/sysv/linux/tile/kernel_sigaction.h: Likewise.
            * sysdeps/unix/sysv/linux/ia64/sigaction.c: Remove file.
            * sysdeps/unix/sysv/linux/mips/sigaction.c: Likewise.
            * sysdeps/unix/sysv/linux/s390/s390-64/sigaction.c: Likewise.
            * sysdeps/unix/sysv/linux/sigaction.c: Add STUB, SET_SA_RESTORER,
            and RESET_SA_RESTORER hooks.

:100644 100644 17506be6a9897f7dd3111752a9de0e0b060cec75 e7abee53e98c0b2e1362cb4913e2f4211b3747fa M      ChangeLog
:040000 040000 fa5f55cc57a1b1ec9a9bd3c5dc32986834e0af78 29aefea5f3bf96c2a78552305a9ee8b862619c92 M      sysdeps

-- 
 .''`.  John Paul Adrian Glaubitz
: :' :  Debian Developer - glaubitz@debian.org
`. `'   Freie Universitaet Berlin - glaubitz@physik.fu-berlin.de
  `-    GPG: 62FF 8A75 84E0 2956 9546  0006 7426 3B37 F5B5 F913


Reply to: