View Bazaar branches
Get this repository:
git clone https://git.launchpad.net/glibc

Import details

Import Status: Reviewed

This repository is an import of the Git repository at git://sourceware.org/git/glibc.git.

The next import is scheduled to run .

Last successful import was .

Import started on juju-1e3bde-prod-lp-code-import-14 and finished taking 17 minutes — see the log
Import started on juju-1e3bde-prod-lp-code-import-13 and finished taking 18 minutes — see the log
Import started on juju-1e3bde-prod-lp-code-import-14 and finished taking 11 minutes — see the log
Import started on juju-1e3bde-prod-lp-code-import-13 and finished taking 21 minutes — see the log
Import started on juju-1e3bde-prod-lp-code-import-12 and finished taking 25 minutes — see the log
Import started on juju-1e3bde-prod-lp-code-import-13 and finished taking 20 minutes — see the log
Import started on juju-1e3bde-prod-lp-code-import-15 and finished taking 19 minutes — see the log
Import started on juju-1e3bde-prod-lp-code-import-15 and finished taking 16 minutes — see the log
Import started on juju-1e3bde-prod-lp-code-import-13 and finished taking 18 minutes — see the log
Import started on juju-1e3bde-prod-lp-code-import-13 and finished taking 19 minutes — see the log

Branches

Name Last Modified Last Commit
google/grte/v5-2.27/master 2021-07-23 17:08:25 UTC
wordexp: handle overflow in positional parameter number (bug 28011)

Author: Andreas Schwab
Author Date: 2021-06-25 13:02:47 UTC

wordexp: handle overflow in positional parameter number (bug 28011)

Use strtoul instead of atoi so that overflow can be detected.

master 2021-07-23 14:57:10 UTC
manual: Document unsupported cases for interposition

Author: Siddhesh Poyarekar
Author Date: 2021-07-23 14:56:01 UTC

manual: Document unsupported cases for interposition

These functions call the core allocator functions (realloc and malloc
respectively) and are hence guaranteed to allocate memory using the
correct functions when multiple allocators are interposed. Having
these functions interposed in one allocator and not another may result
in confusion, hence discourage interposing them altogether.

Reviewed-by: Florian Weimer <fweimer@redhat.com>

codonell/c-utf8 2021-07-09 04:47:27 UTC
Add generic C.UTF-8 locale (Bug 17318)

Author: Carlos-0
Author Date: 2021-07-09 04:36:11 UTC

Add generic C.UTF-8 locale (Bug 17318)

We add a new C.UTF-8 locale. This locale is not builtin to glibc, but
is provided as a distinct locale. The locale provides full support
for UTF-8 and this includes full code point sorting via collation
(excludes surrogates).

The collation uses a new keyword 'strcmp_collation' which drops all
collation rules and generates an empty zero rules collation to trigger
strcmp usage in collation. This ensures that we get full code point
sorting for C.UTF-8 with a minimal 92 bytes of overhead (structure
information).

The new locale is added to SUPPORTED. Minimal test data for specific
code points (minus those not supported by collate-test) is provided
in C.UTF-8.in, and this verifies code point sorting is working
reasonably across the range. The locale was tested manually with the
full set of code points, but failure at this point is a failure in
strcmp.

The locale is harmonized with locales already shipping in Gentoo,
Debian, Ubuntu, Fedora, CentOS Stream, and RHEL.

Tested on x86_64 or i686 without regression.

release/2.32/master 2021-07-09 04:46:59 UTC
x86_64: Remove unneeded static PIE check for undefined weak diagnostic

Author: Fangrui Song
Author Date: 2021-07-08 21:26:22 UTC

x86_64: Remove unneeded static PIE check for undefined weak diagnostic

https://sourceware.org/bugzilla/show_bug.cgi?id=21782 dropped an ld
diagnostic for R_X86_64_PC32 referencing an undefined weak symbol in
-pie links. Arguably keeping the diagnostic like other ports is more
correct, since statically resolving movl foo(%rip), %eax to the
link-time zero address produces a corrupted output.

It turns out that --enable-static-pie builds do not depend on the ld
behavior. GCC generates GOT indirection for weak declarations for
-fPIE/-fPIC, so what ld does with the PC-relative relocation doesn't
really matter.

Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
(cherry picked from commit 115d242456de158e698ffb0f9a5fee3118e9e825)

release/2.33/master 2021-07-09 04:37:32 UTC
x86_64: Remove unneeded static PIE check for undefined weak diagnostic

Author: Fangrui Song
Author Date: 2021-07-08 21:26:22 UTC

x86_64: Remove unneeded static PIE check for undefined weak diagnostic

https://sourceware.org/bugzilla/show_bug.cgi?id=21782 dropped an ld
diagnostic for R_X86_64_PC32 referencing an undefined weak symbol in
-pie links. Arguably keeping the diagnostic like other ports is more
correct, since statically resolving movl foo(%rip), %eax to the
link-time zero address produces a corrupted output.

It turns out that --enable-static-pie builds do not depend on the ld
behavior. GCC generates GOT indirection for weak declarations for
-fPIE/-fPIC, so what ld does with the PC-relative relocation doesn't
really matter.

Reviewed-by: H.J. Lu <hjl.tools@gmail.com>
(cherry picked from commit 115d242456de158e698ffb0f9a5fee3118e9e825)

release/2.31/master 2021-07-06 19:04:26 UTC
wordexp: handle overflow in positional parameter number (bug 28011)

Author: Andreas Schwab
Author Date: 2021-06-25 13:02:47 UTC

wordexp: handle overflow in positional parameter number (bug 28011)

Use strtoul instead of atoi so that overflow can be detected.

(cherry picked from commit 5adda61f62b77384718b4c0d8336ade8f2b4b35c)

arm/morello/master 2021-06-28 14:41:58 UTC
nptl: Add glibc.pthread.stack_cache_size tunable

Author: Florian Weimer
Author Date: 2021-06-28 13:48:58 UTC

nptl: Add glibc.pthread.stack_cache_size tunable

The valgrind/helgrind test suite needs a way to make stack dealloction
more prompt, and this feature seems to be generally useful.

Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>

azanella/pthread-multiple-fixes 2021-06-08 20:44:56 UTC
Linux: Remove sysdep-cancel header

Author: Adhemerval Zanella
Author Date: 2019-08-14 12:57:37 UTC

Linux: Remove sysdep-cancel header

Now that single-thread optimization is provided by single-thread.h
header and the enable/disable asynchronous cancellation functions are
no longer used on cancellable syscalls, the header can be removed.

Checked with a build for all major Linux architectures and for hurd.

azanella/y2038 2021-06-07 19:06:02 UTC
Use LFS and 64 bit time for installed programs

Author: Adhemerval Zanella
Author Date: 2021-05-20 17:20:18 UTC

Use LFS and 64 bit time for installed programs

The installed programs are built with a combination of different
values for MODULE_NAME, as below. To enable both Long File Support
and 64 bt time, -D_TIME_BITS=64 -D_FILE_OFFSET_BITS=64 is added for
nonlib, nscd, lddlibc4, ldconfig, locale_programs, and iconvprogs
modules.

  nscd/nscd
    nscd/nscd.o MODULE_NAME=nscd
    nscd/connections.o MODULE_NAME=nscd
    nscd/pwdcache.o MODULE_NAME=nscd
    nscd/getpwnam_r.o MODULE_NAME=nscd
    nscd/getpwuid_r.o MODULE_NAME=nscd
    nscd/grpcache.o MODULE_NAME=nscd
    nscd/getgrnam_r.o MODULE_NAME=nscd
    nscd/getgrgid_r.o MODULE_NAME=nscd
    nscd/hstcache.o MODULE_NAME=nscd
    nscd/gethstbyad_r.o MODULE_NAME=nscd
    nscd/gethstbynm3_r.o MODULE_NAME=nscd
    nscd/getsrvbynm_r.o MODULE_NAME=nscd
    nscd/getsrvbypt_r.o MODULE_NAME=nscd
    nscd/servicescache.o MODULE_NAME=nscd
    nscd/dbg_log.o MODULE_NAME=nscd
    nscd/nscd_conf.o MODULE_NAME=nscd
    nscd/nscd_stat.o MODULE_NAME=nscd
    nscd/cache.o MODULE_NAME=nscd
    nscd/mem.o MODULE_NAME=nscd
    nscd/nscd_setup_thread.o MODULE_NAME=nscd
    nscd/xmalloc.o MODULE_NAME=nscd
    nscd/xstrdup.o MODULE_NAME=nscd
    nscd/aicache.o MODULE_NAME=nscd
    nscd/initgrcache.o MODULE_NAME=nscd
    nscd/gai.o MODULE_NAME=nscd
    nscd/res_hconf.o MODULE_NAME=nscd
    nscd/netgroupcache.o MODULE_NAME=nscd
    nscd/cachedumper.o MODULE_NAME=nscd
  elf/lddlibc4
    elf/lddlibc4 MODULE_NAME=lddlibc4
  elf/pldd
    elf/pldd.o MODULE_NAME=nonlib
    elf/xmalloc.o MODULE_NAME=nonlib
  elf/sln
    elf/sln.o MODULE_NAME=nonlib
    elf/static-stubs.o MODULE_NAME=nonlib
  elf/sprof MODULE_NAME=nonlib
  elf/ldconfig
    elf/ldconfig.o MODULE_NAME=ldconfig
    elf/cache.o MODULE_NAME=nonlib
    elf/readlib.o MODULE_NAME=nonlib
    elf/xmalloc.o MODULE_NAME=nonlib
    elf/xstrdup.o MODULE_NAME=nonlib
    elf/chroot_canon.o MODULE_NAME=nonlib
    elf/static-stubs.o MODULE_NAME=nonlib
    elf/stringtable.o MODULE_NAME=nonlib
  io/pwd
    io/pwd.o MODULE_NAME=nonlib
  locale/locale
    locale/locale.o MODULE_NAME=locale_programs
    locale/locale-spec.o MODULE_NAME=locale_programs
    locale/charmap-dir.o MODULE_NAME=locale_programs
    locale/simple-hash.o MODULE_NAME=locale_programs
    locale/xmalloc.o MODULE_NAME=locale_programs
    locale/xstrdup.o MODULE_NAME=locale_programs
    locale/record-status.o MODULE_NAME=locale_programs
    locale/xasprintf.o MODULE_NAME=locale_programs
  locale/localedef
    locale/localedef.o MODULE_NAME=locale_programs
    locale/ld-ctype.o MODULE_NAME=locale_programs
    locale/ld-messages.o MODULE_NAME=locale_programs
    locale/ld-monetary.o MODULE_NAME=locale_programs
    locale/ld-numeric.o MODULE_NAME=locale_programs
    locale/ld-time.o MODULE_NAME=locale_programs
    locale/ld-paper.o MODULE_NAME=locale_programs
    locale/ld-name.o MODULE_NAME=locale_programs
    locale/ld-address.o MODULE_NAME=locale_programs
    locale/ld-telephone.o MODULE_NAME=locale_programs
    locale/ld-measurement.o MODULE_NAME=locale_programs
    locale/ld-identification.o MODULE_NAME=locale_programs
    locale/ld-collate.o MODULE_NAME=locale_programs
    locale/charmap.o MODULE_NAME=locale_programs
    locale/linereader.o MODULE_NAME=locale_programs
    locale/locfile.o MODULE_NAME=locale_programs
    locale/repertoire.o MODULE_NAME=locale_programs
    locale/locarchive.o MODULE_NAME=locale_programs
    locale/md5.o MODULE_NAME=locale_programs
    locale/charmap-dir.o MODULE_NAME=locale_programs
    locale/simple-hash.o MODULE_NAME=locale_programs
    locale/xmalloc.o MODULE_NAME=locale_programs
    locale/xstrdup.o MODULE_NAME=locale_programs
    locale/record-status.o MODULE_NAME=locale_programs
    locale/xasprintf.o MODULE_NAME=locale_programs
  catgets/gencat
    catgets/gencat.o MODULE_NAME=nonlib
    catgets/xmalloc.o MODULE_NAME=nonlib
  nss/makedb
    nss/makedb.o MODULE_NAME=nonlib
    nss/xmalloc.o MODULE_NAME=nonlib
    nss/hash-string.o MODULE_NAME=nonlib
  nss/getent
    nss/getent.o MODULE_NAME=nonlib
  posix/getconf
    posix/getconf.o MODULE_NAME=nonlib
  login/utmpdump
    login/utmpdump.o MODULE_NAME=nonlib
  debug/pcprofiledump
    debug/pcprofiledump.o MODULE_NAME=nonlib
  timezone/zic
    timezone/zic.o MODULE_NAME=nonlib
  timezone/zdump
    timezone/zdump.o MODULE_NAME=nonlib
  iconv/iconv_prog
    iconv/iconv_prog.o MODULE_NAME=nonlib
    iconv/iconv_charmap.o MODULE_NAME=iconvprogs
    iconv/charmap.o MODULE_NAME=iconvprogs
    iconv/charmap-dir.o MODULE_NAME=iconvprogs
    iconv/linereader.o MODULE_NAME=iconvprogs
    iconv/dummy-repertoire.o MODULE_NAME=iconvprogs
    iconv/simple-hash.o MODULE_NAME=iconvprogs
    iconv/xstrdup.o MODULE_NAME=iconvprogs
    iconv/xmalloc.o MODULE_NAME=iconvprogs
    iconv/record-status.o MODULE_NAME=iconvprogs
  iconv/iconvconfig
    iconv/iconvconfig.o MODULE_NAME=nonlib
    iconv/strtab.o MODULE_NAME=iconvprogs
    iconv/xmalloc.o MODULE_NAME=iconvprogs
    iconv/hash-string.o MODULE_NAME=iconvprogs

Also, to avoid addinf both LFS and 64 bit time support on internal
tests they are moved to a newer 'testsuite-internal' module. It
should be similar to 'nonlib' regarding internal definition and
linking namespace.

This patch also enables LFS and 64 bit support of libsupport container
programs (echo-container, test-container, shell-container, and
true-container).

Checked on x86_64-linux-gnu and i686-linux-gnu.

fw/librt 2021-06-03 20:07:54 UTC
Linux: Cleanups after librt move

Author: Florian Weimer
Author Date: 2021-06-03 19:01:27 UTC

Linux: Cleanups after librt move

librt.so is no longer installed for PTHREAD_IN_LIBC, and tests
are not linked against it.

GLIBC_PRIVATE symbols that were needed during the transition are
removed again.

ibm/2.32/master 2021-04-27 12:45:59 UTC
Merge branch release/2.32/master into ibm/2.32/master

Author: Tulio Magno Quites Machado Filho
Author Date: 2021-04-27 12:45:59 UTC

Merge branch release/2.32/master into ibm/2.32/master

release/2.28/master 2021-04-14 06:19:58 UTC
Fix SXID_ERASE behavior in setuid programs (BZ #27471)

Author: Siddhesh Poyarekar
Author Date: 2021-03-16 07:07:55 UTC

Fix SXID_ERASE behavior in setuid programs (BZ #27471)

When parse_tunables tries to erase a tunable marked as SXID_ERASE for
setuid programs, it ends up setting the envvar string iterator
incorrectly, because of which it may parse the next tunable
incorrectly. Given that currently the implementation allows malformed
and unrecognized tunables pass through, it may even allow SXID_ERASE
tunables to go through.

This change revamps the SXID_ERASE implementation so that:

- Only valid tunables are written back to the tunestr string, because
  of which children of SXID programs will only inherit a clean list of
  identified tunables that are not SXID_ERASE.

- Unrecognized tunables get scrubbed off from the environment and
  subsequently from the child environment.

- This has the side-effect that a tunable that is not identified by
  the setxid binary, will not be passed on to a non-setxid child even
  if the child could have identified that tunable. This may break
  applications that expect this behaviour but expecting such tunables
  to cross the SXID boundary is wrong.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>

(cherry picked from commit 2ed18c5b534d9e92fc006202a5af0df6b72e7aca)

release/2.29/master 2021-04-14 05:38:02 UTC
Fix SXID_ERASE behavior in setuid programs (BZ #27471)

Author: Siddhesh Poyarekar
Author Date: 2021-03-16 07:07:55 UTC

Fix SXID_ERASE behavior in setuid programs (BZ #27471)

When parse_tunables tries to erase a tunable marked as SXID_ERASE for
setuid programs, it ends up setting the envvar string iterator
incorrectly, because of which it may parse the next tunable
incorrectly. Given that currently the implementation allows malformed
and unrecognized tunables pass through, it may even allow SXID_ERASE
tunables to go through.

This change revamps the SXID_ERASE implementation so that:

- Only valid tunables are written back to the tunestr string, because
  of which children of SXID programs will only inherit a clean list of
  identified tunables that are not SXID_ERASE.

- Unrecognized tunables get scrubbed off from the environment and
  subsequently from the child environment.

- This has the side-effect that a tunable that is not identified by
  the setxid binary, will not be passed on to a non-setxid child even
  if the child could have identified that tunable. This may break
  applications that expect this behaviour but expecting such tunables
  to cross the SXID boundary is wrong.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>

(cherry picked from commit 2ed18c5b534d9e92fc006202a5af0df6b72e7aca)

release/2.30/master 2021-04-14 05:28:20 UTC
Fix SXID_ERASE behavior in setuid programs (BZ #27471)

Author: Siddhesh Poyarekar
Author Date: 2021-03-16 07:07:55 UTC

Fix SXID_ERASE behavior in setuid programs (BZ #27471)

When parse_tunables tries to erase a tunable marked as SXID_ERASE for
setuid programs, it ends up setting the envvar string iterator
incorrectly, because of which it may parse the next tunable
incorrectly. Given that currently the implementation allows malformed
and unrecognized tunables pass through, it may even allow SXID_ERASE
tunables to go through.

This change revamps the SXID_ERASE implementation so that:

- Only valid tunables are written back to the tunestr string, because
  of which children of SXID programs will only inherit a clean list of
  identified tunables that are not SXID_ERASE.

- Unrecognized tunables get scrubbed off from the environment and
  subsequently from the child environment.

- This has the side-effect that a tunable that is not identified by
  the setxid binary, will not be passed on to a non-setxid child even
  if the child could have identified that tunable. This may break
  applications that expect this behaviour but expecting such tunables
  to cross the SXID boundary is wrong.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>

(cherry picked from commit 2ed18c5b534d9e92fc006202a5af0df6b72e7aca)

nsz/bug19329-v2 2021-04-13 07:43:40 UTC
RFC elf: Fix slow tls access after dlopen [BZ #19924]

Author: Szabolcs Nagy
Author Date: 2021-02-16 12:55:13 UTC

RFC elf: Fix slow tls access after dlopen [BZ #19924]

In short: __tls_get_addr checks the global generation counter,
_dl_update_slotinfo updates up to the generation of the accessed
module. If the global generation is newer than geneneration of the
module then __tls_get_addr keeps hitting the slow path that updates
the dtv.

Possible approaches i can see:

1. update to global generation instead of module,
2. check the module generation in the fast path.

This patch is 1.: it needs additional sync (load acquire) so the
slotinfo list is up to date with the observed global generation.

Approach 2. would require walking the slotinfo list at all times.
I don't know how to make that fast with many modules.

Note: in the x86_64 version of dl-tls.c the generation is only loaded
once, since relaxed mo is not faster than acquire mo load.

I have not benchmarked this yet.

nsz/mtag-2 2021-03-19 11:49:13 UTC
malloc: Ensure mtag code path in checked_request2size is cold

Author: Szabolcs Nagy
Author Date: 2021-03-15 11:44:32 UTC

malloc: Ensure mtag code path in checked_request2size is cold

This is a workaround (hack) for a gcc optimization issue (PR 99551).
Without this the generated code may evaluate the expression in the
cold path which causes performance regression for small allocations
in the memory tagging disabled (common) case.

nsz/mtag 2021-03-19 11:46:21 UTC
aarch64: Optimize __libc_mtag_tag_zero_region

Author: Szabolcs Nagy
Author Date: 2021-02-09 17:59:11 UTC

aarch64: Optimize __libc_mtag_tag_zero_region

This is a target hook for memory tagging, the original was a naive
implementation. Uses the same algorithm as __libc_mtag_tag_region,
but with instructions that also zero the memory. This was not
benchmarked on real cpu, but expected to be faster than the naive
implementation.

ibm/2.30/master 2021-03-18 21:08:42 UTC
NEWS: Fix typo in CVE-2021-3326 entry

Author: Florian Weimer
Author Date: 2021-01-29 17:20:54 UTC

NEWS: Fix typo in CVE-2021-3326 entry

schwab/ilp32-2.33 2021-03-07 14:42:45 UTC
aarch64: Update ILP32 abilists for glibc 2.33

Author: Andreas Schwab
Author Date: 2021-02-21 21:22:29 UTC

aarch64: Update ILP32 abilists for glibc 2.33

schwab/ilp32 2021-03-07 14:42:45 UTC
aarch64: Update ILP32 abilists for glibc 2.33

Author: Andreas Schwab
Author Date: 2021-02-21 21:22:29 UTC

aarch64: Update ILP32 abilists for glibc 2.33

tuliom/microwatt 2021-02-17 16:38:29 UTC
powerpc64: Stop assuming new processors have VSX

Author: Tulio Magno Quites Machado Filho
Author Date: 2020-10-02 13:18:48 UTC

powerpc64: Stop assuming new processors have VSX

VSX has been available on IBM POWER since POWER7. All IBM processors
compliant with POWER ISAs 2.07, 3.0 and 3.1 also support VSX.
This patch aims to remove a barrier for new processors as they start to
support Linux on powerpc64 while not having support for all the altivec
and vsx instructions.

nsz/bug19329 2021-02-15 12:05:21 UTC
elf: Remove lazy tlsdesc relocation related code

Author: Szabolcs Nagy
Author Date: 2021-02-11 13:24:47 UTC

elf: Remove lazy tlsdesc relocation related code

Remove generic tlsdesc code related to lazy tlsdesc processing since
lazy tlsdesc relocation is no longer supported. This includes removing
GL(dl_load_lock) from _dl_make_tlsdesc_dynamic which is only called at
load time when that lock is already held.

Added a documentation comment too.

ibm/2.28/master 2021-02-13 21:49:56 UTC
Merge branch release/2.28/master into ibm/2.28/master

Author: Tulio Magno Quites Machado Filho
Author Date: 2021-02-13 21:49:56 UTC

Merge branch release/2.28/master into ibm/2.28/master

maskray/lld 2021-02-01 18:00:35 UTC
configure: Allow LD to be LLD 9.0.0 or above

Author: Fangrui Song
Author Date: 2020-03-13 20:29:46 UTC

configure: Allow LD to be LLD 9.0.0 or above

When using LLD (LLVM linker) as the linker, configure prints a confusing
message.

    *** These critical programs are missing or too old: GNU ld

LLD>=9.0.0 can build glibc with very few patches. (LLD 8.0.0 needs one
workaround for -Wl,-defsym=_begin=0). LLD>=9.0.0 is available on many
distributions, so just set the baseline version to 9.0.0.

nsz/bug27072 2021-01-20 14:42:46 UTC
Make libc symbols hidden in static PIE

Author: Szabolcs Nagy
Author Date: 2021-01-06 11:31:04 UTC

Make libc symbols hidden in static PIE

Hidden visibility can avoid indirections and RELATIVE relocs in
static PIE libc.

The check should use IS_IN_LIB instead of IS_IN(libc) since all
symbols are defined locally in static PIE and the optimization is
useful in all libraries not just libc. However the test system
links objects from libcrypt.a into dynamic linked test binaries
where hidden visibility does not work. I think mixing static and
shared libc components in the same binary should not be supported
usage, but to be safe only use hidden in libc.a.

On some targets (i386) this optimization cannot be applied because
hidden visibility PIE ifunc functions don't work, so it is gated by
NO_HIDDEN_EXTERN_FUNC_IN_PIE.

From -static-pie linked 'int main(){}' this shaves off 71 relative
relocs on aarch64 and reduces code size by about 2k.

maskray/stack_chk_guard 2021-01-12 07:56:32 UTC
Unconditionally define __stack_chk_guard [BZ #26817]

Author: Fangrui Song
Author Date: 2021-01-12 07:56:32 UTC

Unconditionally define __stack_chk_guard [BZ #26817]

__stack_chk_guard is currently unavailable on architectures which define
THREAD_SET_STACK_GUARD, so {gcc,clang} -fstack-protector
-mstack-protector-guard=global will fail to link due to the undefined
symbol.

Define __stack_chk_guard to make -mstack-protector-guard=global compiled
user programs work. `#define THREAD_SET_STACK_GUARD` code is moved
outside of `#ifndef __ASSEMBLER__` so that cpp can preprocess
elf/Versions.

rearnsha/mte-v4.0 2020-12-18 19:23:04 UTC
aarch64: Add aarch64-specific files for memory tagging support

Author: Richard Earnshaw
Author Date: 2020-12-18 19:00:49 UTC

aarch64: Add aarch64-specific files for memory tagging support

This final patch provides the architecture-specific implementation of
the memory-tagging support hooks for aarch64.

fw/glibc-hwcaps 2020-12-07 08:13:08 UTC
s390x: Add Add glibc-hwcaps support

Author: Florian Weimer
Author Date: 2020-12-07 08:12:05 UTC

s390x: Add Add glibc-hwcaps support

Subdirectories z13, z14, z15 can be selected, mostly based on the
level of support for vector instructions.

nsz/btifix-v3 2020-12-02 08:48:08 UTC
aarch64: Use mmap to add PROT_BTI instead of mprotect [BZ #26831]

Author: Szabolcs Nagy
Author Date: 2020-12-01 10:13:18 UTC

aarch64: Use mmap to add PROT_BTI instead of mprotect [BZ #26831]

Re-mmap executable segments if possible instead of using mprotect
to add PROT_BTI. This allows using BTI protection with security
policies that prevent mprotect with PROT_EXEC.

If the fd of the ELF module is not available because it was kernel
mapped then mprotect is used and failures are ignored. To protect
the main executable even when mprotect is filtered the linux kernel
 will have to be changed to add PROT_BTI to it.

The delayed failure reporting is mainly needed because currently
_dl_process_gnu_properties does not propagate failures such that
the required cleanups happen. Using the link_map_machine struct for
error propagation is not ideal, but this seemed to be the least
intrusive solution.

Fixes bug 26831.

nsz/bti-1 2020-11-25 15:25:28 UTC
aarch64: Use mmap to add PROT_BTI instead of mprotect [BZ #26831]

Author: Szabolcs Nagy
Author Date: 2020-10-28 18:10:23 UTC

aarch64: Use mmap to add PROT_BTI instead of mprotect [BZ #26831]

Re-mmap executable segments if possible instead of using mprotect
to add PROT_BTI. This allows using BTI protection with security
policies that prevent mprotect with PROT_EXEC.

If the fd of the ELF module is not available because it was kernel
mapped then mprotect is used and failures are ignored. To protect
the main executable even when mprotect is filtered the linux kernel
will have to be changed to add PROT_BTI to it.

Computing the mapping bounds follows _dl_map_object_from_fd more
closely now.

The delayed failure reporting is mainly needed because currently
_dl_process_gnu_properties does not propagate failures such that
the required cleanups happen. Using the link_map_machine struct for
error propagation is not ideal, but this seemed to be the least
intrusive solution.

Fixes bug 26831.

rearnsha/mte-v3.0 2020-11-20 18:13:52 UTC
aarch64: Add aarch64-specific files for memory tagging support

Author: Richard Earnshaw
Author Date: 2020-11-20 17:20:10 UTC

aarch64: Add aarch64-specific files for memory tagging support

This final patch provides the architecture-specific implementation of
the memory-tagging support hooks for aarch64.

release/2.27/master 2020-11-16 08:00:00 UTC
Add NEWS entry for CVE-2020-6096 (bug 25620)

Author: Aurelien Jarno
Author Date: 2020-07-12 19:58:43 UTC

Add NEWS entry for CVE-2020-6096 (bug 25620)

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
(cherry picked from commit 17400c4bcd57d84add1da3aa93248ef2efdb0ccb)

release/2.26/master 2020-11-04 12:30:42 UTC
aarch64: Fix DT_AARCH64_VARIANT_PCS handling [BZ #26798]

Author: Szabolcs Nagy
Author Date: 2020-10-22 16:55:01 UTC

aarch64: Fix DT_AARCH64_VARIANT_PCS handling [BZ #26798]

The variant PCS support was ineffective because in the common case
linkmap->l_mach.plt == 0 but then the symbol table flags were ignored
and normal lazy binding was used instead of resolving the relocs early.
(This was a misunderstanding about how GOT[1] is setup by the linker.)

In practice this mainly affects SVE calls when the vector length is
more than 128 bits, then the top bits of the argument registers get
clobbered during lazy binding.

Fixes bug 26798.

(cherry picked from commit 558251bd8785760ad40fcbfeaaee5d27fa5b0fe4)

sasha/execveat 2020-09-07 15:36:23 UTC
Linux: Add execveat system call wrapper

Author: Alexandra Hájková
Author Date: 2020-04-27 14:52:38 UTC

 Linux: Add execveat system call wrapper

nsz/pacbti-v7 2020-07-08 12:05:39 UTC
aarch64: add NEWS entry about branch protection support

Author: Szabolcs Nagy
Author Date: 2020-06-11 17:19:40 UTC

aarch64: add NEWS entry about branch protection support

This is a new security feature that relies on architecture
extensions and needs glibc to be built with a gcc configured
with branch protection.

nsz/pacbti-v6 2020-07-02 08:27:05 UTC
aarch64: add NEWS entry about branch protection support

Author: Szabolcs Nagy
Author Date: 2020-06-11 17:19:40 UTC

aarch64: add NEWS entry about branch protection support

This is a new security feature that relies on architecture
extensions and needs glibc to be built with a gcc configured
with branch protection.

nsz/pacbti-v5 2020-06-22 14:21:14 UTC
aarch64: add NEWS entry about branch protection support

Author: Szabolcs Nagy
Author Date: 2020-06-11 17:19:40 UTC

aarch64: add NEWS entry about branch protection support

This is a new security feature that relies on architecture
extensions and needs glibc to be built with a gcc configured
with branch protection.

nsz/pacbti-v4 2020-06-12 13:34:39 UTC
aarch64: add NEWS entry about branch protection support

Author: Szabolcs Nagy
Author Date: 2020-06-11 17:19:40 UTC

aarch64: add NEWS entry about branch protection support

This is a new security feature that relies on architecture
extensions and needs glibc to be built with a gcc configured
with branch protection.

alistair/rv32.next 2020-04-26 02:16:16 UTC
Revert "Add IPPROTO_ETHERNET and IPPROTO_MPTCP from Linux 5.6 to netinet/in.h."

Author: Alistair Francis
Author Date: 2020-04-08 21:43:47 UTC

Revert "Add IPPROTO_ETHERNET and IPPROTO_MPTCP from Linux 5.6 to netinet/in.h."

This reverts commit f9ac84f92f151e07586c55e14ed628d493a5929d.

azanella/bz12683 2020-04-07 14:02:55 UTC
Linux: Remove sysdep-cancel header

Author: Adhemerval Zanella
Author Date: 2019-08-14 12:57:37 UTC

Linux: Remove sysdep-cancel header

Now that single-thread optimization is provided by single-thread.h
header and the enable/disable asynchronous cancellation functions are
no longer used on cancellable syscalls, the header can be removed.

Checked with a build for all major Linux architectures and for hurd.

ibm/2.26/master 2020-03-20 21:24:51 UTC
Merge branch release/2.26/master into ibm/2.26/master

Author: Tulio Magno Quites Machado Filho
Author Date: 2020-03-20 21:24:51 UTC

Merge branch release/2.26/master into ibm/2.26/master

tuliom/libmvec 2020-02-19 20:29:34 UTC
PPC64: Attach SIMD attribute to cosf, sin, sinf function declarations.

Author: Bert Tenjy
Author Date: 2020-02-13 17:55:31 UTC

PPC64: Attach SIMD attribute to cosf, sin, sinf function declarations.

These changes were mistakenly left out of the patches that added SIMD
versions of these functions to libmvec.

Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>

fw/nss-reload 2020-02-19 19:55:48 UTC
nss: Introduce <nss_module.h>

Author: Florian Weimer
Author Date: 2020-02-19 19:55:48 UTC

nss: Introduce <nss_module.h>

This provides the struct nss_module type, which combines the old
struct service_library type with the known_function tree, by
statically allocating space for all function pointers.

struct nss_module is fairly large (536 bytes), but it will be
shared across NSS databases. The old known_function handling
had non-some per-function overhead (at least 32 bytes per looked-up
function, but more for long function anmes), so overall, this is not
too bad. Resolving all functions at load time simplifies locking,
and the repeated lookups should be fast because the caches are hot
at this point.

fw/bug25486 2020-02-15 19:43:34 UTC
elf: Rework exception handling in the dynamic loader [BZ #25486]

Author: Florian Weimer
Author Date: 2020-02-15 13:07:49 UTC

elf: Rework exception handling in the dynamic loader [BZ #25486]

The old exception handling implementation used function interposition
to replace the dynamic loader implementation (no TLS support) with the
libc implementation (TLS support). This results in problems if the
link order between the dynamic loader and libc is reversed (bug 25486).

The new implementation moves the entire implementation of the
exception handling functions back into the dynamic loader, using
THREAD_GETMEM and THREAD_SETMEM for thread-local data support.
These depends on Hurd support for these macros, added in commit
b65a82e4e757c1e6cb7073916 ("hurd: Add THREAD_GET/SETMEM/_NC").

One small obstacle is that the exception handling facilities are used
before the TCB has been set up, so a check is needed if the TCB is
available. If not, a regular global variable is used to store the
exception handling information.

Also rename dl-error.c to dl-catch.c, to avoid confusion with the
dlerror function.

fw/tst-lchmod 2020-02-12 19:58:56 UTC
Linux: Work around kernel bugs in chmod on /proc/self/fd paths

Author: Florian Weimer
Author Date: 2020-02-12 12:40:26 UTC

Linux: Work around kernel bugs in chmod on /proc/self/fd paths

It appears that the ability to change symbolic link modes through such
paths is unintended. On several file systems, the operation fails with
EOPNOTSUPP, even though the symbolic link permissions are updated.
The expected behavior is a failure to update the permissions, without
file system changes.

fw/nss-declare 2020-02-12 14:36:03 UTC
nss_nisplus: Use NSS_DECLARE_MODULE_FUNCTIONS

Author: Florian Weimer
Author Date: 2020-02-12 14:36:03 UTC

nss_nisplus: Use NSS_DECLARE_MODULE_FUNCTIONS

fw/syscall-cleanups 2020-02-09 16:39:40 UTC
microblaze: vfork syscall number is always available

Author: Florian Weimer
Author Date: 2020-02-09 16:07:07 UTC

microblaze: vfork syscall number is always available

Due to the built-in tables, __NR_vfork is always defined, so the
fork-based fallback code is never used.

(It appears that the vfork system call was wired up when the port was
contributed to the kernel.)

alistair/rv32.wip 2020-01-17 05:49:34 UTC
WIP

Author: Alistair Francis
Author Date: 2020-01-17 05:49:34 UTC

WIP

Signed-off-by: Alistair Francis <alistair.francis@wdc.com>

zack/no-nested-includes 2020-01-08 19:17:46 UTC
Rename sys/ucontext.h to bits/ucontext.h.

Author: Zack Weinberg
Author Date: 2019-06-11 17:05:02 UTC

Rename sys/ucontext.h to bits/ucontext.h.

sys/ucontext.h is effectively a bits header. Its contents are
extremely system-specific, and it’s strongly associated with a
specific public header (ucontext.h) that provides a superset of its
definitions, but there are other public headers that also require some
of its definitions. This patch therefore moves it into the bits/
namespace and adjusts all the headers that refer to it. In case there
are external users, a stub is added that includes ucontext.h.

Most of the fallout changes are trivial, but aarch64, ia64 and riscv
need a little more work. aarch64 sys/ucontext.h (now bits/ucontext.h)
was including sys/procfs.h for the definition of elf_greg_t etc;
the simplest fix is to have it include bits/procfs.h instead (and then
that needs to include sys/user.h for user_regs_struct). This is not
ideal but fixing it properly would require disentangling all of the
debugger interface headers which is more than I’m up for at the moment.

ia64 bits/ptrace.h and bits/procfs.h were both including
bits/sigcontext.h, which is only licensed to be included from
signal.h. (I’m not sure how this ever worked, or why it broke with
this patch and not some previous one.) This is fixed by creating
another single-type header, bits/types/__ia64_fpreg.h, which provides
the only thing they need from bits/sigcontext.h.

s/u/s/l/riscv/makecontext.c was defining makecontext with a function
head that didn’t agree with its official prototype (in ucontext.h);
formerly that file did not include ucontext.h, only sys/ucontext.h,
so we were getting away with it, but it’s still wrong. Making the
function head match the prototype actually simplifies the code.

 * sysdeps/generic/sys/ucontext.h: Move to top level bits/ucontext.h.
 Adjust multiple inclusion guard.
 * sysdeps/arm/sys/ucontext.h: Move to sysdeps/arm/bits/ucontext.h.
 Adjust multiple inclusion guard.
 * sysdeps/i386/sys/ucontext.h: Similarly.
 * sysdeps/m68k/sys/ucontext.h: Similarly.
 * sysdeps/mips/sys/ucontext.h: Similarly.
 * sysdeps/unix/sysv/linux/aarch64/sys/ucontext.h: Similarly.
 * sysdeps/unix/sysv/linux/alpha/sys/ucontext.h: Similarly.
 * sysdeps/unix/sysv/linux/arm/sys/ucontext.h: Similarly.
 * sysdeps/unix/sysv/linux/csky/sys/ucontext.h: Similarly.
 * sysdeps/unix/sysv/linux/hppa/sys/ucontext.h: Similarly.
 * sysdeps/unix/sysv/linux/ia64/sys/ucontext.h: Similarly.
 * sysdeps/unix/sysv/linux/m68k/sys/ucontext.h: Similarly.
 * sysdeps/unix/sysv/linux/microblaze/sys/ucontext.h: Similarly.
 * sysdeps/unix/sysv/linux/mips/sys/ucontext.h: Similarly.
 * sysdeps/unix/sysv/linux/nios2/sys/ucontext.h: Similarly.
 * sysdeps/unix/sysv/linux/powerpc/sys/ucontext.h: Similarly.
 * sysdeps/unix/sysv/linux/riscv/sys/ucontext.h: Similarly.
 * sysdeps/unix/sysv/linux/s390/sys/ucontext.h: Similarly.
 * sysdeps/unix/sysv/linux/sh/sys/ucontext.h: Similarly.
 * sysdeps/unix/sysv/linux/sparc/sys/ucontext.h: Similarly.
 * sysdeps/unix/sysv/linux/x86/sys/ucontext.h: Similarly.
 * stdlib/Makefile: Install bits/ucontext.h.

 * stdlib/sys/ucontext.h: New backward compatibility stub header,
 includes ucontext.h.
 * include/sys/ucontext.h: New wrapper.

 * sysdeps/unix/sysv/linux/aarch64/bits/procfs.h: Allow inclusion
 by bits/ucontext.h as well as sys/procfs.h. Include sys/user.h.
 * sysdeps/unix/sysv/linux/aarch64/bits/ucontext.h: Include
 bits/procfs.h instead of sys/procfs.h.

 * sysdeps/unix/sysv/linux/ia64/bits/types/__ia64_fpreg.h:
 New file, contents factored out of ia64/bits/sigcontext.h and
 ia64/bits/ucontext.h.
 * sysdeps/unix/sysv/linux/ia64/Makefile:
 Install bits/types/__ia64_fpreg.h. Merge subdir=misc blocks.
 * sysdeps/unix/sysv/linux/ia64/bits/sigcontext.h
 * sysdeps/unix/sysv/linux/ia64/bits/ucontext.h:
 Include bits/types/__ia64_fpreg.h for struct ia64_fpreg.

 * sysdeps/unix/sysv/linux/ia64/bits/procfs.h:
 Include bits/types/__ia64_fpreg.h for struct ia64_fpreg.
 Don’t include bits/sigcontext.h or bits/ucontext.h.
 * sysdeps/unix/sysv/linux/ia64/sys/ptrace.h:
 Don’t include bits/sigcontext.h.

 * sysdeps/unix/sysv/linux/riscv/makecontext.c: Include
 ucontext.h, not sys/ucontext.h. Correct function head to match
 prototype in ucontext.h. Use va_arg to retrieve all arguments
 past argc.

 * sysdeps/unix/sysv/linux/s390/tst-ptrace-singleblock.c:
 Sort list of includes.

 * signal/signal.h, stdlib/ucontext.h
 * sysdeps/unix/sysv/linux/alpha/bits/procfs-prregset.h
 * sysdeps/unix/sysv/linux/ia64/sys/ptrace.h
 * sysdeps/unix/sysv/linux/riscv/bits/procfs.h
 * sysdeps/unix/sysv/linux/s390/bits/procfs.h:
 Include bits/ucontext.h, not sys/ucontext.h.

 * sysdeps/unix/sysv/linux/aarch64/sigcontextinfo.h
 * sysdeps/unix/sysv/linux/arm/sigcontextinfo.h
 * sysdeps/unix/sysv/linux/nios2/sigcontextinfo.h
 * sysdeps/unix/sysv/linux/riscv/sigcontextinfo.h:
 Include signal.h, not sys/ucontext.h.

 * sysdeps/unix/sysv/linux/arm/register-dump.h
 * sysdeps/unix/sysv/linux/csky/register-dump.h:
 Include ucontext.h, not sys/ucontext.h.

 * sysdeps/unix/sysv/linux/aarch64/ucontext_i.sym
 * sysdeps/unix/sysv/linux/alpha/ucontext-offsets.sym
 * sysdeps/unix/sysv/linux/arm/ucontext_i.sym
 * sysdeps/unix/sysv/linux/csky/abiv2/ucontext_i.sym
 * sysdeps/unix/sysv/linux/hppa/ucontext_i.sym
 * sysdeps/unix/sysv/linux/i386/ucontext_i.sym
 * sysdeps/unix/sysv/linux/ia64/sigcontext-offsets.sym
 * sysdeps/unix/sysv/linux/m68k/m680x0/ucontext_i.sym
 * sysdeps/unix/sysv/linux/powerpc/powerpc32/ucontext_i.sym
 * sysdeps/unix/sysv/linux/powerpc/powerpc64/ucontext_i.sym
 * sysdeps/unix/sysv/linux/mips/ucontext_i.sym
 * sysdeps/unix/sysv/linux/nios2/ucontext_i.sym
 * sysdeps/unix/sysv/linux/riscv/ucontext_i.sym
 * sysdeps/unix/sysv/linux/s390/ucontext_i.sym
 * sysdeps/unix/sysv/linux/sh/sh3/ucontext_i.sym
 * sysdeps/unix/sysv/linux/sh/sh4/ucontext_i.sym
 * sysdeps/unix/sysv/linux/sparc/sparc32/ucontext_i.sym
 * sysdeps/unix/sysv/linux/x86_64/ucontext_i.sym:
 Include stddef.h and signal.h; don’t include any other headers.

 * scripts/check-obsolete-constructs.py (HEADER_ALLOWED_INCLUDES)
 (SYSDEP_ALLOWED_INCLUDES): Update.

zack/obsolete-time-functions 2020-01-06 20:39:28 UTC
Warn when gettimeofday is called with non-null tzp argument.

Author: Zack Weinberg
Author Date: 2019-08-19 17:51:25 UTC

Warn when gettimeofday is called with non-null tzp argument.

Since there are no known uses of gettimeofday's vestigial "get time
zone" feature that are not bugs, add a fortify-style wrapper inline to
sys/time.h that issues a warning whenever gettimeofday is called with
a second argument that is not a compile-time null pointer
constant.

At present this is only possible with GCC; clang does not implement
attribute((warning)). The wrapper is only activated when __OPTIMIZE__
is defined because it throws false positives when optimization is off,
even though it's an always-inline function.

An oversight in the implementation of __builtin_constant_p causes it
to fail to detect compile-time *pointer* constants unless they are
cast to an integer of a different size. (Loss of data in this cast is
harmless; the overall expression is still constant if and only if the
original pointer was.) This is GCC bug 95514. Thanks to
Kamil Cukrowski <kamilcukrowski@gmail.com> for the workaround.
As a precaution, I added a static assertion to debug/warning-nop.c to
make sure that the cast _is_ casting to an integer of a different
size; this is too unlikely a scenario to be worth checking in the
public header, but if someone ever adds a port where short is the
same size as intptr_t, we'll still catch it.

gabriel/powerpc-ieee128-printscan 2019-12-13 22:06:02 UTC
RFC: powerpc64le: Enable support for IEEE long double

Author: Gabriel F. T. Gomes
Author Date: 2019-07-11 14:48:28 UTC

RFC: powerpc64le: Enable support for IEEE long double

Not for glibc-2.31 - Do not commit!

No changes since v3.

Changes since v2:

  - Added definition of LDBL_IBM128_COMPAT_VERSION and
    LDBL_IBM128_VERSION (moved from a previous commit).

Changes since v1:

  - Use __LONG_DOUBLE_USES_FLOAT128 directly.

-- 8< --
On platforms where long double may have two different formats, i.e.: the
same format as double (64-bits) or something else (128-bits), building
with -mlong-double-128 is the default and function calls in the user
program match the name of the function in Glibc. When building with
-mlong-double-64, Glibc installed headers redirect such calls to the
appropriate function.

This patch adds similar redirections to be used by user code builds in
IEEE long double mode (-mabi=ieeelongdouble). It also skips some uses
of libc_hidden_proto in internal headers, because they also produce
redirections, causing a redirection conflict.

PS: Missing NEWS entry.

vineet/arc-glibc-2.30-time_t-32-bit 2019-12-09 23:23:35 UTC
build-many-glibcs.py: Enable ARC hard float builds

Author: Vineet Gupta
Author Date: 2019-11-07 23:24:05 UTC

build-many-glibcs.py: Enable ARC hard float builds

Signed-off-by: Vineet Gupta <vgupta@synopsys.com>

fw/dlopen-nodelete-reloc 2019-12-03 08:27:57 UTC
WIP dlopen NODELETE test

Author: Florian Weimer
Author Date: 2019-12-03 08:26:03 UTC

WIP dlopen NODELETE test

fw/bug24214 2019-11-29 15:37:58 UTC
elf: Do not run IFUNC resolvers for LD_DEBUG=unused [BZ #24214]

Author: Florian Weimer
Author Date: 2019-11-29 15:37:58 UTC

elf: Do not run IFUNC resolvers for LD_DEBUG=unused [BZ #24214]

This commit adds missing skip_ifunc checks to aarch64, arm, i386,
sparc, and x86_64. A new test case ensures that IRELATIVE IFUNC
resolvers do not run in various diagnostic modes of the dynamic
loader.

Tested on x86_64-linux-gnu, i686-linux-gnu, aarch64-linux-gnu,
s390-linux-gnu, s390x-linux-gnu, powerpc64le-linux-gnu. Built with
build-many-glibcs.py.

release/2.24/master 2019-11-28 15:22:07 UTC
libio: Disable vtable validation for pre-2.1 interposed handles [BZ #25203]

Author: Florian Weimer
Author Date: 2019-11-22 21:10:42 UTC

libio: Disable vtable validation for pre-2.1 interposed handles [BZ #25203]

Commit c402355dfa7807b8e0adb27c009135a7e2b9f1b0 ("libio: Disable
vtable validation in case of interposition [BZ #23313]") only covered
the interposable glibc 2.1 handles, in libio/stdfiles.c. The
parallel code in libio/oldstdfiles.c needs similar detection logic.

Fixes (again) commit db3476aff19b75c4fdefbe65fcd5f0a90588ba51
("libio: Implement vtable verification [BZ #20191]").

Change-Id: Ief6f9f17e91d1f7263421c56a7dc018f4f595c21
(cherry picked from commit cb61630ed712d033f54295f776967532d3f4b46a)

release/2.25/master 2019-11-28 15:21:26 UTC
libio: Disable vtable validation for pre-2.1 interposed handles [BZ #25203]

Author: Florian Weimer
Author Date: 2019-11-22 21:10:42 UTC

libio: Disable vtable validation for pre-2.1 interposed handles [BZ #25203]

Commit c402355dfa7807b8e0adb27c009135a7e2b9f1b0 ("libio: Disable
vtable validation in case of interposition [BZ #23313]") only covered
the interposable glibc 2.1 handles, in libio/stdfiles.c. The
parallel code in libio/oldstdfiles.c needs similar detection logic.

Fixes (again) commit db3476aff19b75c4fdefbe65fcd5f0a90588ba51
("libio: Implement vtable verification [BZ #20191]").

Change-Id: Ief6f9f17e91d1f7263421c56a7dc018f4f595c21
(cherry picked from commit cb61630ed712d033f54295f776967532d3f4b46a)

fw/libc-early-init-2 2019-11-28 13:28:44 UTC
Implement __libc_early_init

Author: Florian Weimer
Author Date: 2019-10-11 14:11:21 UTC

Implement __libc_early_init

This function is defined in libc.so, and the dynamic loader calls
right after relocation has been finished, before any ELF constructors
or the preinit function is invoked. It is also used in the static
build for initializing parts of the static libc.

To locate __libc_early_init, a direct symbol lookup function is used,
_dl_lookup_direct. It does not search the entire symbol scope and
consults merely a single link map. This function could also be used
to implement lookups in the vDSO (as an optimization).

A per-namespace variable (libc_map) is added for locating libc.so,
to avoid repeated traversals of the search scope. It is similar to
GL(dl_initfirst). An alternative would have been to thread a context
argument from _dl_open down to _dl_map_object_from_fd (where libc.so
is identified). This could have avoided the global variable, but
the change would be larger as a result. It would not have been
possible to use this to replace GL(dl_initfirst) because that global
variable is used to pass the function pointer past the stack switch
from dl_main to the main program. Replacing that requires adding
a new argument to _dl_init, which in turn needs changes to the
architecture-specific libc.so startup code written in assembler.

__libc_early_init should not be used to replace _dl_var_init (as
it exists today on some architectures). Instead, _dl_lookup_direct
should be used to look up a new variable symbol in libc.so, and
that should then be initialized from the dynamic loader, immediately
after the object has been loaded in _dl_map_object_from_fd (before
relocation is run). This way, more IFUNC resolvers which depend on
these variables will work.

fw/no-symlinks 2019-11-28 12:40:01 UTC
Add --disable-major-minor-libraries configure option

Author: Florian Weimer
Author Date: 2019-11-28 11:57:25 UTC

Add --disable-major-minor-libraries configure option

This option can be used to increase compatibility with package managers.
The name was choosen to avoid confusion with all the different versions
(glibc release, soname versions, symbol versions).

This patch makes all uses of -$(version).so conditional on the new
$(major-minor-libraries) flag. The alternative install targets write
the implementation DSOs directly to the locations determined by their
sonames, skipping the creation of an intermediate symbolic link.

install-symbolic-link in Makerules is updated not to require the
$(symbolic-link-list) file because it may not exist in
--disable-major-minor-libraries mode.

I verified that by default, the install tree is the same as before
on x86_64-linux-gnu except for the changes in the manual.

fw/bug25225 2019-11-26 13:53:59 UTC
x86: Assume --enable-cet if GCC defaults to CET [BZ #25225]

Author: Florian Weimer
Author Date: 2019-11-26 13:48:56 UTC

x86: Assume --enable-cet if GCC defaults to CET [BZ #25225]

This links in CET support if GCC defaults to CET. Otherwise, __CET__
is defined, yet CET functionality is not compiled and linked into the
dynamic loader, resulting in a linker failure due to undefined
references to _dl_cet_check and _dl_open_check.

release/2.23/master 2019-11-22 13:09:58 UTC
rtld: Check __libc_enable_secure before honoring LD_PREFER_MAP_32BIT_EXEC (CV...

Author: Marcin Kościelnicki
Author Date: 2019-11-20 23:20:15 UTC

rtld: Check __libc_enable_secure before honoring LD_PREFER_MAP_32BIT_EXEC (CVE-2019-19126) [BZ #25204]

The problem was introduced in glibc 2.23, in commit
b9eb92ab05204df772eb4929eccd018637c9f3e9
("Add Prefer_MAP_32BIT_EXEC to map executable pages with MAP_32BIT").

(cherry picked from commit d5dfad4326fc683c813df1e37bbf5cf920591c8e)

fw/bug25097 2019-11-03 17:10:20 UTC
Redefine _IO_iconv_t to store a single gconv step pointer [BZ #25097]

Author: Florian Weimer
Author Date: 2019-11-03 10:39:56 UTC

Redefine _IO_iconv_t to store a single gconv step pointer [BZ #25097]

libio can only deal with gconv conversions which consist of a single
step. Not using __gconv_info simplifies the data structures somewhat.

This eliminates a new GCC 10 warning about subscribing an inner
zero-length array.

Tested on x86_64-linux-gnu with mainline GCC. Built with
build-many-glibcs.py, also with mainline GCC. Due to GCC PR 92039,
there are failures left on 32-bit architectures with float128 support.

Change-Id: I8b4c489b619a53154712ff32e1b6f13bb92d4203

fw/bug25157 2019-11-02 20:40:26 UTC
Properly initialize audit cookie for the dynamic loader [BZ #25157]

Author: Florian Weimer
Author Date: 2019-11-02 20:40:26 UTC

Properly initialize audit cookie for the dynamic loader [BZ #25157]

The l_audit array is indexed by audit module, not audit function.

fw/bug25112 2019-10-29 17:11:36 UTC
Remove all loaded objects if dlopen fails [BZ #20839]

Author: Florian Weimer
Author Date: 2019-10-28 18:49:46 UTC

Remove all loaded objects if dlopen fails [BZ #20839]

fw/elf-fixups 2019-10-29 11:23:48 UTC
Introduce DL_LOOKUP_FOR_RELOCATE flag for _dl_lookup_symbol_x

Author: Florian Weimer
Author Date: 2019-10-29 11:23:48 UTC

Introduce DL_LOOKUP_FOR_RELOCATE flag for _dl_lookup_symbol_x

This will allow changes in dependency processing during non-lazy
binding, for more precise processing of NODELETE objects: During
initial relocation in dlopen, the fate of NODELETE objects is still
unclear, so objects which are depended upon by NODELETE objects
cannot immediately be marked as NODELETE.

google/grte/v4-2.19/master 2019-08-14 17:20:07 UTC
Forestall a filesystem bug while building shlib.lds by using a temp file

Author: Stan Shebs
Author Date: 2019-08-14 17:20:07 UTC

Forestall a filesystem bug while building shlib.lds by using a temp file

arm/ilp32 2019-08-01 13:47:11 UTC
aarch64: Update ILP32 abilists for glibc 2.30

Author: Szabolcs Nagy
Author Date: 2019-08-01 13:47:11 UTC

aarch64: Update ILP32 abilists for glibc 2.30

This will need to be merged with the initial ilp32 abilist commit.

2019-08-01 Szabolcs Nagy <szabolcs.nagy@arm.com>

 * sysdeps/unix/sysv/linux/aarch64/ilp32/libc.abilist: Update.
 * sysdeps/unix/sysv/linux/aarch64/ilp32/libpthread.abilist: Update.

zack/gtod-no-timezone 2019-07-28 00:14:35 UTC
Remove access to legacy time zone support in gettimeofday etc.

Author: Zack Weinberg
Author Date: 2019-07-27 23:26:23 UTC

Remove access to legacy time zone support in gettimeofday etc.

gettimeofday and ftime are not quite fully implementable on systems
that only provide a primitive equivalent to clock_gettime, because
they can also report information about a system-wide time zone. This
mechanism has been deprecated for many years because it can only be
configured on a system-wide basis, and because it only supports the
simplest kinds of daylight-savings rules, but we’ve supported it on a
best-effort basis until now. This patch removes our support for it:

 * The type 'struct timezone' is still declared as a complete type in
   <sys/time.h>, but code that uses its fields (tz_minuteswest and
   tz_dsttime) will not compile.

 * Similarly, code that uses the 'timezone' and 'dstflag' fields of
   struct timeb will not compile anymore. (This is a willful
   violation of the older iterations of XPG that included
   sys/timeb.h; the relevant conformance tests are XFAILed.)

 * Old binaries that pass a non-NULL 'tzp' pointer to gettimeofday
   will always receive a 'struct timezone' whose tz_minuteswest and
   tz_dsttime fields are zero (as if the system were operating on UTC).

 * Similarly, old binaries that call ftime will always receive a
   'struct timeb' whose timezone and dstflag fields are zero.

 * If the 'tzp' argument to settimeofday is not NULL, the call will fail
   and set errno to ENOSYS. (This was already the case on the Hurd.)

 * glibc will always pass a second argument of NULL when invoking a
   kernel-provided gettimeofday.

 * On Alpha, the compat symbols gettimeofday@GLIBC_2.0 and
   settimeofday@GLIBC_2.0 (which used 32-bit time_t) now convert
   their arguments and call system primitives that use 64-bit time_t,
   instead of invoking legacy “osf” system calls.

ChangeLog:

 * time/sys/time.h (struct timezone): Remove tz_minuteswest
 and tz_dsttime fields; replace with padding to preserve the size.
 * time/sys/timeb.h (struct timeb): Remove timezone and dstflag
 fields; replace with padding to preserve the size.
 * conform/Makefile: XFAIL tests because struct timeb is no longer
 fully conformant with Unix98.

 * sysdeps/posix/gettimeofday.c
 * sysdeps/unix/sysv/linux/gettimeofday.c
 * sysdeps/unix/sysv/linux/aarch64/gettimeofday.c
 * sysdeps/unix/sysv/linux/powerpc/gettimeofday.c
 * sysdeps/unix/sysv/linux/x86/gettimeofday.c
 (gettimeofday): When ‘tz’ argument is not NULL, just clear it.
 Always pass a null pointer as the second argument to a
 gettimeofday (v)syscall.

 * sysdeps/unix/bsd/ftime.c: Unconditionally clear the memory that
 was formerly the ‘timezone’ and ‘dstflag’ fields of struct timeb.

 * sysdeps/unix/syscalls.list: Remove entry for settimeofday.
 * sysdeps/unix/settimeofday.c: New file.
 (settimeofday): Fail with ENOSYS if ‘tz’ argument is not NULL.

 * sysdeps/unix/sysv/linux/alpha/syscalls.list: Remove entries for
        osf_gettimeofday, osf_settimeofday, and settimeofday.
 * sysdeps/unix/sysv/linux/alpha/osf_gettimeofday.c:
 New file. Call the 64-bit gettimeofday, then convert to a
 32-bit struct timeval. On overflow, saturate the struct timeval
 and fail with EOVERFLOW.
 * sysdeps/unix/sysv/linux/alpha/osf_settimeofday.c: New file.
        Convert to a 64-bit struct timeval and call 64-bit settimeofday.
        Fail with ENOSYS if ‘tz’ argument is not NULL.

 * sunrpc/auth_des.c, sunrpc/auth_unix.c
 * sysdeps/posix/time.c, sysdeps/unix/stime.c:
 Remove unnecessary casts of NULL.

 * sysdeps/unix/sysv/linux/powerpc/time.c (time_syscall):
 Use (void *)0 instead of NULL when passing a null pointer
 as an untyped argument.

 * manual/time.texi: Remove documentation of fields of
 struct timezone. Revise text to further emphasize that
 the second argument to gettimeofday/settimeofday should
 always be a null pointer.

fw/getdents64 2019-07-25 10:48:41 UTC
Linux: Move getdents64 to <dirent.h>

Author: Florian Weimer
Author Date: 2019-07-25 10:48:41 UTC

Linux: Move getdents64 to <dirent.h>

This matches the location of the declaration in musl.

fw/gcc-10-fixes 2019-07-22 12:02:40 UTC
nptl: Use uintptr_t for address diagnostic in nptl/tst-pthread-getattr

Author: Florian Weimer
Author Date: 2019-07-22 12:02:40 UTC

nptl: Use uintptr_t for address diagnostic in nptl/tst-pthread-getattr

Recent GCC versions warn about the attempt to return the address of a
local variable:

tst-pthread-getattr.c: In function ‘allocate_and_test’:
tst-pthread-getattr.c:54:10: error: function returns address of local variable [-Werror=return-local-addr]
   54 | return mem;
      | ^~~
In file included from ../include/alloca.h:3,
                 from tst-pthread-getattr.c:26:
../stdlib/alloca.h:35:23: note: declared here
   35 | # define alloca(size) __builtin_alloca (size)
      | ^~~~~~~~~~~~~~~~~~~~~~~
tst-pthread-getattr.c:51:9: note: in expansion of macro ‘alloca’
   51 | mem = alloca ((size_t) (mem - target));
      | ^~~~~~

The address itself is used in a check in the caller, so using
uintptr_t instead is reasonable.

fw/linux-5.2 2019-07-22 09:01:17 UTC
Linux: Include <linux/sockios.h> in <bits/socket.h> under __USE_MISC

Author: Florian Weimer
Author Date: 2019-07-22 09:01:17 UTC

Linux: Include <linux/sockios.h> in <bits/socket.h> under __USE_MISC

Historically, <asm/socket.h> (which is included from <bits/socket.h>)
provided ioctl operations for sockets. User code accessed them
through <sys/socket.h>. The kernel UAPI headers have removed these
definitions in favor of <linux/sockios.h>. This commit makes them
available via <sys/socket.h> again.

nsz/mathvec 2019-07-16 10:01:51 UTC
aarch64: add vector sin, cos, log and pow abi symbols

Author: Szabolcs Nagy
Author Date: 2019-06-28 14:23:27 UTC

aarch64: add vector sin, cos, log and pow abi symbols

Add simple assembly implementations that fall back to scalar code,
similar to the vector exp code.

2019-07-15 Szabolcs Nagy <szabolcs.nagy@arm.com>

 * sysdeps/aarch64/fpu/Makefile: Add functions.
 * sysdeps/aarch64/fpu/Versions: Add symbols.
 * sysdeps/aarch64/fpu/libmvec_double_vlen2_cos.S: New file.
 * sysdeps/aarch64/fpu/libmvec_double_vlen2_log.S: New file.
 * sysdeps/aarch64/fpu/libmvec_double_vlen2_pow.S: New file.
 * sysdeps/aarch64/fpu/libmvec_double_vlen2_sin.S: New file.
 * sysdeps/aarch64/fpu/libmvec_float_vlen4_cosf.S: New file.
 * sysdeps/aarch64/fpu/libmvec_float_vlen4_logf.S: New file.
 * sysdeps/aarch64/fpu/libmvec_float_vlen4_powf.S: New file.
 * sysdeps/aarch64/fpu/libmvec_float_vlen4_sinf.S: New file.
 * sysdeps/aarch64/fpu/test-double-vlen2-wrappers.c: Add wrappers.
 * sysdeps/aarch64/fpu/test-float-vlen4-wrappers.c: Add wrappers.
 * sysdeps/aarch64/libm-test-ulps: Update.
 * sysdeps/unix/sysv/linux/aarch64/libmvec.abilist: Update.

azanella/atexit-order 2019-07-11 18:49:24 UTC
stdlib: Make atexit to not act as __cxa_atexit

Author: Adhemerval Zanella
Author Date: 2019-06-12 13:37:11 UTC

stdlib: Make atexit to not act as __cxa_atexit

This is patch to addresses the issue brought in recent discussion
regarding atexit and shared libraries [1] [2]. As indicated in the
libc-alpha discussion, the issue is since atexit uses __cxa_atexit
its interaction __cxa_finalize could lead to atexit handlers being
executed in a different order than the expected one. The github
project gives a small example that triggers it [3].

The changes I could come with changes slight the atexit semantic
as described in my last email [4]. So basically the changes are:

  1. Add the __atexit symbol which is linked as __cxa_finalize in
     static mode (so __dso_handle is correctly set). The __atexit
     symbol adds an ef_at exit_function entry on __exit_funcs,
     different than an ef_cxa one from __cxa_atexit.

     Old binaries would still call __cxa_atexit, so we do not actually
     need to add a compat symbol.

  2. Make __cxa_finalize to handle ef_at as well, similar to ef_cxa.

  3. Change how the internal exit handler are organized, so ef_at
     and ef_on handles (registered by atexit and on_exit) are executed
     before ef_cxa (registered by __cxa_atexit).

     Each entry set (struct exit_function_list) has on type associated
     (el_at or el_cxa) to represent the internal handle it contains.
     New insertions (done by the __atexit, __cxa_atexit, etc.) keep the
     node orders, with following constraints:

     3.1. el_at nodes should be prior el_cxa.
     3.2. el_at should contain only ef_at, ef_on, or ef_free elements.
     3.3. el_cxa should contain only ef_cxa or ef_free elements.
     3.4. new insertions on each node type should be be kept in lifo order.
     3.5. the original first element should be last one (since it is static
          allocated and 'exit' will deallocated the nodes in order. */

     So the execution on both __cxa_finalize, exit, or quick_exit will
     iterate over the list by executing first atexit/on_exit handlers and
     then __cxa_atexit ones. New handlers added by registered functions
     are handled as before, by using the ef_free entry and reseting the
     list iteration.

[1] https://sourceware.org/ml/libc-alpha/2019-06/msg00229.html
[2] https://sourceware.org/ml/libc-help/2019-06/msg00025.html
[3] https://github.com/mulle-nat/ld-so-breakage
[4] https://sourceware.org/ml/libc-alpha/2019-06/msg00231.html

fw/resolv-cleanups 2019-05-17 09:10:51 UTC
nss_dns: Remove RES_USE_INET6 handling

Author: Florian Weimer
Author Date: 2019-05-17 09:10:51 UTC

nss_dns: Remove RES_USE_INET6 handling

Since commit 3f8b44be0a658266adff5ece1e4bc3ce097a5dbe ("resolv:
Remove support for RES_USE_INET6 and the inet6 option"),
res_use_inet6 () always evaluates to false.

fw/bug24562 2019-05-16 10:08:38 UTC
WIP Support exotic character sets in __fxprintf [BZ #24562]

Author: Florian Weimer
Author Date: 2019-05-16 10:08:37 UTC

WIP Support exotic character sets in __fxprintf [BZ #24562]

This does not quite work because vfprintf has a similar
incorrect assumption.

fw/tst-mallocfork2 2019-05-03 15:46:36 UTC
malloc/tst-mallocfork2: Use process-shared barriers

Author: Florian Weimer
Author Date: 2019-05-03 15:46:36 UTC

malloc/tst-mallocfork2: Use process-shared barriers

This synchronization method has a lower overhead and makes
it more likely that the signal arrives during one of the critical
functions.

Also test for fork deadlocks explicitly.

fw/twalk_r-iconv 2019-05-02 10:37:21 UTC
iconv: Use __twalk_r in __gconv_release_shlib

Author: Florian Weimer
Author Date: 2019-05-02 10:37:21 UTC

iconv: Use __twalk_r in __gconv_release_shlib

google/grte/v6-2.29/master 2019-05-01 01:24:46 UTC
As with gettimeofday, avoid vdso for clang-compiled time()

Author: Stan Shebs
Author Date: 2018-03-13 18:37:02 UTC

As with gettimeofday, avoid vdso for clang-compiled time()

fw/bug21242 2019-04-15 15:39:45 UTC
ld.so: Introduce delayed relocation processing

Author: Florian Weimer
Author Date: 2018-06-06 14:02:02 UTC

ld.so: Introduce delayed relocation processing

This makes it possible to use IFUNC resolvers which depend
on relocations themselves, as long as these reloctions do
not depend on IFUNCs.

So far, delayed relocation processing is only implemented for
x86-64.

fw/bug20018-backport 2019-02-04 14:47:59 UTC
Restore GLIBC_PRIVATE ABI after CVE-2016-10739 fix [BZ #20018]

Author: Florian Weimer
Author Date: 2019-02-04 14:47:59 UTC

Restore GLIBC_PRIVATE ABI after CVE-2016-10739 fix [BZ #20018]

This commit avoids adding the __inet_aton_exact@GLIBC_PRIVATE
symbol. In master, the separately-compiled getaddrinfo
implementation in nscd needs it, however such an internal ABI change
is not desirable on a release branch if it can be avoided easily.

siddhesh/changelog-begone 2019-01-12 11:16:42 UTC
Another major update

Author: Siddhesh Poyarekar
Author Date: 2019-01-12 11:09:16 UTC

Another major update

aaribaud/bugzilla/23789/v4 2018-11-02 06:03:52 UTC
Ensure mktime sets errno on error [BZ #23789]

Author: Albert ARIBAUD (3ADEV)
Author Date: 2018-10-24 12:43:06 UTC

Ensure mktime sets errno on error [BZ #23789]

Posix mandates that mktime set errno to EOVERFLOW
on error, but the glibc mktime wasn't doing it so
far.

Fix this and add a test to prevent regressions.
The fix also fixes the same issue in timegm.

Tested with 'make check' on x86-linux-gnu and
i686-linux-gnu.

        * time/Makefile: Add bug-mktime4.
 * time/bug-mktime4.c: New file.
 * time/mktime.c
 (__mktime_internal): Set errno to EOVERFLOW on error.
 (mktime): Move call to __tzset inside conditional.

aaribaud/bugzilla/23789/v2 2018-10-27 15:18:02 UTC
Ensure mktime sets errno on error (bug 23789)

Author: Albert ARIBAUD (3ADEV)
Author Date: 2018-10-24 12:43:06 UTC

Ensure mktime sets errno on error (bug 23789)

Posix mandates that mktime set errno to EOVERFLOW
on error, that it, upon retuning -1, but the glibc
mktime does not so far on 32-bit architectures.

Fix this and add a test to prevent regressions.

The test was run through 'make check' on i686-linux-gnu,
then the fix was added and 'make check' run again.

 * time/mktime.c
 (mktime): Set errno to EOVERFLOW on error.
 * time/bug-mktime4.c: New file.
        * time/Makefile: Add bug-mktime4.

aaribaud/y2038 2018-10-24 10:53:27 UTC
Y2038: add _TIME_BITS support

Author: Albert ARIBAUD (3ADEV)
Author Date: 2017-09-06 08:00:42 UTC

Y2038: add _TIME_BITS support

This makes all previously defined Y2038-proof API types, functions and
implementations the default when _TIME_BITS==64 and __WORDSIZE==32 (so
that 64-bit architectures are unaffected).

Note: it is assumed that the API is consistent, i.e. for each API type
which is enabled here, all API functions which depend on this type are
enabled and mapped to Y2038-proof implementations.

azanella/aarch64-mempcpy 2018-07-05 12:18:18 UTC
aarch64: ifunc mem* cleanups

Author: Adhemerval Zanella
Author Date: 2018-07-05 12:08:16 UTC

aarch64: ifunc mem* cleanups

aaribaud/y2038-submitted-v1 2018-06-13 08:21:00 UTC
Y2038: make __mktime_internal compatible with 64-bit-time

Author: Albert ARIBAUD (3ADEV)
Author Date: 2018-05-02 11:15:50 UTC

Y2038: make __mktime_internal compatible with 64-bit-time

This implies that its callers be 64-bit-time compatible too.
It is done by creating 64-bit-time versions of these and
turning their original 32-bit-time versions into wrappers
(at a slight execution time cost).

The callers affected are:

      * mktime
      * timelocal (as an alias of mktime)
      * timegm

zack/elf-builtin-expect-conversion 2018-06-12 14:02:27 UTC
Convert __builtin_expect to __glibc_(un)likely throughout elf/.

Author: Zack Weinberg
Author Date: 2018-06-01 16:53:59 UTC

Convert __builtin_expect to __glibc_(un)likely throughout elf/.

In the previous patch I didn't change a use of __builtin_expect to
__glibc_(un)likely that happened to be right next to the code I was
actually working on; Andreas asked why not, and I said that there were
a bunch more uses of __builtin_expect in that file and I would convert
them all in a separate patch. This is that patch, converting all of
elf/.

I would appreciate someone checking over this patch very carefully
indeed. In a whole bunch of places, __builtin_expect was used in a
way that did not map mechanically to the newer convention. The test
suite caught one mistake; I'm not confident I didn't make any more.

Writing this patch gave me a deeper appreciation for why we _want_ to
switch to __glibc_(un)likely, but also for how difficult it can be. I
now think that people should _not_ be asked to change existing uses of
__builtin_expect in a patch whose purpose is something else.

 * elf/dl-addr.c, elf/dl-cache.c, elf/dl-close.c, elf/dl-deps.c
 * elf/dl-environ.c, elf/dl-error-skeleton.c, elf/dl-fini.c
 * elf/dl-fptr.c, elf/dl-init.c, elf/dl-libc.c, elf/dl-minimal.c
 * elf/dl-open.c, elf/dl-reloc.c, elf/dl-runtime.c
 * elf/dl-sysdep.c, elf/dl-tls.c, elf/dl-version.c, elf/ldconfig.c
 * elf/rtld.c: Replace __builtin_expect with __glibc_likely or
 __glibc_unlikely, as appropriate, throughout.

hjl/pr23240/fw 2018-06-06 15:32:12 UTC
Check non-lazy binding with LD_PRELOAD and weak reference

Author: H.J. Lu
Author Date: 2018-05-27 14:15:35 UTC

Check non-lazy binding with LD_PRELOAD and weak reference

Check non-lazy binding with

1. Reference to unrelocated IFUNC function with LD_PRELOAD.
2. Weak reference.

 [BZ #23176]
 [BZ #23240]
 * elf/Makefile (tests): Add reldep6a.
 (tests-internal): Add ifuncpreload1
 (modules-names): Add ifuncpreloadmod1a and ifuncpreloadmod1b.
 ($(objpfx)reldep6a): New.
 ($(objpfx)reldep6a.out): Likewise.
 (reldep6a-ENV): Likewise.
 ($(objpfx)ifuncpreload1): Likewise.
 ($(objpfx)ifuncpreload1.out): Likewise.
 (ifuncpreload1-ENV): Likewise.
 * elf/ifuncpreload1.c: New file.
 * elf/ifuncpreloadmod1a.c: Likewise.
 * elf/ifuncpreloadmod1b.c: Likewise.
 * elf/reldep6a.c: Likewise.

fw/libm-noprivate-2.27 2018-05-10 10:42:05 UTC
Use custom x86 feature selection in libm

Author: Florian Weimer
Author Date: 2018-05-10 09:50:00 UTC

Use custom x86 feature selection in libm

ibm/2.22/master 2018-04-19 18:21:54 UTC
Merge branch 'release/2.22/master' into ibm/2.22/master

Author: Tulio Magno Quites Machado Filho
Author Date: 2018-04-19 18:21:54 UTC

Merge branch 'release/2.22/master' into ibm/2.22/master

release/2.22/master 2018-04-13 17:30:20 UTC
glob: Fix buffer overflow during GLOB_TILDE unescaping [BZ #22332]

Author: Paul Eggert
Author Date: 2017-10-22 08:00:57 UTC

glob: Fix buffer overflow during GLOB_TILDE unescaping [BZ #22332]

(cherry picked from commit a159b53fa059947cc2548e3b0d5bdcf7b9630ba8)

zack/wip-check-localplt-2 2018-03-26 13:05:19 UTC
WIP finer-grained, more aggressive local PLT call check

Author: Zack Weinberg
Author Date: 2018-03-18 21:01:06 UTC

WIP finer-grained, more aggressive local PLT call check

zack/wip-pthread-no-dupe-defns 2018-03-26 12:30:46 UTC
[Bug 15368] Move pthread_kill to libc and use it to implement raise.

Author: Zack Weinberg
Author Date: 2018-03-23 13:16:59 UTC

[Bug 15368] Move pthread_kill to libc and use it to implement raise.

The fix for bug #15368 was unnecessarily Linux-specific. To recap,
POSIX specifies raise to be async-signal-safe, but also specifies it
to be equivalent to pthread_kill(pthread_self(), sig), which is not
an async-signal-safe sequence of operations; a signal handler could
run in between pthread_self and pthread_kill, and do something (such
as calling fork, which is also async-signal-safe) that would invalidate
the thread descriptor. This is even true in the hypothetical case of
a port that doesn't implement multithreading: kill(getpid(), sig) will
fire the signal twice if a signal handler runs in between, calls fork,
and then returns on both sides of the fork. I don't see anything in
the standards to forbid that.

The Linux-specific fix was to override the definitions of raise in
both libpthread and libc to the same unitary function that blocks
signals, retrieves TID and PID directly from the kernel, calls tgkill,
and only then unblocks signals. This patch generalizes that to any
port: pthread_kill is moved from libpthread to libc, with a forwarding
stub left behind. The definition of raise in libpthread is also
replaced with a forwarding stub. The Linux-specific definition of
raise is deleted; those ports will now use sysdeps/pthread/raise.c,
which blocks signals first, then calls pthread_self and pthread_kill,
and then unblocks signals. Similarly, sysdeps/posix/raise.c (which
would be used on a port that didn't implement multithreading) blocks
signals, calls getpid and kill, and then unblocks signals. Thus,
ports need only implement the primitives correctly and do not need to
worry about making raise async-signal-safe.

The only wrinkle was that up till now, we did not bother initializing
the ->tid field of the initial thread's descriptor unless libpthread
was loaded; now that raise calls pthread_kill even in a single-
threaded environment, that won't fly. This is abstractly easy to fix;
the tricky part was figuring out _where_ to put the calls (two of
them, as it happens) to __pthread_initialize_pids, and I'd appreciate
careful eyes on those changes.

You might be wondering why it's safe to rely on the TID in the thread
descriptor, rather than calling gettid directly. Since all signals
are blocked from before calling pthread_self until after pthread_kill
uses the TID to call tgkill, the question is whether some _other_
thread could do something that would invalidate the calling thread's
descriptor, and I believe there is no such thing.

While I was at it I fixed another bug: raise was returning an error
code on failure (like pthread_kill does) instead of setting errno as
specified. This is user-visible but I don't think it's worth recording
as a fixed bug, nobody bothers checking whether raise failed anyway.

 * nptl/pt-raise.c
 * sysdeps/unix/sysv/linux/pt-raise.c
 * sysdeps/unix/sysv/linux/raise.c:
 Remove file.

 * sysdeps/unix/sysv/linux/pthread_kill.c: Use __is_internal_signal
 to check for forbidden signals. Use INTERNAL_SYSCALL_CALL to call
 getpid. Provide __libc_pthread_kill, with __pthread_kill as
 strong alias and pthread_kill as weak alias.

 * sysdeps/posix/raise.c: Block signals around the calls to
 __getpid and __kill. Provide __libc_raise, with raise as strong
 alias, libc_hidden_def for raise, and gsignal as weak alias.
 * sysdeps/pthread/raise.c: New file. Implement by blocking
 signals, calling pthread_self and pthread_kill, and then
 unblocking signals again. Provide same symbols as above.

 * sysdeps/generic/internal-signals.h: Define all of the same
 functions that sysdeps/unix/sysv/linux/internal-signals.h does,
 with sensible default definitions.
 * sysdeps/unix/sysv/linux/internal-signals.h: Clarify comments.

 * nptl/pthread_kill.c: Define __libc_pthread_kill, with
 __pthread_kill as strong alias and pthread_kill as weak alias.
 * nptl/pthread_self.c: Define __pthread_self, with
 pthread_self as weak alias.
 * signal/raise.c: Define __libc_raise, with raise as strong alias,
 libc_hidden_def for raise, and gsignal as weak alias.

 * nptl/Makefile: Move pthread_kill from libpthread-routines to
 routines. Remove pt-raise from libpthread-routines.
 * nptl/Versions (libc/GLIBC_2.28): Add pthread_kill.
 (libc/GLIBC_PRIVATE): Add __libc_pthread_kill and __libc_raise.
 * sysdeps/generic/pt-compat-stubs.S: Add stubs for raise and
 pthread_kill.

 * nptl/nptl-init.c (__pthread_initialize_minimal_internal):
 Don't call __pthread_initialize_pids here.
 * csu/libc-tls.c (__libc_setup_tls):
        Call __pthread_initialize_pids after all other setup.
 * elf/rtld.c (init_tls): Likewise.

 * include/pthreadP.h: New forwarder.
 * include/pthread.h: Add multiple inclusion guard. Declare
 __pthread_self.
 * include/signal.h: Declare __pthread_kill.

 * sysdeps/**/libc.abilist (GLIBC_2.28): Add pthread_kill.

mfabian/collation-update-2.27 2018-03-02 10:31:16 UTC
Remove the lines from cmn_TW.UTF-8.in which cannot work at the moment.

Author: Mike FABIAN
Author Date: 2017-12-21 17:56:52 UTC

Remove the lines from cmn_TW.UTF-8.in which cannot work at the moment.

See this bug https://sourceware.org/bugzilla/show_bug.cgi?id=22898

These lines don’t yet work because of a glibc bug, not because of
problems in the locale data. No matter what sorting rules one uses,
these characters cannot be sorted at all at the moment.

As soon as that bug is fixed, these lines should be added back to the
test file.

 * localedata/cmn_TW.UTF-8.in: Remove the lines which cannot
        be sorted correctly at the moment because of a bug.

shebs/clangify 2018-02-07 21:00:02 UTC
Use clang integrated assembler except when asm is output and not required to ...

Author: Stan Shebs
Author Date: 2018-02-07 21:00:02 UTC

Use clang integrated assembler except when asm is output and not required to be valid

hjl/pr22715/2.24 2018-01-17 14:36:33 UTC
x86-64: Properly align La_x86_64_retval to VEC_SIZE [BZ #22715]

Author: H.J. Lu
Author Date: 2018-01-16 03:39:56 UTC

x86-64: Properly align La_x86_64_retval to VEC_SIZE [BZ #22715]

_dl_runtime_profile calls _dl_call_pltexit, passing a pointer to
La_x86_64_retval which is allocated on stack. The lrv_vector0
field in La_x86_64_retval must be aligned to size of vector register.
When allocating stack space for La_x86_64_retval, we need to make sure
that the address of La_x86_64_retval + RV_VECTOR0_OFFSET is aligned to
VEC_SIZE. This patch checks the alignment of the lrv_vector0 field
and pads the stack space if needed.

Tested with x32 and x86-64 on SSE4, AVX and AVX512 machines. It fixed

FAIL: elf/tst-audit10
FAIL: elf/tst-audit4
FAIL: elf/tst-audit5
FAIL: elf/tst-audit6
FAIL: elf/tst-audit7

on x32 AVX512 machine.

(cherry picked from commit 207a72e2988c6d6343f50fe0128eb4fc4edfdd15)

 [BZ #22715]
 * sysdeps/x86_64/dl-trampoline.h (_dl_runtime_profile): Properly
 align La_x86_64_retval to VEC_SIZE.

hjl/pr22715/2.25 2018-01-17 13:10:59 UTC
x86-64: Properly align La_x86_64_retval to VEC_SIZE [BZ #22715]

Author: H.J. Lu
Author Date: 2018-01-16 03:39:56 UTC

x86-64: Properly align La_x86_64_retval to VEC_SIZE [BZ #22715]

_dl_runtime_profile calls _dl_call_pltexit, passing a pointer to
La_x86_64_retval which is allocated on stack. The lrv_vector0
field in La_x86_64_retval must be aligned to size of vector register.
When allocating stack space for La_x86_64_retval, we need to make sure
that the address of La_x86_64_retval + RV_VECTOR0_OFFSET is aligned to
VEC_SIZE. This patch checks the alignment of the lrv_vector0 field
and pads the stack space if needed.

Tested with x32 and x86-64 on SSE4, AVX and AVX512 machines. It fixed

FAIL: elf/tst-audit10
FAIL: elf/tst-audit4
FAIL: elf/tst-audit5
FAIL: elf/tst-audit6
FAIL: elf/tst-audit7

on x32 AVX512 machine.

(cherry picked from commit 207a72e2988c6d6343f50fe0128eb4fc4edfdd15)

 [BZ #22715]
 * sysdeps/x86_64/dl-trampoline.h (_dl_runtime_profile): Properly
 align La_x86_64_retval to VEC_SIZE.

hjl/pr22715/2.26 2018-01-17 12:43:35 UTC
x86-64: Properly align La_x86_64_retval to VEC_SIZE [BZ #22715]

Author: H.J. Lu
Author Date: 2018-01-16 03:39:56 UTC

x86-64: Properly align La_x86_64_retval to VEC_SIZE [BZ #22715]

_dl_runtime_profile calls _dl_call_pltexit, passing a pointer to
La_x86_64_retval which is allocated on stack. The lrv_vector0
field in La_x86_64_retval must be aligned to size of vector register.
When allocating stack space for La_x86_64_retval, we need to make sure
that the address of La_x86_64_retval + RV_VECTOR0_OFFSET is aligned to
VEC_SIZE. This patch checks the alignment of the lrv_vector0 field
and pads the stack space if needed.

Tested with x32 and x86-64 on SSE4, AVX and AVX512 machines. It fixed

FAIL: elf/tst-audit10
FAIL: elf/tst-audit4
FAIL: elf/tst-audit5
FAIL: elf/tst-audit6
FAIL: elf/tst-audit7

on x32 AVX512 machine.

(cherry picked from commit 207a72e2988c6d6343f50fe0128eb4fc4edfdd15)

 [BZ #22715]
 * sysdeps/x86_64/dl-trampoline.h (_dl_runtime_profile): Properly
 align La_x86_64_retval to VEC_SIZE.

ibm/2.24/master 2017-12-19 17:18:07 UTC
Merge branch release/2.24/master into ibm/2.24/master

Author: Gabriel F. T. Gomes
Author Date: 2017-12-19 17:18:07 UTC

Merge branch release/2.24/master into ibm/2.24/master

hjl/pr22353/master 2017-10-30 12:44:19 UTC
Add strcpy-stosb.S

Author: H.J. Lu
Author Date: 2017-10-27 13:31:57 UTC

Add strcpy-stosb.S

hjl/pr22363/master 2017-10-29 21:15:47 UTC
x32: Set GLRO(dl_platform) to "x86_64" by default [BZ #22363]

Author: H.J. Lu
Author Date: 2017-10-29 21:12:01 UTC

x32: Set GLRO(dl_platform) to "x86_64" by default [BZ #22363]

Set dl_platform to "x86_64" for x32 by default since kernel may set it
to "i686". This fixed:

FAIL: elf/tst-platform-1

on x32. Tested on x86-64 and x32.

 [BZ #22363]
 * sysdeps/x86/cpu-features.c (init_cpu_features): Set
 GLRO(dl_platform) to "x86_64" by default for x32.

1100 of 322 results

Other repositories

Name Last Modified
lp:glibc 2021-07-23
11 of 1 result
You can't create new repositories for GLibC.