This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[glibc/fw/builtin-syscalls-4] (53 commits) build-many-glibcs.py: Fix “glibcs i686-gnu --strip”


The branch 'fw/builtin-syscalls-4' was updated to point to:

 fd391cc... build-many-glibcs.py: Fix â??glibcs i686-gnu --stripâ??

It previously pointed to:

 7244a55... build-many-glibcs.py: Implement update-syscalls command

Diff:

!!! WARNING: THE FOLLOWING COMMITS ARE NO LONGER ACCESSIBLE (LOST):
-------------------------------------------------------------------

  7244a55... build-many-glibcs.py: Implement update-syscalls command
  19fa8f8... build-many-glibcs.py: Introduce glibc build policy classes
  ca418a6... build-many-glibcs.py: Introduce LinuxHeadersPolicyForBuild
  0e0ad75... Linux: Use system call tables during build
  8df3fd4... Linux: Add tables with system call numbers

commit 7244a55302d9fcdf606df7e607f997b244e93d14
Author: Florian Weimer <fweimer@redhat.com>
Date:   Mon Dec 16 18:42:52 2019 +0100

    build-many-glibcs.py: Implement update-syscalls command
    
    This command uses pre-built compilers to re-install the Linux headers
    from the current sources into a temporary location and runs glibc's
    â??make update-syscalls-listsâ?? against that.  This updates the glibc
    source tree with the current system call numbers.

commit 19fa8f81c1c3aa6d92240b91f9b4d91d1b59a6e8
Author: Florian Weimer <fweimer@redhat.com>
Date:   Mon Dec 16 13:43:51 2019 +0100

    build-many-glibcs.py: Introduce glibc build policy classes
    
    The new classes GlibcPolicyForCompiler and GlibcPolicyForBuild allow
    customization of the Glibc.build_glibc method, replacing the existing
    for_compiler flag.

commit ca418a69d51debde01de9dbb519215a79e674961
Author: Florian Weimer <fweimer@redhat.com>
Date:   Mon Dec 16 13:00:58 2019 +0100

    build-many-glibcs.py: Introduce LinuxHeadersPolicyForBuild
    
    And move install_linux_headers to the top level.

commit 0e0ad752c7bede0ef15eba47090e2f16bc3439ce
Author: Florian Weimer <fweimer@redhat.com>
Date:   Fri May 31 13:47:27 2019 +0200

    Linux: Use system call tables during build
    
    Use <arch-syscall.h> instead of <asm/unistd.h> to obtain the system
    call numbers.  A few direct includes of <asm/unistd.h> need to be
    removed (if the system call numbers are already provided indirectly
    by <sysdep.h>) or replaced with <sys/syscall.h>.
    
    Current Linux headers for alpha define the required system call names,
    so the _NR_* hacks are no longer needed.  (pread vs pread64, pwrite vs
    pwrite64 is already handled by the system call wrapper.)  There are more
    such cleanup opportunities for other architectures, but part of this
    alpha cleanup is needed to fix a macro redefinition error which breaks
    the build.
    
    For the 32-bit arm architecture, eliminate the INTERNAL_SYSCALL_ARM
    macro, now that we have regular system call names for cacheflush and
    set_tls.
    
    For ia64, it is desirable to use <asm/break.h> directly to obtain
    the break number for system calls (which is not a system call number
    itself).  This requires replacing __BREAK_SYSCALL with
    __IA64_BREAK_SYSCALL because the former is defined as an alias in
    <asm/unistd.h>, but not in <asm/break.h>.

commit 8df3fd4b9ade03b3930853e67722546e05e0abd4
Author: Florian Weimer <fweimer@redhat.com>
Date:   Fri May 31 14:15:34 2019 +0200

    Linux: Add tables with system call numbers
    
    The new tables are currently only used for consistency checks
    with the installed kernel headers and the architecture-independent
    system call names table.  They are based on Linux 5.4.
    
    The goal is to use these architecture-specific tables to ensure
    that system call wrappers are available irrespective of the version
    of the installed kernel headers.
    
    The tables are formatted in the form of C header files so that they
    can be used directly in an #include directive, without external
    preprocessing.  (External preprocessing of a plain table file
    would introduce cross-subdirectory dependency issues.)  However,
    the intent is that they can still be treated as tables and processed
    by simple tools.
    
    The irregular system call names on 32-bit arm add a complication.
    The <fixup-asm-unistd.h> header is introduced to work around that,
    and the system calls are listed under regular names in the
    <arch-syscall.h> file.
    
    A command, â??make update-syscalls-listâ??, is added to patch the glibc
    sources with data from the current kernel headers.


Summary of changes (added commits):
-----------------------------------

  fd391cc... build-many-glibcs.py: Fix â??glibcs i686-gnu --stripâ??
  da48ae8... Linux: Remove pread/pread64, pwrite/pwrite64 kludges from <
  e50ca00... build-many-glibcs.py: Implement update-syscalls command
  465bda1... build-many-glibcs.py: Introduce glibc build policy classes
  1a5bb7f... build-many-glibcs.py: Introduce LinuxHeadersPolicyForBuild
  f98c450... Linux: Use system call tables during build
  f4723b2... Linux: Add tables with system call numbers
  0915363... alpha: Set wait4 as cancellation entrypoint
  d99b500... lv_LV locale: Correct the time part of d_t_fmt (bug 25324)
  20a740b... km_KH locale: Use "%M" instead of "m" in d_t_fmt (bug 25323
  653d74f... hurd: Global signal disposition
  eb87a46... hurd sendmsg: Fix warning on calling CMSG_*HDR
  4288c54... hurd: Signal code refactoring
  a678c13... hurd: Add getcontext, makecontext, setcontext, swapcontext
  344e755... hurd: Support sending file descriptors over Unix sockets
  9ae967b... ldbl-128ibm-compat: Do not mix -mabi=*longdouble and -mlong
  5d73c96... ldbl-128ibm-compat: Compiler flags for stdio functions
  1ef9b6e... Do not redirect calls to __GI_* symbols, when redirecting t
  863d775... aarch64: add default memcpy version for kunpeng920
  10df95c... aarch64: ifunc rename for kunpeng
  64297d4... aarch64: Modify error-shown comments for strcpy
  dc86199... linux: Consolidate sigprocmask
  58bd592... Fix return code for __libc_signal_* functions
  11519fd... nptl: Remove duplicate internal __SIZEOF_PTHREAD_MUTEX_T (B
  b8c210b... mnw_MM, my_MM, and shn_MM locales: Do not use %Op
  f8cd102... Avoid compat symbols for totalorder in powerpc64le IEEE lon
  3021e78... ldbl-128ibm-compat: Add *cvt functions
  dce4253... Refactor *cvt functions implementation (2/2)
  e18a305... Refactor *cvt functions implementation (1/2)
  57e687c... Add exception-based flags for wait4
  525de03... aarch64: Optimized memset for Kunpeng processor.
  c215076... aarch64: Optimized strlen for strlen_asimd
  0db8e7b... aarch64: Add Huawei Kunpeng to tunable cpu list
  a761180... aarch64: Optimized implementation of memrchr
  2911cb6... aarch64: Optimized implementation of strnlen
  0237b61... aarch64: Optimized implementation of strcpy
  233efd4... aarch64: Optimized implementation of memcmp
  442d9c9... Consolidate wait3 implementations
  8487915... Implement waitpid in terms of wait4
  9b2cf94... linux: Use waitid on wait4 if __NR_wait4 is not defined
  c5cbdac... Implement wait in terms of waitpid
  b633cdf... nptl: Move waitpid implementation to libc
  c97f9a5... nptl: Move wait implementation to libc
  478f707... Remove __waitpid_nocancel
  6a265e5... Fix test isolation for elf/tst-ifunc-fault-lazy, elf/tst-if
  1b132d5... Fix __libc_signal_block_all on sparc64
  0331bff... powerpc: Do not run IFUNC resolvers for LD_DEBUG=unused [BZ
  3dcad81... hurd: Do not make sigprocmask available in ld.so
  3aec0c3... build-many-glibcs.py: Do not build C++ PCHs by default
  a45244c... hurd: Make getrandom honour GRND_NONBLOCK
  a059f95... tunables: report sbrk() failure
  a2e487c... build-many-glibcs.py: Add mipsisa64r6el-linux-gnu target
  020b2a9... mips: Do not include hi and lo in __SYSCALL_CLOBBERS for R6

commit fd391ccb22fbb8db584025c944566a846ac17f9c
Author: Florian Weimer <fweimer@redhat.com>
Date:   Wed Dec 18 12:02:20 2019 +0100

    build-many-glibcs.py: Fix â??glibcs i686-gnu --stripâ??
    
    Hurd uses an empty prefix, so the linker scripts end up in /lib, the
    find command picked them up, and stripping them failed because they
    are not ELF files.

commit da48ae8f5c7983c118befcf121235235fedaad56
Author: Florian Weimer <fweimer@redhat.com>
Date:   Wed Dec 18 10:49:20 2019 +0100

    Linux: Remove pread/pread64, pwrite/pwrite64 kludges from <sysdep.h>
    
    Since the switch away from auto-generated wrappers for these system
    calls, the kludge is already included in the C source file of the
    system call wrapper.

commit e50ca00adf26e532226ba117ef7cbe4ed07bffd2
Author: Florian Weimer <fweimer@redhat.com>
Date:   Mon Dec 16 18:42:52 2019 +0100

    build-many-glibcs.py: Implement update-syscalls command
    
    This command uses pre-built compilers to re-install the Linux headers
    from the current sources into a temporary location and runs glibc's
    â??make update-syscalls-listsâ?? against that.  This updates the glibc
    source tree with the current system call numbers.

commit 465bda156727907db19b88f284d54d9db9356b6b
Author: Florian Weimer <fweimer@redhat.com>
Date:   Mon Dec 16 13:43:51 2019 +0100

    build-many-glibcs.py: Introduce glibc build policy classes
    
    The new classes GlibcPolicyForCompiler and GlibcPolicyForBuild allow
    customization of the Glibc.build_glibc method, replacing the existing
    for_compiler flag.

commit 1a5bb7fd261e9347027faba5e1e2170162a14144
Author: Florian Weimer <fweimer@redhat.com>
Date:   Mon Dec 16 13:00:58 2019 +0100

    build-many-glibcs.py: Introduce LinuxHeadersPolicyForBuild
    
    And move install_linux_headers to the top level.

commit f98c450aeca9eab2c87f8912f51fabefb21e1e32
Author: Florian Weimer <fweimer@redhat.com>
Date:   Fri May 31 13:47:27 2019 +0200

    Linux: Use system call tables during build
    
    Use <arch-syscall.h> instead of <asm/unistd.h> to obtain the system
    call numbers.  A few direct includes of <asm/unistd.h> need to be
    removed (if the system call numbers are already provided indirectly
    by <sysdep.h>) or replaced with <sys/syscall.h>.
    
    Current Linux headers for alpha define the required system call names,
    so most of the _NR_* hacks are no longer needed.  For the 32-bit arm
    architecture, eliminate the INTERNAL_SYSCALL_ARM macro, now that we
    have regular system call names for cacheflush and set_tls.  There are
    more such cleanup opportunities for other architectures, but these
    cleanups are required to avoid macro redefinition errors during the
    build.
    
    For ia64, it is desirable to use <asm/break.h> directly to obtain
    the break number for system calls (which is not a system call number
    itself).  This requires replacing __BREAK_SYSCALL with
    __IA64_BREAK_SYSCALL because the former is defined as an alias in
    <asm/unistd.h>, but not in <asm/break.h>.

commit f4723b2885342da5d5afdbcf0d03769f386e08bb
Author: Florian Weimer <fweimer@redhat.com>
Date:   Fri May 31 14:15:34 2019 +0200

    Linux: Add tables with system call numbers
    
    The new tables are currently only used for consistency checks
    with the installed kernel headers and the architecture-independent
    system call names table.  They are based on Linux 5.4.
    
    The goal is to use these architecture-specific tables to ensure
    that system call wrappers are available irrespective of the version
    of the installed kernel headers.
    
    The tables are formatted in the form of C header files so that they
    can be used directly in an #include directive, without external
    preprocessing.  (External preprocessing of a plain table file
    would introduce cross-subdirectory dependency issues.)  However,
    the intent is that they can still be treated as tables and can be
    processed by simple tools.
    
    The irregular system call names on 32-bit arm add a complication.
    The <fixup-asm-unistd.h> header is introduced to work around that,
    and the system calls are listed under regular names in the
    <arch-syscall.h> file.
    
    A make target, update-syscalls-list, is added to patch the glibc
    sources with data from the current kernel headers.

commit 09153638cfef9166586b0c21e852ea0d6f15a0fd
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Fri Dec 27 17:21:56 2019 -0300

    alpha: Set wait4 as cancellation entrypoint
    
    Since both wait and waitpid are implemented on top of wait4.  It fixes
    nptl/tst-cancel{x}{4,5,7}.
    
    Checked on alpha-linux-gnu.

commit d99b500e3da713416ee8bff8f3f9799411c811a2
Author: RafaÅ? LużyÅ?ski <digitalfreak@lingonborough.com>
Date:   Mon Dec 30 11:42:46 2019 +0100

    lv_LV locale: Correct the time part of d_t_fmt (bug 25324)
    
    Currently d_t_fmt formats time as "plkst. %H un %M".  A quick Google
    search says that "plkst." means "oâ??clock" and "un" means "and".
    Also this format does not display seconds.
    
    CLDR does not mention anything like that.  We have no reason to use
    anything different than "%H:%M:%S".

commit 20a740b2b27b6d486985fa9c89011ab301ac16a6
Author: RafaÅ? LużyÅ?ski <digitalfreak@lingonborough.com>
Date:   Mon Dec 30 11:28:37 2019 +0100

    km_KH locale: Use "%M" instead of "m" in d_t_fmt (bug 25323)
    
    A quick analysis suggests that the original author meant "%M" (minutes
    format specifier) instead of "m" which is just a literal "m" letter.

commit 653d74f12abea144219af00400ed1f1ac5dfa79f
Author: Jeremie Koenig <jk@jk.fr.eu.org>
Date:   Sun Dec 29 17:59:55 2019 +0100

    hurd: Global signal disposition
    
    This adds _hurd_sigstate_set_global_rcv used by libpthread to enable
    POSIX-confirming behavior of signals on a per-thread basis.
    
    This also provides a sigstate destructor _hurd_sigstate_delete, and a
    global process signal state, which needs to be locked and check when
    global disposition is enabled, thus the addition of _hurd_sigstate_lock
    _hurd_sigstate_actions _hurd_sigstate_pending _hurd_sigstate_unlock helpers.
    
    This also updates all the glibc code accordingly.
    
    This also drops support for get_int(INIT_SIGMASK), which did not make sense
    any more since we do not have a single signal thread any more.
    
    During fork/spawn, this also reinitializes the child global sigstate's
    lock. That cures an issue that would very rarely cause a deadlock in the
    child in fork, tries to unlock ss' critical section lock at the end of
    fork.  This will typically (always?) be observed in /bin/sh, which is not
    surprising as that is the foremost caller of fork.
    
    To reproduce an intermediate state, add an endless loop if
    _hurd_global_sigstate is locked after __proc_dostop (cast through
    volatile); that is, while still being in the fork's parent process.
    
    When that triggers (use the libtool testsuite), the signal thread has
    already locked ss (which is _hurd_global_sigstate), and is stuck at
    hurdsig.c:685 in post_signal, trying to lock _hurd_siglock (which the
    main thread already has locked and keeps locked until after
    __task_create).  This is the case that ss->thread == MACH_PORT_NULL, that
    is, a global signal.  In the main thread, between __proc_dostop and
    __task_create is the __thread_abort call on the signal thread which would
    abort any current kernel operation (but leave ss locked).  Later in fork,
    in the parent, when _hurd_siglock is unlocked in fork, the parent's
    signal thread can proceed and will unlock eventually the global sigstate.
    In the client, _hurd_siglock will likewise be unlocked, but the global
    sigstate never will be, as the client's signal thread has been configured
    to restart execution from _hurd_msgport_receive.  Thus, when the child
    tries to unlock ss' critical section lock at the end of fork, it will
    first lock the global sigstate, will spin trying to lock it, which can
    never be successful, and we get our deadlock.
    
    Options seem to be:
    
      * Move the locking of _hurd_siglock earlier in post_signal -- but that
        may generally impact performance, if this locking isn't generally
        needed anyway?
    
        On the other hand, would it actually make sense to wait here until we
        are not any longer in a critical section (which is meant to disable
        signal delivery anyway (but not for preempted signals?))?
    
      * Clear the global sigstate in the fork's child with the rationale that
        we're anyway restarting the signal thread from a clean state.  This
        has now been implemented.
    
    Why has this problem not been observed before Jérémie's patches?  (Or has
    it?  Perhaps even more rarely?)  In _S_msg_sig_post, the signal is now
    posted to a *global receiver thread*, whereas previously it was posted to
    the *designated signal-receiving thread*.  The latter one was in a
    critical section in fork, so didn't try to handle the signal until after
    leaving the critical section?  (Not completely analyzed and verified.)
    
    Another question is what the signal is that is being received
    during/around the time __proc_dostop executes.

commit eb87a46c5630580d9556907dc8a61b298b462919
Author: Samuel Thibault <samuel.thibault@ens-lyon.org>
Date:   Sun Dec 29 17:47:52 2019 +0100

    hurd sendmsg: Fix warning on calling CMSG_*HDR

commit 4288c548da30c5b70d3b531e425d271cf12c51d3
Author: Jeremie Koenig <jk@jk.fr.eu.org>
Date:   Sun Dec 29 17:18:04 2019 +0100

    hurd: Signal code refactoring
    
    This should not change the current behavior, although this fixes a few
    minor bugs which were made apparent in the process of global signal
    disposition work:
    
    - Split into more functions
    - Scope variables more restrictively
    - Split out inner functions
    - refactor check_pending_signals
    - make sigsuspend POSIX-conformant.
    - fix uninitialized act value.

commit a678c13b8f9fa67c6cffe6ecf4ba1d5e53479e1b
Author: Thomas Schwinge <thomas@codesourcery.com>
Date:   Sun Dec 29 16:04:51 2019 +0100

    hurd: Add getcontext, makecontext, setcontext, swapcontext
    
    Adapted from the Linux x86 functions.
    
    Not thoroughly tested, but manual testing as well as glibc tests look fine, and
    manual -lpthread testing also looks fine (within the given bounds for a new
    stack to be used with makecontext).
    
    This has also been in use in Debian since 2013.

commit 344e755248ce02c0f8d095d11cc49e340703d926
Author: Emilio Pozuelo Monfort <pochu27@gmail.com>
Date:   Sun Dec 29 16:34:20 2019 +0100

    hurd: Support sending file descriptors over Unix sockets

commit 9ae967bf45aaa190687ae219a589e0c542669a51
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Tue Sep 10 08:05:03 2019 -0500

    ldbl-128ibm-compat: Do not mix -mabi=*longdouble and -mlong-double-128
    
    Some compiler versions, e.g. GCC 7, complain when -mlong-double-128 is
    used together with -mabi=ibmlongdouble or -mabi=ieeelongdouble,
    producing the following error message:
    
      cc1: error: â??-mabi=ibmlongdoubleâ?? requires â??-mlong-double-128â??
    
    This patch removes -mlong-double-128 from the compilation lines that
    explicitly request -mabi=*longdouble.
    
    Tested for powerpc64le.
    
    Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>

commit 5d73c96f64e66732bcf1598f2832c9837075f13e
Author: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
Date:   Mon Jul 30 12:04:40 2018 -0300

    ldbl-128ibm-compat: Compiler flags for stdio functions
    
    Some of the files that provide stdio.h and wchar.h functions have a
    filename prefixed with 'io', such as 'iovsprintf.c'.  On platforms that
    imply ldbl-128ibm-compat, these files must be compiled with the flag
    -mabi=ibmlongdouble.  This patch adds this flag to their compilation.
    
    Notice that this is not required for the other files that provide
    similar functions, because filenames that are not prefixed with 'io'
    have ldbl-128ibm-compat counterparts in the Makefile, which already adds
    -mabi=ibmlongdouble to them.
    
    Reviewed-by: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>

commit 1ef9b6e0bf1268050e74087c4f6bd056263a28c7
Author: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
Date:   Sun Oct 20 16:00:30 2019 -0500

    Do not redirect calls to __GI_* symbols, when redirecting to *ieee128
    
    On platforms where long double has IEEE binary128 format as a third
    option (initially, only powerpc64le), many exported functions are
    redirected to their __*ieee128 equivalents.  This redirection is
    provided by installed headers such as stdio-ldbl.h, and is supposed to
    work correctly with user code.
    
    However, during the build of glibc, similar redirections are employed,
    in internal headers, such as include/stdio.h, in order to avoid extra
    PLT entries.  These redirections conflict with the redirections to
    __*ieee128, and must be avoided during the build.  This patch protects
    the second redirections with a test for __LONG_DOUBLE_USES_FLOAT128, a
    new macro that is defined to 1 when functions that deal with long double
    typed values reuses the _Float128 implementation (this is currently only
    true for powerpc64le).
    
    Tested for powerpc64le, x86_64, and with build-many-glibcs.py.
    
    Co-authored-by: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
    Reviewed-by: Florian Weimer <fweimer@redhat.com>

commit 863d775c481704baaa41855fc93e5a1ca2dc6bf6
Author: Xuelei Zhang <zhangxuelei4@huawei.com>
Date:   Fri Dec 27 11:59:12 2019 -0300

    aarch64: add default memcpy version for kunpeng920
    
    Checked on aarch64-linux-gnu.

commit 10df95cdaf049e77fa84a71359e210e74901057d
Author: Xuelei Zhang <zhangxuelei4@huawei.com>
Date:   Fri Dec 27 11:58:19 2019 -0300

    aarch64: ifunc rename for kunpeng
    
    Rename ifunc for kunpeng to kunpeng920, and modify the corresponding
    function files including IS_KUNPENG920 judgement.
    
    Checked on aarch64-linux-gnu.

commit 64297d49b37f637a82faedd16bf8860e0ab31606
Author: Xuelei Zhang <zhangxuelei4@huawei.com>
Date:   Fri Dec 27 11:57:24 2019 -0300

    aarch64: Modify error-shown comments for strcpy
    
    Checked on aarch64-linux-gnu.

commit dc8619947730bbff50fdc3f05761af71c46b641b
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Thu Dec 5 08:03:21 2019 -0300

    linux: Consolidate sigprocmask
    
    All architectures now uses the Linux generic implementation which
    uses __NR_rt_sigprocmask.
    
    Checked on x86_64-linux-gnu, sparc64-linux-gnu, ia64-linux-gnu,
    s390x-linux-gnu, and alpha-linux-gnu.

commit 58bd592536cbf491ff6f89b73b5c95beb4859e42
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Thu Dec 5 14:56:06 2019 -0300

    Fix return code for __libc_signal_* functions
    
    The functions do not fail regardless of the argument value.  Also, for
    Linux the return value is not correct on some platforms due the missing
    usage of INTERNAL_SYSCALL_ERROR_P / INTERNAL_SYSCALL_ERRNO macros.
    
    Checked on x86_64-linux-gnu, i686-linux-gnu, and sparc64-linux-gnu.

commit 11519fd0c908df2dad50f36a48eb4d0d12ea83a8
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Thu Dec 26 17:03:13 2019 -0300

    nptl: Remove duplicate internal __SIZEOF_PTHREAD_MUTEX_T (BZ#25241)
    
    Checked on x86_64-linux-gnu, i686-linux-gnu, and x86_64-linux-gnu-x32.

commit b8c210bcc74840d24c61d39bde15bea9daf3e271
Author: RafaÅ? LużyÅ?ski <digitalfreak@lingonborough.com>
Date:   Thu Dec 19 21:57:55 2019 +0100

    mnw_MM, my_MM, and shn_MM locales: Do not use %Op
    
    The "O" modifier does nothing when used with "%p" so let's better not
    use it at all and replace "%Op" with "%p".

commit f8cd1020817fd6b69446b4308b496de999934ef8
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Mon Sep 9 12:59:46 2019 -0500

    Avoid compat symbols for totalorder in powerpc64le IEEE long double
    
    On powerpc64le, the libm_alias_float128_other_r_ldbl macro is
    used to create an alias between totalorderf128 and __totalorderlieee128,
    as well as between the totalordermagf128 and __totalordermaglieee128.
    
    However, the totalorder* and totalordermag* functions changed their
    parameter type since commit ID 42760d764649 and got compat symbols for
    their old versions.  With this change, the aforementioned macro would
    create two conflicting aliases for __totalorderlieee128 and
    __totalordermaglieee128.
    
    This patch avoids the creation of the alias between the IEEE long double
    symbols (__totalorderl*ieee128) and the compat symbols, because the IEEE
    long double functions have never been exported thus don't need such
    compat symbol.
    
    Tested for powerpc64le.
    
    Reviewed-by: Joseph Myers <joseph@codesourcery.com>

commit 3021e781783d6fe12de4697b0d98957bc911cad3
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:48:24 2019 -0300

    ldbl-128ibm-compat: Add *cvt functions
    
    This patch adds IEEE long double versions of q*cvt* functions for
    powerpc64le.  Unlike all other long double to/from string conversion
    functions, these do not rely on internal functions that can take
    floating-point numbers with different formats and act on them
    accordingly, instead, the related files are rebuilt with the
    -mabi=ieeelongdouble compiler flag set.
    
    Having -mabi=ieeelongdouble passed to the compiler causes the object
    files to be marked with a .gnu_attribute that is incompatible with the
    .gnu_attribute in files built with -mabi=ibmlongdouble (the default).
    The difference causes error messages similar to the following:
    
      ld: libc_pic.a(s_isinfl.os) uses IBM long double,
          libc_pic.a(ieee128-qefgcvt_r.os) uses IEEE long double.
      collect2: error: ld returned 1 exit status
      make[2]: *** [../Makerules:649: libc_pic.os] Error 1
    
    Although this warning is useful in other situations, the library
    actually needs to have functions with different long double formats, so
    .gnu_attribute generation is explicitly disabled for these files with
    the use of -mno-gnu-attribute.
    
    Tested for powerpc64le on the branch that actually enables the
    sysdeps/ieee754/ldbl-128ibm-compat for powerpc64le.
    
    Reviewed-by: Paul E. Murphy <murphyp@linux.ibm.com>

commit dce425341171ec5784c87165e23883630971bd97
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Tue Nov 26 14:48:49 2019 -0300

    Refactor *cvt functions implementation (2/2)
    
    This patch refactors the *cvt functions implementation in a way that
    makes it easier to re-use them for implementing the IEEE long double on
    powerpc64le.  By removing the macros that generate the function names
    (APPEND combined with FUNC_PREFIX), the new code makes it easier to
    define new function names, such as __qecvtieee128.
    
    Tested that installed stripped binaries for all build-many-glibcs
    targets remain identical before and after this patch.  Also tested for
    powerpc64le and x86_64.
    
    Reviewed-by: Paul E. Murphy <murphyp@linux.ibm.com>

commit e18a305777adf60c2378ac864a350319269a29fa
Author: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
Date:   Thu Jul 11 11:48:08 2019 -0300

    Refactor *cvt functions implementation (1/2)
    
    This patch refactors the *cvt functions implementation in a way that
    makes it easier to re-use them for implementing the IEEE long double on
    powerpc64le.  By splitting the implementation per se in one file
    (efgcvt-template.c) and the alias definitions in others (e.g. efgcvt.c),
    the new code makes it easier to define new function names, such as
    __qecvtieee128.
    
    Tested that installed stripped binaries for all build-many-glibcs
    targets remain identical before and after this patch.  Also tested for
    powerpc64le and x86_64.
    
    Reviewed-by: Paul E. Murphy <murphyp@linux.ibm.com>

commit 57e687c6d459edba77efe360014d4adec97d1a5c
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Fri Dec 20 09:59:11 2019 -0300

    Add exception-based flags for wait4
    
    It fixes the tst-cancelx4 and tst-cancelx5 on sparc{64,v9}.
    
    Checked on sparc64-linux-gnu and sparcv9-linux-gnu.

commit 525de033a9d19bc79ce353745d14927a793dd4e8
Author: Xuelei Zhang <zhangxuelei4@huawei.com>
Date:   Thu Dec 19 15:26:33 2019 +0000

    aarch64: Optimized memset for Kunpeng processor.
    
    Due to the branch prediction issue of Kunpeng processor, we found
    memset_generic has poor performance on middle sizes setting, and so
    we reconstructed the logic, expanded the loop by 4 times in set_long
    to solve the problem, even when setting below 1K sizes have benefit.
    
    Another change is that DZ_ZVA seems no work when setting zero, so we
    discarded it and used set_long to set zero instead. Fewer branches and
    predictions also make the zero case have slightly improvement.
    
    Checked on aarch64-linux-gnu.
    
    Reviewed-by: Wilco Dijkstra <Wilco.Dijkstra@arm.com>

commit c2150769d015dca1805334af7743829f1e4c0b6a
Author: Xuelei Zhang <zhangxuelei4@huawei.com>
Date:   Thu Dec 19 13:41:40 2019 +0000

    aarch64: Optimized strlen for strlen_asimd
    
    Optimize the strlen implementation by using vector operations and
    loop unrolling in main loop.Compared to __strlen_generic,it reduces
    latency of cases in bench-strlen by 7%~18% when the length of src
    is greater than 128 bytes, with gains throughout the benchmark.
    
    Checked on aarch64-linux-gnu.
    
    Reviewed-by: Wilco Dijkstra <Wilco.Dijkstra@arm.com>

commit 0db8e7b36665fa90c53161742dedab21d786924c
Author: Xuelei Zhang <zhangxuelei4@huawei.com>
Date:   Thu Dec 19 14:55:06 2019 +0000

    aarch64: Add Huawei Kunpeng to tunable cpu list
    
    Kunpeng processer is a 64-bit Arm-compatible CPU released by Huawei,
    and we have already signed a copyright assignement with the FSF.
    
    This patch adds its to cpu list, and related macro for IFUNC.
    
    Checked on aarch64-linux-gnu.
    
    Reviewed-by: Szabolcs Nagy <Szabolcs.Nagy@arm.com>

commit a7611806d5f4163656a2f5d21d349b5e7c4170e0
Author: Xuelei Zhang <zhangxuelei4@huawei.com>
Date:   Thu Dec 19 14:53:29 2019 +0000

    aarch64: Optimized implementation of memrchr
    
    Considering the excellent performance of memchr.S on glibc 2.30, the
    same algorithm is used to find chrin. Compared to memrchr.c, this
    method with memrchr.S achieves an average performance improvement
    of 58% based on benchtest and its extension cases.
    
    Checked on aarch64-linux-gnu.
    
    Reviewed-by: Wilco Dijkstra <Wilco.Dijkstra@arm.com>

commit 2911cb68ed3d6c515ad1979237e74e1fefab3674
Author: Xuelei Zhang <zhangxuelei4@huawei.com>
Date:   Thu Dec 19 13:49:46 2019 +0000

    aarch64: Optimized implementation of strnlen
    
    Optimize the strlen implementation by using vector operations and
    loop unrooling in main loop. Compared to aarch64/strnlen.S, it
    reduces latency of cases in bench-strnlen by 11%~24% when the length
    of src is greater than 64 bytes, with gains throughout the benchmark.
    
    Checked on aarch64-linux-gnu.
    
    Reviewed-by: Wilco Dijkstra <Wilco.Dijkstra@arm.com>

commit 0237b61526e716fa9597f521643908a4fda3b46a
Author: Xuelei Zhang <zhangxuelei4@huawei.com>
Date:   Thu Dec 19 13:08:11 2019 +0000

    aarch64: Optimized implementation of strcpy
    
    Optimize the strcpy implementation by using vector loads and operations
    in main loop.Compared to aarch64/strcpy.S, it reduces latency of cases
    in bench-strlen by 5%~18% when the length of src is greater than 64
    bytes, with gains throughout the benchmark.
    
    Checked on aarch64-linux-gnu.
    
    Reviewed-by: Wilco Dijkstra <Wilco.Dijkstra@arm.com>

commit 233efd433d847e69480fe587c4c29a32fe554174
Author: Xuelei Zhang <zhangxuelei4@huawei.com>
Date:   Thu Dec 19 12:31:59 2019 +0000

    aarch64: Optimized implementation of memcmp
    
    The loop body is expanded from a 16-byte comparison to a 64-byte
    comparison, and the usage of ldp is replaced by the Post-index
    mode to the Base plus offset mode. Hence, compare can faster 18%
    around > 128 bytes in all.
    
    Checked on aarch64-linux-gnu.
    
    Reviewed-by: Wilco Dijkstra <Wilco.Dijkstra@arm.com>

commit 442d9c9c677804287a54b10d5fa5e58a9cdd338d
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Thu Nov 14 11:37:10 2019 -0300

    Consolidate wait3 implementations
    
    The generic one calls wait4.
    
    Checked on x86_64-linux-gnu.

commit 848791557bc4dbf783b03f2b8af77f71c909ed57
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Wed Nov 13 17:57:00 2019 -0300

    Implement waitpid in terms of wait4
    
    This also consolidate all waitpid implementations.
    
    Checked on x86_64-linux-gnu.

commit 9b2cf9482a9397c4711c9e7f42f8d718b6306bdc
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Wed Nov 13 17:45:13 2019 -0300

    linux: Use waitid on wait4 if __NR_wait4 is not defined
    
    If the wait4 syscall is not available (such as y2038 safe 32-bit
    systems) waitid should be used instead.  However prior Linux 5.4
    waitid is not a full superset of other wait syscalls, since it
    does not include support for waiting for the current process group.
    
    It is possible to emulate wait4 by issuing an extra syscall to get
    the current process group, but it is inherent racy: after the current
    process group is received and before it is passed to waitid a signal
    could arrive causing the current process group to change.
    
    So waitid is used if wait4 is not defined iff the build is
    enabled with a minimum kernel if 5.4+.  The new assume
    __ASSUME_WAITID_PID0_P_PGID is added and an error is issued if waitid
    can not be implemented by either __NR_wait4 or
    __NR_waitid && __ASSUME_WAITID_PID0_P_PGID.
    
    Checked on x86_64-linux-gnu and i686-linux-gnu.
    
    Co-authored-by: Alistair Francis <alistair.francis@wdc.com>

commit c5cbdacb8acec54e140c879393c8c7dd658c3488
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Wed Nov 13 13:30:46 2019 -0300

    Implement wait in terms of waitpid
    
    The POSIX implementation is used as default and both BSD and Linux
    version are removed.  It simplifies the implementation for
    architectures that do not provide either __NR_waitpid or
    __NR_wait4.
    
    Checked on x86_64-linux-gnu and powerpc64le-linux-gnu.

commit b633cdff2cd7259baea4d115cce0a818542f6f98
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Wed Nov 13 11:05:02 2019 -0300

    nptl: Move waitpid implementation to libc
    
    Checked on x86_64-linux-gnu and powerpc64le-linux-gnu.

commit c97f9a5979e6c8dd4d005a01e5b1254ae4007362
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Wed Nov 13 11:02:13 2019 -0300

    nptl: Move wait implementation to libc
    
    Checked on x86_64-linux-gnu and powerpc64le-linux-gnu.

commit 478f70780f28a270205ddbe8cb6ec29cb41d586e
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Wed Nov 13 10:42:05 2019 -0300

    Remove __waitpid_nocancel
    
    It enables and disables cancellation with pthread_setcancelstate
    before calling the waitpid.  It simplifies the waitpid implementation
    for architectures that do not provide either __NR_waitpid or
    __NR_wait4.
    
    Checked on x86_64-linux-gnu.

commit 6a265e577e8d7c9c950a793139df19b2d050ce5b
Author: Florian Weimer <fweimer@redhat.com>
Date:   Thu Dec 19 14:45:50 2019 +0100

    Fix test isolation for elf/tst-ifunc-fault-lazy, elf/tst-ifunc-fault-bindnow
    
    Previously, ld.so was invoked only with the elf subdirectory on the
    library search path.  Since the soname link for libc.so only exists in
    the top-level build directory, this leaked the system libc into the
    test.

commit 1b132d55e2d3a4eb421c0f77f63b67b5022c22e3
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Mon Dec 9 15:50:29 2019 -0300

    Fix __libc_signal_block_all on sparc64
    
    The posix_spawn on sparc issues invalid sigprocmask calls:
    
      rt_sigprocmask(0xffe5e15c /* SIG_??? */, ~[], 0xffe5e1dc, 8) = -1 EINVAL (Invalid argument)
    
    Which make support/tst-support_capture_subprocess fails with random
    output (due the child signal being wrongly captured by the parent).
    
    Tracking the culprit it seems to be a wrong code generation in the
    INTERNAL_SYSCALL due the automatic sigset_t used on
    __libc_signal_block_all:
    
      return INTERNAL_SYSCALL (rt_sigprocmask, err, 4, SIG_BLOCK, &SIGALL_SET,
                              set, _NSIG / 8);
    
    Where SIGALL_SET is defined as:
    
      ((__sigset_t) { .__val = {[0 ...  _SIGSET_NWORDS-1 ] =  -1 } })
    
    Building the expanded __libc_signal_block_all on sparc64 with recent
    compiler (gcc 8.3.1 and 9.1.1):
    
      #include <signal>
    
      int
      _libc_signal_block_all (sigset_t *set)
      {
        INTERNAL_SYSCALL_DECL (err);
        return INTERNAL_SYSCALL (rt_sigprocmask, err, 4, SIG_BLOCK, &SIGALL_SET,
    			     set, _NSIG / 8);
      }
    
    The first argument (SIG_BLOCK) is not correctly set on 'o0' register:
    
      __libc_signal_block_all:
    	save    %sp, -304, %sp
    	add     %fp, 1919, %o0
    	mov     128, %o2
    	sethi   %hi(.LC0), %o1
    	call    memcpy, 0
    	 or     %o1, %lo(.LC0), %o1
    	add     %fp, 1919, %o1
    	mov     %i0, %o2
    	mov     8, %o3
    	mov     103, %g1
    	ta      0x6d;
    	bcc,pt  %xcc, 1f
    	mov     0, %g1
    	sub     %g0, %o0, %o0
    	mov     1, %g1
         1:	sra     %o0, 0, %i0
    	return  %i7+8
    	 nop
    
    Where if SIGALL_SET is defined a const object, gcc correctly sets the
    expected kernel argument in correct register:
    
            sethi   %hi(.LC0), %o1
            call    memcpy, 0
             or     %o1, %lo(.LC0), %o1
       ->   mov     1, %o0
    	add     %fp, 1919, %o1
    
    Another possible fix is use a static const object.  Although there
    should not be a difference between a const compound literal and a static
    const object, the gcc C99 status page [1] has a note stating that this
    optimization is not implemented:
    
      "const-qualified compound literals could share storage with each
       other and with string literals, but currently don't.".
    
    This patch fixes it by moving both sigset_t that represent the
    signal sets to static const data object.  It generates slight better
    code where the object reference is used directly instead of a stack
    allocation plus the content materialization.
    
    Checked on x86_64-linux-gnu, i686-linux-gnu, and sparc64-linux-gnu.
    
    [1] https://gcc.gnu.org/c99status.html

commit 0331bffe1be698d32c3b4a93b6e7f02d1f1b47fb
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Tue Dec 17 15:55:59 2019 -0300

    powerpc: Do not run IFUNC resolvers for LD_DEBUG=unused [BZ #24214]
    
    This patch adds the missing bits for powerpc and fixes both
    tst-ifunc-fault-lazy and tst-ifunc-fault-bindnow failures on
    powerpc-linux-gnu.
    
    Checked on powerpc-linux-gnu and powerpc-linux-gnu-power4.
    
    Reviewed-by: Florian Weimer <fweimer@redhat.com>
    Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>

commit 3dcad8158f43d71d5b8f6f317f82952ddf3468f3
Author: Florian Weimer <fweimer@redhat.com>
Date:   Wed Dec 18 10:27:10 2019 +0100

    hurd: Do not make sigprocmask available in ld.so
    
    After commit f7649d5780aa4682393b9daedd653e4d9c12784c ("dlopen: Do not
    block signals"), the dynamic linker no longer uses sigprocmask, which
    means that it does not have to be made available explicitly on hurd.
    
    This reverts commit 892badc9bbcd4a6f8c2eb6c8a99be3aa22517532
    ("hurd: Make __sigprocmask GLIBC_PRIVATE") and commit
    d5ed9ba29a3c818b3433a1784862494968abda45 ("hurd: Fix ld.so link"),
    but keeps the comment changes from the second commit.

commit 3aec0c3912859bcf0432c700a8fbdcb23b45545f
Author: Florian Weimer <fweimer@redhat.com>
Date:   Tue Dec 17 16:23:08 2019 +0100

    build-many-glibcs.py: Do not build C++ PCHs by default
    
    They are not used during the subsequent glibc build, so creating them
    merely wastes time.

commit a45244ce127763872ff0b5743fb4ac8299ee9b28
Author: James Clarke <jrtc27@jrtc27.com>
Date:   Tue Dec 17 18:29:29 2019 +0000

    hurd: Make getrandom honour GRND_NONBLOCK
    
    * sysdeps/mach/hurd/getrandom.c (__getrandom): Open the random source
    with O_NONBLOCK when the GRND_NONBLOCK flag is provided.
    Message-Id: <20191217182929.90989-1-jrtc27@jrtc27.com>

commit a059f9505bbef1f22c6f52798a74184632929145
Author: DJ Delorie <dj@redhat.com>
Date:   Fri Dec 13 13:36:58 2019 -0500

    tunables: report sbrk() failure
    
    Reviewed-by: Carlos O'Donell <carlos@redhat.com>

commit a2e487ce1c59d19345d9ecacc58de79febd869e4
Author: Dragan Mladjenovic <dmladjenovic@wavecomp.com>
Date:   Wed Dec 11 11:23:04 2019 +0100

    build-many-glibcs.py: Add mipsisa64r6el-linux-gnu target
    
    This patch enables building mips/r6 isa/little-endian/hard-float configuration in
    o32, n32, and n64 variants.

commit 020b2a97bb15f807c0482f0faee2184ed05bcad8
Author: Dragan Mladjenovic <dmladjenovic@wavecomp.com>
Date:   Tue Nov 19 15:06:20 2019 +0100

    mips: Do not include hi and lo in __SYSCALL_CLOBBERS for R6
    
    GCC 10 (PR 91233) won't silently allow registers that are not architecturally
    available to be present in the clobber list anymore, resulting in build failure
    for mips*r6 targets in form of:
    ...
    .../sysdep.h:146:2: error: the register â??loâ?? cannot be clobbered in â??asmâ?? for the current target
      146 |  __asm__ volatile (      \
          |  ^~~~~~~
    
    This is because base R6 ISA doesn't define hi and lo registers w/o DSP extension.
    This patch provides the alternative definitions of __SYSCALL_CLOBBERS for r6
    targets that won't include those registers.
    
    	* sysdeps/unix/sysv/linux/mips/mips32/sysdep.h (__SYSCALL_CLOBBERS): Exclude
    	hi and lo from the clobber list for __mips_isa_rev >= 6.
    	* sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h (__SYSCALL_CLOBBERS): Likewise.
    	* sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h (__SYSCALL_CLOBBERS): Likewise.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]