Florian Weimer [Thu, 10 Aug 2023 17:36:56 +0000 (19:36 +0200)]
malloc: Remove bin scanning from memalign (bug 30723)
On the test workload (mpv --cache=yes with VP9 video decoding), the
bin scanning has a very poor success rate (less than 2%). The tcache
scanning has about 50% success rate, so keep that.
Update comments in malloc/tst-memalign-2 to indicate the purpose
of the tests. Even with the scanning removed, the additional
merging opportunities since commit
542b1105852568c3ebc712225ae78b
("malloc: Enable merging of remainders in memalign (bug 30723)")
are sufficient to pass the existing large bins test.
Remove leftover variables from _int_free from refactoring in the
same commit.
Reviewed-by: DJ Delorie <dj@redhat.com>
Joe Simmons-Talbott [Mon, 14 Aug 2023 20:50:40 +0000 (20:50 +0000)]
resolv/nss_dns/dns-host: Get rid of alloca.
Since the alloca is a small constant size use an array instead.
Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
H.J. Lu [Fri, 11 Aug 2023 15:04:08 +0000 (08:04 -0700)]
x86_64: Add expm1 with FMA
On Skylake, it improves expm1 bench performance by:
Before After Improvement
max 70.204 68.054 3%
min 20.709 16.2 22%
mean 22.1221 16.7367 24%
NB: Add
extern long double __expm1l (long double);
extern long double __expm1f128 (long double);
for __typeof (__expm1l) and __typeof (__expm1f128) when __expm1 is
defined since __expm1 may be expanded in their declarations which
causes the build failure.
caiyinyu [Mon, 14 Aug 2023 07:34:08 +0000 (15:34 +0800)]
LoongArch: elf: Add new LoongArch reloc types 109 into elf.h
These reloc types are generated by GNU assembler >= 2.41 for relaxation
support.
Xi Ruoyao [Wed, 9 Aug 2023 11:12:54 +0000 (19:12 +0800)]
elf: Add new LoongArch reloc types (101 to 108) into elf.h
These reloc types are generated by GNU assembler >= 2.41 for relaxation
support.
Link: https://sourceware.org/git/?p=binutils-gdb.git;a=commitdiff;h=57a930e3
Signed-off-by: Xi Ruoyao <xry111@xry111.site>
dengjianbo [Tue, 8 Aug 2023 06:15:44 +0000 (14:15 +0800)]
Loongarch: Add ifunc support and add different versions of strlen
strlen-lasx is implemeted by LASX simd instructions(256bit)
strlen-lsx is implemeted by LSX simd instructions(128bit)
strlen-align is implemented by LA basic instructions and never use unaligned memory acess
dengjianbo [Tue, 8 Aug 2023 06:15:43 +0000 (14:15 +0800)]
LoongArch: Add minuimum binutils required version
LoongArch glibc can add some LASX/LSX vector instructions codes,
change the required minimum binutils version to 2.41 which could
support vector instructions. HAVE_LOONGARCH_VEC_ASM is removed
accordingly.
dengjianbo [Tue, 8 Aug 2023 06:15:42 +0000 (14:15 +0800)]
LoongArch: Redefine macro LEAF/ENTRY.
The following usage of macro LEAF/ENTRY are all feasible:
1. LEAF(fcn) -- the align value of fcn is .align 3(default value)
2. LEAF(fcn, 6) -- the align value of fcn is .align 6
Noah Goldstein [Fri, 11 Aug 2023 00:28:24 +0000 (19:28 -0500)]
x86: Fix incorrect scope of setting `shared_per_thread` [BZ# 30745]
The:
```
if (shared_per_thread > 0 && threads > 0)
shared_per_thread /= threads;
```
Code was accidentally moved to inside the else scope. This doesn't
match how it was previously (before
af992e7abd).
This patch fixes that by putting the division after the `else` block.
H.J. Lu [Thu, 10 Aug 2023 18:24:30 +0000 (11:24 -0700)]
x86_64: Add log2 with FMA
On Skylake, it improves log2 bench performance by:
Before After Improvement
max 208.779 63.827 69%
min 9.977 6.55 34%
mean 10.366 6.8191 34%
Florian Weimer [Fri, 11 Aug 2023 09:18:17 +0000 (11:18 +0200)]
malloc: Enable merging of remainders in memalign (bug 30723)
Previously, calling _int_free from _int_memalign could put remainders
into the tcache or into fastbins, where they are invisible to the
low-level allocator. This results in missed merge opportunities
because once these freed chunks become available to the low-level
allocator, further memalign allocations (even of the same size are)
likely obstructing merges.
Furthermore, during forwards merging in _int_memalign, do not
completely give up when the remainder is too small to serve as a
chunk on its own. We can still give it back if it can be merged
with the following unused chunk. This makes it more likely that
memalign calls in a loop achieve a compact memory layout,
independently of initial heap layout.
Drop some useless (unsigned long) casts along the way, and tweak
the style to more closely match GNU on changed lines.
Reviewed-by: DJ Delorie <dj@redhat.com>
Florian Weimer [Fri, 11 Aug 2023 08:10:16 +0000 (10:10 +0200)]
nscd: Do not rebuild getaddrinfo (bug 30709)
The nscd daemon caches hosts data from NSS modules verbatim, without
filtering protocol families or sorting them (otherwise separate caches
would be needed for certain ai_flags combinations). The cache
implementation is complete separate from the getaddrinfo code. This
means that rebuilding getaddrinfo is not needed. The only function
actually used is __bump_nl_timestamp from check_pf.c, and this change
moves it into nscd/connections.c.
Tested on x86_64-linux-gnu with -fexceptions, built with
build-many-glibcs.py. I also backported this patch into a distribution
that still supports nscd and verified manually that caching still works.
Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
H.J. Lu [Wed, 9 Aug 2023 18:08:52 +0000 (11:08 -0700)]
x86_64: Sort fpu/multiarch/Makefile
Sort Makefile variables using scripts/sort-makefile-lines.py.
No code generation changes observed in libm. No regressions on x86_64.
Adhemerval Zanella [Tue, 8 Aug 2023 12:27:55 +0000 (09:27 -0300)]
i686: Fix build with --disable-multiarch
Since i686 provides the fortified wrappers for memcpy, mempcpy,
memmove, and memset on the same string implementation, the static
build tries to optimized it by not tying the fortified wrappers
to string routine (to avoid pulling the fortify function if
they are not required).
Checked on i686-linux-gnu building with different option:
default and --disable-multi-arch plus default, --disable-default-pie,
--enable-fortify-source={2,3}, and --enable-fortify-source={2,3}
with --disable-default-pie.
Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
Adhemerval Zanella [Tue, 8 Aug 2023 12:27:54 +0000 (09:27 -0300)]
x86_64: Fix build with --disable-multiarch (BZ 30721)
With multiarch disabled, the default memmove implementation provides
the fortify routines for memcpy, mempcpy, and memmove. However, it
does not provide the internal hidden definitions used when building
with fortify enabled. The memset has a similar issue.
Checked on x86_64-linux-gnu building with different options:
default and --disable-multi-arch plus default, --disable-default-pie,
--enable-fortify-source={2,3}, and --enable-fortify-source={2,3}
with --disable-default-pie.
Tested-by: Andreas K. Huettel <dilfridge@gentoo.org>
Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
Joseph Myers [Tue, 8 Aug 2023 14:38:22 +0000 (14:38 +0000)]
Add PTRACE_SET_SYSCALL_USER_DISPATCH_CONFIG etc. from Linux 6.4 to sys/ptrace.h
Linux 6.4 adds new constants PTRACE_SET_SYSCALL_USER_DISPATCH_CONFIG
and PTRACE_GET_SYSCALL_USER_DISPATCH_CONFIG. Add those to all
relevant sys/ptrace.h headers, along with adding the associated
argument structure to bits/ptrace-shared.h (named struct
__ptrace_sud_config there following the usual convention for such
structures).
Tested for x86_64 and with build-many-glibcs.py.
Joseph Myers [Tue, 8 Aug 2023 14:37:45 +0000 (14:37 +0000)]
Add PACKET_VNET_HDR_SZ from Linux 6.4 to netpacket/packet.h
Linux 6.4 adds a new constant PACKET_VNET_HDR_SZ; add it to glibc's
netpacket/packet.h.
Tested for x86_64.
Samuel Thibault [Tue, 8 Aug 2023 14:03:24 +0000 (16:03 +0200)]
hurd: Make error_t an int in C++
Making error_t defined to enum __error_t_codes conveniently makes the
debugger print symbolic values, but in C++ int is not interoperable with
enum __error_t_codes, leading to C++ application build issues, so let's
revert error_t to int in C++.
Joseph Myers [Tue, 8 Aug 2023 12:53:50 +0000 (12:53 +0000)]
Use binutils 2.41 branch in build-many-glibcs.py
This patch makes build-many-glibcs.py use binutils 2.41 branch.
Tested with build-many-glibcs.py (host-libraries, compilers and glibcs
builds).
наб [Sun, 6 Aug 2023 20:23:36 +0000 (22:23 +0200)]
linux: statvfs: allocate spare for f_type
This is the only missing part in struct statvfs.
The LSB calls [f]statfs() deprecated, and its weird types are definitely
off-putting. However, its use is required to get f_type.
Instead, allocate one of the six spares to f_type,
copied directly from struct statfs.
This then becomes a small glibc extension to the standard interface
on Linux and the Hurd, instead of two different interfaces, one of which
is quite odd due to being an ABI type, and there no longer is any reason
to use statfs().
The underlying kernel type is a mess, but all architectures agree on u32
(or more) for the ABI, and all filesystem magicks are 32-bit integers.
We don't lose any generality by using u32, and by doing so we both make
the API consistent with the Hurd, and allow C++
switch(f_type) { case RAMFS_MAGIC: ...; }
Also fix tst-statvfs so that it actually fails;
as it stood, all it did was return 0 always.
Test statfs()' and statvfs()' f_types are the same.
Link: https://lore.kernel.org/linux-man/f54kudgblgk643u32tb6at4cd3kkzha6hslahv24szs4raroaz@ogivjbfdaqtb/t/#u
Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz>
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
наб [Sun, 6 Aug 2023 20:23:24 +0000 (22:23 +0200)]
hurd: statvfs: __f_type -> f_type
No further changes needed ([f]statvfs() just cast to struct statfs *
and call [f]statfs()).
Link: https://lore.kernel.org/linux-man/f54kudgblgk643u32tb6at4cd3kkzha6hslahv24szs4raroaz@ogivjbfdaqtb/t/#u
Signed-off-by: Ahelenia Ziemiańska <nabijaczleweli@nabijaczleweli.xyz>
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
Samuel Thibault [Tue, 8 Aug 2023 10:19:29 +0000 (12:19 +0200)]
htl: Initialize ___pthread_self early
When using jemalloc, malloc() needs to use TSD, while libpthread
initialization needs malloc(). Having ___pthread_self set early to some
static storage allows TSD to work early, thus allowing jemalloc and
libpthread to initialize together.
This incidentaly simplifies __pthread_enable/disable_asynccancel and
__pthread_self, now that ___pthread_self is always initialized.
Samuel Thibault [Tue, 8 Aug 2023 10:10:06 +0000 (12:10 +0200)]
htl: Add support for static TSD data
When using jemalloc, malloc() needs to use TSD, while libpthread
initialization needs malloc(). Supporting a static TSD area allows jemalloc
and libpthread to initialize together.
Sajan Karumanchi [Tue, 1 Aug 2023 15:20:55 +0000 (15:20 +0000)]
x86: Fix for cache computation on AMD legacy cpus.
Some legacy AMD CPUs and hypervisors have the _cpuid_ '0x8000_001D'
set to Zero, thus resulting in zeroed-out computed cache values.
This patch reintroduces the old way of cache computation as a
fail-safe option to handle these exceptions.
Fixed 'level4_cache_size' value through handle_amd().
Reviewed-by: Premachandra Mallappa <premachandra.mallappa@amd.com>
Tested-by: Florian Weimer <fweimer@redhat.com>
Samuel Thibault [Sun, 6 Aug 2023 20:32:46 +0000 (20:32 +0000)]
hurd: Rework generating errno.h
We only need to give to gawk the headers that actually define error
numbers, so let's rather filter out the other included headers early.
Samuel Thibault [Fri, 4 Aug 2023 08:01:11 +0000 (10:01 +0200)]
powerpc longjmp: Fix build after chk hidden builtin fix
04bf7d2d8a79 ("chk: Add and fix hidden builtin definitions for *_chk")
added an #undef for longjmp and siglongjmp to compensate for the
definition in include/setjmp.h, but missed doing so for the powerpc
version too.
Fixes:
04bf7d2d8a79 ("chk: Add and fix hidden builtin definitions for
*_chk")
Yang Yujie [Thu, 3 Aug 2023 08:35:24 +0000 (16:35 +0800)]
LoongArch: Fix static PIE condition for toolchain bootstrapping.
This patch allows the static PIE startfile rcrt1.o to be built
without requiring libgcc_s.so from GCC, which depends on libc
in the first place.
Samuel Thibault [Thu, 3 Aug 2023 19:16:41 +0000 (21:16 +0200)]
chk: Add and fix hidden builtin definitions for *_chk
Otherwise on gnu-i686 there are unwanted PLT entries in libc.so when
fortification is enabled.
Tested for i686-gnu, x86_64-gnu, i686-linux-gnu and x86_64-linux-gnu
Samuel Thibault [Thu, 3 Aug 2023 19:16:16 +0000 (21:16 +0200)]
tst-realpath-toolong: return "unsupported" when PATH_MAX is undefined
When PATH_MAX is undefined, realpath cannot ever ENAMETOOLONG, so
this test is unsupported.
Samuel Thibault [Thu, 3 Aug 2023 19:15:58 +0000 (21:15 +0200)]
Subject: hurd: Make __realpath return EINVAL on NULL buf
As Posix and stdlib/test-canon.c expects it, and rather than letting
pathconf crash.
Samuel Thibault [Thu, 3 Aug 2023 19:15:39 +0000 (21:15 +0200)]
tst-*glob*: Do not check d_name size
Posix says that d_name is of unspecified size, and sizeof(d_name)
should not be used. It is indeed only 1-byte long in bits/dirent.h. We
can instead explictly provide the actual allocated size to
__strcpy_chk.
Florian Weimer [Mon, 31 Jul 2023 10:38:12 +0000 (12:38 +0200)]
hurd: Do not include full <stdarg.h> in <hurd.h>
This fixes a hurd/check-installed-headers-c failure with
-std=c89 #define _FORTIFY_SOURCE 1:
In file included from ../hurd/hurd.h:354,
from ../sysdeps/hurd/include/hurd.h:2,
from /tmp/cih_test_9IaUwa.c:10:
/home/bmg/install/compilers/i686-gnu/lib/gcc/i686-glibc-gnu/13.2.1/include/stdarg.h:54:34: error: "__STDC_VERSION__" is not defined, evaluates to 0 [-Werror=undef]
54 | #if !defined(__STRICT_ANSI__) || __STDC_VERSION__ + 0 >= 199900L \
| ^~~~~~~~~~~~~~~~
/home/bmg/install/compilers/i686-gnu/lib/gcc/i686-glibc-gnu/13.2.1/include/stdarg.h:55:8: error: "__cplusplus" is not defined, evaluates to 0 [-Werror=undef]
55 | || __cplusplus + 0 >= 201103L
| ^~~~~~~~~~~
cc1: all warnings being treated as errors
Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org>
Andreas Schwab [Tue, 1 Aug 2023 15:01:37 +0000 (17:01 +0200)]
iconv: restore verbosity with unrecognized encoding names (bug 30694)
Commit
91927b7c76 ("Rewrite iconv option parsing [BZ #19519]") changed the
iconv program to call __gconv_open directly instead of the iconv_open
wrapper, but the former does not set errno. Update the caller to
interpret the return codes like iconv_open does.
Adhemerval Zanella Netto [Mon, 24 Jul 2023 17:22:27 +0000 (14:22 -0300)]
configure: Remove --enable-all-warnings option
The option is not activelly tested and has bitrotten, to fix it
would require a lot of work and multiple fixes. A better option
would to evaluate each option and enable the warning if it makes
sense.
Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
Joseph Myers [Tue, 1 Aug 2023 17:22:12 +0000 (17:22 +0000)]
Add IP_PROTOCOL from Linux 6.4 to bits/in.h
Linux 6.4 adds a new constant IP_PROTOCOL; add it to glibc's
bits/in.h.
Tested for x86_64.
Joseph Myers [Tue, 1 Aug 2023 12:42:41 +0000 (12:42 +0000)]
Update kernel version to 6.4 in header constant tests
This patch updates the kernel version in the tests tst-mman-consts.py,
tst-mount-consts.py and tst-pidfd-consts.py to 6.4. (There are no new
constants covered by these tests in 6.4 that need any other header
changes.)
Tested with build-many-glibcs.py.
Mahesh Bodapati [Tue, 1 Aug 2023 12:41:17 +0000 (07:41 -0500)]
PowerPC: Influence cpu/arch hwcap features via GLIBC_TUNABLES
This patch enables the option to influence hwcaps used by PowerPC.
The environment variable, GLIBC_TUNABLES=glibc.cpu.hwcaps=-xxx,yyy,-zzz....,
can be used to enable CPU/ARCH feature yyy, disable CPU/ARCH feature xxx
and zzz, where the feature name is case-sensitive and has to match the ones
mentioned in the file{sysdeps/powerpc/dl-procinfo.c}.
Note that the hwcap tunables only used in the IFUNC selection.
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Joe Simmons-Talbott [Mon, 31 Jul 2023 19:42:32 +0000 (19:42 +0000)]
vfprintf-internal: Get rid of alloca.
Avoid potential stack overflow from unbounded alloca. Use the existing
scratch_buffer instead.
Add testcases to exercise the code as suggested by Adhemerval Zanella Netto.
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Florian Weimer [Tue, 1 Aug 2023 08:27:15 +0000 (10:27 +0200)]
stdlib: Improve tst-realpath compatibility with source fortification
On GCC before 11, IPA can make the fortified realpath aware that the
buffer size is not large enough (8 bytes instead of PATH_MAX bytes).
Fix this by using a buffer that is large enough.
Andreas K. Hüttel [Mon, 31 Jul 2023 18:07:55 +0000 (20:07 +0200)]
Open master branch for glibc 2.39 development
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
Andreas K. Hüttel [Mon, 31 Jul 2023 17:54:16 +0000 (19:54 +0200)]
NEWS: Fix typos
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
Andreas K. Hüttel [Sun, 30 Jul 2023 19:45:27 +0000 (21:45 +0200)]
Create ChangeLog.old/ChangeLog.27
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
Andreas K. Hüttel [Sun, 30 Jul 2023 19:35:28 +0000 (21:35 +0200)]
Increase version numbers
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
Andreas K. Hüttel [Sun, 30 Jul 2023 19:16:02 +0000 (21:16 +0200)]
INSTALL: regenerate
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
Andreas K. Hüttel [Sun, 30 Jul 2023 17:43:50 +0000 (19:43 +0200)]
NEWS: minor wording fixes
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
Andreas K. Hüttel [Sun, 30 Jul 2023 17:31:04 +0000 (19:31 +0200)]
install.texi: Build was tested with binutils 2.41 (just released)
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
Andreas K. Hüttel [Thu, 27 Jul 2023 21:00:59 +0000 (23:00 +0200)]
install.texi: Update versions of most recent build tools
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
Andreas K. Hüttel [Tue, 25 Jul 2023 23:51:03 +0000 (01:51 +0200)]
contrib.texi: Update for 2.38
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
H.J. Lu [Wed, 26 Jul 2023 15:20:16 +0000 (08:20 -0700)]
<sys/platform/x86.h>: Add APX support
Add support for Intel Advanced Performance Extensions:
https://www.intel.com/content/www/us/en/developer/articles/technical/advanced-performance-extensions-apx.html
to <sys/platform/x86.h>.
Andreas K. Hüttel [Wed, 26 Jul 2023 22:21:13 +0000 (00:21 +0200)]
translations: update cs, nl, vi
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
Adhemerval Zanella Netto [Tue, 25 Jul 2023 15:16:41 +0000 (12:16 -0300)]
string: Fix tester build with fortify enable with gcc 6
When building with fortify enabled, GCC 6 issues an warning the fortify
wrapper might overflow the destination buffer. However, GCC does not
provide a specific flag to disable the warning (the failure is tied to
-Werror). So to avoid disable all errors, only enable the check for
GCC 7 or newer.
Checked on i686-linux-gnu.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Adhemerval Zanella Netto [Tue, 25 Jul 2023 15:16:40 +0000 (12:16 -0300)]
linux: Fix i686 with gcc6
On __convert_scm_timestamps GCC 6 issues an warning that tvts[0]/tvts[1]
maybe be used uninitialized, however it would be used if type is set to a
value different than 0 (done by either COMPAT_SO_TIMESTAMP_OLD or
COMPAT_SO_TIMESTAMPNS_OLD) which will fallthrough to 'common' label.
It does not show with gcc 7 or more recent versions.
Checked on i686-linux-gnu.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Adhemerval Zanella Netto [Tue, 25 Jul 2023 15:16:39 +0000 (12:16 -0300)]
i386: Remove memset_chk-nonshared.S
Similar to memcpy, mempcpy, and memmove there is no need for an
specific memset_chk-nonshared.S. It can be provided by
memset-ia32.S itself for static library.
Checked on i686-linux-gnu.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Adhemerval Zanella Netto [Tue, 25 Jul 2023 15:16:38 +0000 (12:16 -0300)]
i386: Fix build with --enable-fortify=3
The i386 string routines provide multiple internal definitions
for memcpy, memmove, and mempcpy chk routines:
$ objdump -t libc.a | grep __memcpy_chk
00000000 g F .text
0000000e __memcpy_chk
00000000 g F .text
00000013 __memcpy_chk
$ objdump -t libc.a | grep __mempcpy_chk
00000000 g F .text
0000000e __mempcpy_chk
00000000 g F .text
00000013 __mempcpy_chk
$ objdump -t libc.a | grep __memmove_chk
00000000 g F .text
0000000e __memmove_chk
00000000 g F .text
00000013 __memmove_chk
Although is not an issue for normal static builds, with fortify=3
glibc itself might use the fortify chk functions and thus static
build might fail with multiple definitions. For instance:
x86_64-glibc-linux-gnu-gcc -m32 -march=i686 -o [...]math/test-signgam-uchar-static -nostdlib -nostartfiles -static -static-pie [...]
x86_64-glibc-linux-gnu/bin/ld: [...]/libc.a(mempcpy-ia32.o):
in function `__mempcpy_chk': [...]/glibc-git/string/../sysdeps/i386/i686/mempcpy.S:32: multiple definition of `__mempcpy_chk';
[...]/libc.a(mempcpy_chk-nonshared.o):[...]/debug/../sysdeps/i386/mempcpy_chk.S:28: first defined here
collect2: error: ld returned 1 exit status
make[2]: *** [../Rules:298:
There is no need for mem*-nonshared.S, the __mem*_chk routines
are already provided by the assembly routines.
Checked on i686-linux-gnu with gcc 13 built with fortify=1,2,3 and
without fortify.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Adhemerval Zanella Netto [Mon, 24 Jul 2023 19:38:17 +0000 (16:38 -0300)]
posix: Fix test-errno build with fortify enable
With gcc 11.3.1, building with -D_FORTIFY_SOURCE=2 shows:
In function ‘getgroups’,
inlined from ‘do_test’ at test-errno.c:129:12:
../misc/sys/cdefs.h:195:6: error: argument 1 value -1 is negative
[-Werror=stringop-overflow=]
195 | ? __ ## f ## _alias (__VA_ARGS__)
\
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../posix/bits/unistd.h:115:10: note: in expansion of macro
‘__glibc_fortify’
115 | return __glibc_fortify (getgroups, __size, sizeof (__gid_t),
| ^~~~~~~~~~~~~~~
../posix/bits/unistd.h: In function ‘do_test’:
../posix/bits/unistd-decl.h:135:28: note: in a call to function
‘__getgroups_alias’ declared with attribute ‘access (write_only, 2, 1)’
135 | extern int __REDIRECT_NTH (__getgroups_alias, (int __size,
__gid_t __list[]),
| ^~~~~~~~~~~~~~~~~
../misc/sys/cdefs.h:264:6: note: in definition of macro ‘__REDIRECT_NTH’
264 | name proto __asm__ (__ASMNAME (#alias)) __THROW
It builds fine with gcc 12 and gcc 13.
Checked on x86_64-linux-gnu.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Adhemerval Zanella Netto [Mon, 24 Jul 2023 17:15:24 +0000 (14:15 -0300)]
powerpc: Fix powerpc64 strchrnul build with old gcc
The compiler might not see that internal definition is an alias
due the libc_ifunc macro, which redefines __strchrnul. With
gcc 6 it fails with:
In file included from <command-line>:0:0:
./../include/libc-symbols.h:472:33: error: ‘__EI___strchrnul’ aliased to
undefined symbol ‘__GI___strchrnul’
extern thread __typeof (name) __EI_##name \
^
./../include/libc-symbols.h:468:3: note: in expansion of macro
‘__hidden_ver2’
__hidden_ver2 (, local, internal, name)
^~~~~~~~~~~~~
./../include/libc-symbols.h:476:29: note: in expansion of macro
‘__hidden_ver1’
# define hidden_def(name) __hidden_ver1(__GI_##name, name, name);
^~~~~~~~~~~~~
./../include/libc-symbols.h:557:32: note: in expansion of macro
‘hidden_def’
# define libc_hidden_def(name) hidden_def (name)
^~~~~~~~~~
../sysdeps/powerpc/powerpc64/multiarch/strchrnul.c:38:1: note: in
expansion of macro ‘libc_hidden_def’
libc_hidden_def (__strchrnul)
^~~~~~~~~~~~~~~
Use libc_ifunc_hidden as stpcpy. Checked on powerpc64 with
gcc 6 and gcc 13.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Adhemerval Zanella Netto [Mon, 24 Jul 2023 17:15:23 +0000 (14:15 -0300)]
sunrpc: Fix netname build with older gcc
The -Wformat-overflow was added by gcc 8.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Adhemerval Zanella Netto [Mon, 24 Jul 2023 17:15:22 +0000 (14:15 -0300)]
malloc: Fix set-freeres.c with gcc 6
Old GCC might trigger the the comparison will always evaluate as ‘true’
warnig for static build:
set-freeres.c:87:14: error: the comparison will always evaluate as
‘true’ for the address of ‘__libc_getgrgid_freemem_ptr’ will never be
NULL [-Werror=address]
if (&__ptr != NULL) \
So add pragma weak for all affected usages.
Checked on x86_64 and i686 with gcc 6 and 13.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Andreas K. Hüttel [Tue, 25 Jul 2023 21:59:25 +0000 (23:59 +0200)]
NEWS: Insert autogenerated list of fixed bugs
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
Andreas K. Hüttel [Tue, 25 Jul 2023 21:55:17 +0000 (23:55 +0200)]
NEWS: Mention AArch64 libmvec under build requirements again
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
Andreas K. Hüttel [Tue, 25 Jul 2023 21:49:07 +0000 (23:49 +0200)]
NEWS: Minor editorial changes
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
Aurelien Jarno [Tue, 25 Jul 2023 20:20:51 +0000 (22:20 +0200)]
MIPS: Update mips32 and mip64 libm test ulps
Generated on a Cavium Octeon III 2 board running Linux version 4.19.249
and GCC 13.1.0.
Needed due to commit
cf7ffdd8a5f6 ("added pair of inputs for hypotf in
binary32").
Sam James [Tue, 25 Jul 2023 20:04:31 +0000 (21:04 +0100)]
nscd: cleanup obsolete _FORTIFY_SOURCE setting
This was added in
233399bce2e79e5af3b344782e9943d5f1a9cdcb just for warn_if_unused
warnings rather than anything substantial.
Now that we have a proper configure argument for F_S (--enable-fortify-source),
just drop this entirely, to avoid conflicting with e.g. detected --enable-fortify-source
finding F_S=3, then nscd's Makefile setting F_S=2, resulting in a build-failure
because of the redefinition.
Signed-off-by: Sam James <sam@gentoo.org>
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
Reviewed-by: Andreas K. Hüttel <dilfridge@gentoo.org>
Stefan Liebler [Tue, 25 Jul 2023 09:34:30 +0000 (11:34 +0200)]
Include sys/rseq.h in tst-rseq-disable.c
Starting with commit
2c6b4b272e6b4d07303af25709051c3e96288f2d
"nptl: Unconditionally use a 32-byte rseq area", the testcase
misc/tst-rseq-disable is UNSUPPORTED as RSEQ_SIG is not defined.
The mentioned commit removes inclusion of sys/rseq.h in nptl/descr.h.
Thus just include sys/rseq.h in the tst-rseq-disable.c as also done
in tst-rseq.c and tst-rseq-nptl.c.
Reviewed-by: Florian Weimer <fweimer@redhat.com>
Adhemerval Zanella Netto [Fri, 21 Jul 2023 12:18:17 +0000 (09:18 -0300)]
string: Fix tester with fortify enabled
If fortify is enabled, the truncated output warning is issued by
the wrapper itself:
In function ‘strncpy’,
inlined from ‘test_strncpy’ at tester.c:505:10:
../string/bits/string_fortified.h:95:10: error: ‘__builtin_strncpy’
destination unchanged after copying no bytes from a string of length 3
[-Werror=stringop-truncation]
95 | return __builtin___strncpy_chk (__dest, __src, __len,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
96 | __glibc_objsize (__dest));
| ~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from ../include/bits/string_fortified.h:1,
from ../string/string.h:548,
from ../include/string.h:60,
from tester.c:33,
from inl-tester.c:6:
In function ‘strncpy’,
inlined from ‘test_strncpy’ at tester.c:505:10:
Checked on x86_64-linux-gnu.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Adhemerval Zanella Netto [Fri, 21 Jul 2023 12:18:16 +0000 (09:18 -0300)]
string: Fix bug-strncat1 with fortify enabled
If fortify is enabled, the truncated output warning is issued by
the wrapper itself:
bug-strncat1.c: In function ‘main’:
bug-strncat1.c:14:3: error: ‘__builtin___strncat_chk’ output truncated
copying 1 byte from a string of length 2 [-Werror=stringop-truncation]
14 | strncat (d, "\5\6", 1);
| ^
Checked on x86_64-linux-gnu.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Florian Weimer [Mon, 24 Jul 2023 13:12:26 +0000 (15:12 +0200)]
nscd: Use errval, not errno to guide cache update (bug 30662)
The errno variable is potentially clobbered by the preceding
send call. It is not related to the to-be-cached information.
The parallel code in hstcache.c and servicescache.c already uses
errval.
Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
Andreas Schwab [Wed, 19 Jul 2023 07:55:31 +0000 (09:55 +0200)]
Restore lookup of IPv4 mapped addresses in files database (bug 25457)
This was broken by commit
9c02d0784d ("nss_files: Remove RES_USE_INET6
from hosts processing"), which removed too much.
Andreas K. Hüttel [Sat, 22 Jul 2023 14:42:50 +0000 (16:42 +0200)]
Revert "MIPS: Sync elf.h from binutils"
Leads to build failures (preprocessor redefinitions), and there is not
enough time to address this properly. Deferred until after 2.38 release.
This reverts commit
59dc07637fa1a693bd7599a98b0735697544077b.
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
Aurelien Jarno [Thu, 20 Jul 2023 16:58:42 +0000 (18:58 +0200)]
riscv: Update rvd libm test ulps
Generated on a VisionFive 2 board running Linux version 6.4.2 and
GCC 13.1.0.
Needed due to commit
cf7ffdd8a5f6 ("added pair of inputs for hypotf in
binary32").
Ying Huang [Thu, 15 Jun 2023 07:50:21 +0000 (03:50 -0400)]
MIPS: Sync elf.h from binutils
Add new definitions for the MIPS target, specifically: relocation
types, machine flags, section type names, and object attribute tags
and values. On MIPS64, up to three relocations may be specified
within r_info, by the r_type, r_type2, and r_type3 fields, so add new
macros to get the respective reloc types for MIPS64.
Andreas K. Hüttel [Fri, 21 Jul 2023 22:38:31 +0000 (00:38 +0200)]
Merge translations (bg, hr, pl, sv)
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
Florian Weimer [Fri, 21 Jul 2023 14:18:18 +0000 (16:18 +0200)]
nptl: Unconditionally use a 32-byte rseq area
If the kernel headers provide a larger struct rseq, we used that
size as the argument to the rseq system call. As a result,
rseq registration would fail on older kernels which only accept
size 32.
Samuel Thibault [Thu, 20 Jul 2023 21:38:24 +0000 (23:38 +0200)]
hurd: Fix tst-openloc
On GNU/Hurd, O_RDWR actually is O_WRONLY|O_RDONLY, so checking through
bitness really is wrong. O_ACCMODE is there for this.
Fixes:
5324d258427f ("fileops: Don't process ,ccs= as individual mode flags (BZ#18906)")
Adhemerval Zanella [Thu, 20 Jul 2023 14:35:54 +0000 (11:35 -0300)]
scripts: Fix fortify checks if compiler does not support _FORTIFY_SOURCE=3
The
30379efad1 added _FORTIFY_SOURCE checks without check if compiler
does support all used fortify levels. This patch fixes it by first
checking at configure time the maximum support fortify level and using
it instead of a pre-defined one.
Checked on x86_64 with gcc 11, 12, and 13.
Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
Tested-by: Florian Weimer <fweimer@redhat.com>
Siddhesh Poyarekar [Mon, 17 Jul 2023 16:44:17 +0000 (12:44 -0400)]
configure: Disable building libcrypt by default
We mentioned eventual dropping of libcrypt in the 2.28 NEWS. Actually
put that plan in motion by first disabling building libcrypt by default.
note in NEWS that the library will be dropped completely in a future
release.
Also add a couple of builds into build-many-glibcs.py.
Signed-off-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
Reviewed-by: Andreas K. Hüttel <dilfridge@gentoo.org>
Arsen Arsenović [Wed, 19 Jul 2023 19:24:37 +0000 (21:24 +0200)]
nptl: Make tst-tls3mod.so explicitly lazy
Fixes the following test-time errors, that lead to FAILs, on toolchains
that set -z now out o the box, such as the one used on Gentoo Hardened:
.../build-x86-x86_64-pc-linux-gnu-nptl $ grep '' nptl/tst-tls3*.out
nptl/tst-tls3.out:dlopen failed
nptl/tst-tls3-malloc.out:dlopen failed
Reviewed-by: Florian Weimer <fweimer@redhat.com>
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
Paul Eggert [Wed, 19 Jul 2023 21:09:26 +0000 (14:09 -0700)]
make ‘struct pthread’ a complete type
* nptl/descr.h (struct pthread): Remove end_padding member, which
made this type incomplete.
(PTHREAD_STRUCT_END_PADDING): Stop using end_padding.
Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
Adhemerval Zanella [Wed, 19 Jul 2023 14:37:01 +0000 (11:37 -0300)]
scripts: Add fortify checks on installed headers
The _FORTIFY_SOURCE is used as default by some system compilers,
and there is no way to check if some fortify extension does not
trigger any conformance issue.
Checked on x86_64-linux-gnu.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Andreas K. Hüttel [Wed, 19 Jul 2023 14:56:54 +0000 (16:56 +0200)]
Update x86_64 libm-test-ulps (x32 ABI)
Based on feedback by Mike Gilbert <floppym@gentoo.org>
Linux-6.1.38-dist x86_64 AMD Phenom-tm- II X6 1055T Processor
-march=amdfam10
failures occur for x32 ABI
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
Stefan Liebler [Thu, 13 Jul 2023 13:13:48 +0000 (15:13 +0200)]
Fix getting return address in elf/tst-audit28.c.
Starting with commit
1bcfe0f732066ae5336b252295591ebe7e51c301, the
test was enhanced and the object for __builtin_return_address (0)
is searched with _dl_find_object.
Unfortunately on e.g. s390 (31bit), a postprocessing step is needed
as the highest bit has to be masked out. This can be done with
__builtin_extract_return_addr.
Without this postprocessing, _dl_find_object returns with -1 and the
content of dlfo is invalid, which may lead to segfaults in basename.
Therefore those checks are now only done on success.
Reviewed-by: Florian Weimer <fweimer@redhat.com>
Noah Goldstein [Tue, 18 Jul 2023 15:27:59 +0000 (10:27 -0500)]
[PATCH v1] x86: Use `3/4*sizeof(per-thread-L3)` as low bound for NT threshold.
On some machines we end up with incomplete cache information. This can
make the new calculation of `sizeof(total-L3)/custom-divisor` end up
lower than intended (and lower than the prior value). So reintroduce
the old bound as a lower bound to avoid potentially regressing code
where we don't have complete information to make the decision.
Reviewed-by: DJ Delorie <dj@redhat.com>
Noah Goldstein [Tue, 18 Jul 2023 04:14:33 +0000 (23:14 -0500)]
x86: Fix slight bug in `shared_per_thread` cache size calculation.
After:
```
commit
af992e7abdc9049714da76cae1e5e18bc4838fb8
Author: Noah Goldstein <goldstein.w.n@gmail.com>
Date: Wed Jun 7 13:18:01 2023 -0500
x86: Increase `non_temporal_threshold` to roughly `sizeof_L3 / 4`
```
Split `shared` (cumulative cache size) from `shared_per_thread` (cache
size per socket), the `shared_per_thread` *can* be slightly off from
the previous calculation.
Previously we added `core` even if `threads_l2` was invalid, and only
used `threads_l2` to divide `core` if it was present. The changed
version only included `core` if `threads_l2` was valid.
This change restores the old behavior if `threads_l2` is invalid by
adding the entire value of `core`.
Reviewed-by: DJ Delorie <dj@redhat.com>
Andreas K. Hüttel [Tue, 18 Jul 2023 23:32:13 +0000 (01:32 +0200)]
Update i686 libm-test-ulps (again)
Based on feedback by Arsen Arsenović <arsen@gentoo.org>
Linux-6.1.38-gentoo-dist-hardened x86_64 AMD Ryzen 7 3800X 8-Core Processor
-march=x86-64-v2
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
Andreas K. Hüttel [Tue, 18 Jul 2023 21:12:24 +0000 (23:12 +0200)]
Update i686 libm-test-ulps
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
Andreas K. Hüttel [Tue, 18 Jul 2023 19:22:19 +0000 (21:22 +0200)]
Merge translations (de, ro, uk, zh_TW)
Line numbers, version numbers, template date changed everywhere
Nontrivial changes in de, ro, uk, zh_TW
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
Andreas K. Hüttel [Mon, 17 Jul 2023 18:39:38 +0000 (20:39 +0200)]
Regenerate libc.pot
Signed-off-by: Andreas K. Hüttel <dilfridge@gentoo.org>
Siddhesh Poyarekar [Thu, 29 Jun 2023 18:34:16 +0000 (14:34 -0400)]
configure: Use autoconf 2.71
Bump autoconf requirement to 2.71 to allow regenerating configure on
more recent distributions. autoconf 2.71 has been in Fedora since F36
and is the current version in Debian stable (bookworm). It appears to
be current in Gentoo as well.
All sysdeps configure and preconfigure scripts have also been
regenerated; all changes are trivial transformations that do not affect
functionality.
Signed-off-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Adhemerval Zanella [Mon, 17 Jul 2023 13:09:44 +0000 (10:09 -0300)]
Update sparc libm-test-ulps
Adhemerval Zanella [Thu, 13 Jul 2023 13:26:34 +0000 (10:26 -0300)]
s390: Add the clone3 wrapper
It follows the internal signature:
extern int clone3 (struct clone_args *__cl_args, size_t __size,
int (*__func) (void *__arg), void *__arg);
Checked on s390x-linux-gnu and s390-linux-gnu.
Bert Wesarg [Thu, 13 Jul 2023 10:26:59 +0000 (12:26 +0200)]
manual: Fix typos in struct dl_find_object
Signed-off-by: Bert Wesarg <bert.wesarg@googlemail.com>
Reviewed-by: Florian Weimer <fweimer@redhat.com>
Adhemerval Zanella [Mon, 10 Jul 2023 20:01:00 +0000 (17:01 -0300)]
sparc: Fix la_symbind for bind-now (BZ 23734)
The sparc ABI has multiple cases on how to handle JMP_SLOT relocations,
(sparc_fixup_plt/sparc64_fixup_plt). For BINDNOW, _dl_audit_symbind
will be responsible to setup the final relocation value; while for
lazy binding _dl_fixup/_dl_profile_fixup will call the audit callback
and tail cail elf_machine_fixup_plt (which will call
sparc64_fixup_plt).
This patch fixes by issuing the SPARC specific routine on bindnow and
forwarding the audit value to elf_machine_fixup_plt for lazy resolution.
It fixes the la_symbind for bind-now tests on sparc64 and sparcv9:
elf/tst-audit24a
elf/tst-audit24b
elf/tst-audit24c
elf/tst-audit24d
Checked on sparc64-linux-gnu and sparcv9-linux-gnu.
Tested-by: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
Andreas Schwab [Wed, 12 Jul 2023 09:29:34 +0000 (11:29 +0200)]
i386: make debug wrappers compatible with static PIE
Static PIE requires the use of PLT relocation.
caiyinyu [Tue, 11 Jul 2023 03:57:12 +0000 (11:57 +0800)]
LoongArch: Fix soft-float bug about _dl_runtime_resolve{,lsx,lasx}
caiyinyu [Wed, 5 Jul 2023 08:38:05 +0000 (16:38 +0800)]
LoongArch: Add vector implementation for _dl_runtime_resolve.
caiyinyu [Thu, 6 Jul 2023 08:30:52 +0000 (16:30 +0800)]
LoongArch: config: Added HAVE_LOONGARCH_VEC_ASM.
This patch checks if assembler supports vector instructions to
generate LASX/LSX code or not, and then define HAVE_LOONGARCH_VEC_ASM macro
We have added support for vector instructions in binutils-2.41
See:
https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=
75b2f521b101d974354f6ce9ed7c054d8b2e3b7a
commit
75b2f521b101d974354f6ce9ed7c054d8b2e3b7a
Author: mengqinggang <mengqinggang@loongson.cn>
Date: Thu Jun 22 10:35:28 2023 +0800
LoongArch: gas: Add lsx and lasx instructions support
gas/ChangeLog:
* config/tc-loongarch.c (md_parse_option): Add lsx and lasx option.
(loongarch_after_parse_args): Add lsx and lasx option.
opcodes/ChangeLog:
* loongarch-opc.c (struct loongarch_ase): Add lsx and lasx
instructions.
Frédéric Bérat [Thu, 6 Jul 2023 17:14:59 +0000 (19:14 +0200)]
sysdeps: Add missing hidden definitions for i386
Add missing libc_hidden_builtin_def for memset_chk and MEMCPY_CHK on
i386.
Frédéric Bérat [Fri, 7 Jul 2023 14:20:48 +0000 (16:20 +0200)]
sysdeps/s390: Exclude fortified routines from being built with _FORTIFY_SOURCE
Depending on build configuration, the [routine]-c.c files may be chosen
to provide fortified routines implementation. While [routines].c
implementation were automatically excluded, the [routines]-c.c ones were
not. This patch fixes that by adding these file to the list to be
filtered.
Carlos O'Donell [Fri, 7 Jul 2023 15:27:08 +0000 (11:27 -0400)]
Translations: Add new ro support and update others.
This brings in the new Romanian language translations, and updates
nine other translations. Important translations in this update
include the Italian and Japanese translations for ESTALE which
remove the mention of "NFS" from the error message translation.
Florian Weimer [Fri, 7 Jul 2023 08:11:26 +0000 (10:11 +0200)]
elf: _dl_find_object may return 1 during early startup (bug 30515)
Success is reported with a 0 return value, and failure is -1.
Enhance the kitchen sink test elf/tst-audit28 to cover
_dl_find_object as well.
Fixes commit
5d28a8962dcb ("elf: Add _dl_find_object function")
and bug 30515.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Tested-by: Carlos O'Donell <carlos@redhat.com>