]> sourceware.org Git - glibc.git/log
glibc.git
16 months agoaio: Fix freeing memory
Samuel Thibault [Tue, 11 Apr 2023 22:12:02 +0000 (00:12 +0200)]
aio: Fix freeing memory

The content of the pool array is initialized only until pool_size,
pointers between pool_size and pool_max_size were not initialized by the
realloc call in get_elem so they should not be freed.

This fixes aio tests crashing at their termination on GNU/Hurd.

16 months agoRevert "hurd: Only check for TLS initialization inside rtld or in static builds"
Samuel Thibault [Tue, 11 Apr 2023 18:06:03 +0000 (18:06 +0000)]
Revert "hurd: Only check for TLS initialization inside rtld or in static builds"

This reverts commit b37899d34d2190ef4b454283188f22519f096048.

Apparently we load libc.so (and thus start using its functions) before
calling TLS_INIT_TP, so libc.so functions should not actually assume
that TLS is always set up.

16 months agohurd: Don't leak __hurd_reply_port0
Sergey Bugaev [Sun, 19 Mar 2023 15:10:10 +0000 (18:10 +0300)]
hurd: Don't leak __hurd_reply_port0

Previously, once we set up TLS, we would implicitly switch from using
__hurd_reply_port0 to reply_port inside the TCB, leaving the former
unused. But we never deallocated it, so it got leaked.

Instead, migrate the port into the new TCB's reply_port slot. This
avoids both the port leak and an extra syscall to create a new reply
port for the TCB.

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-Id: <20230319151017.531737-28-bugaevc@gmail.com>

16 months agohurd: Improve reply port handling when exiting signal handlers
Sergey Bugaev [Sun, 19 Mar 2023 15:10:08 +0000 (18:10 +0300)]
hurd: Improve reply port handling when exiting signal handlers

If we're doing signals, that means we've already got the signal thread
running, and that implies TLS having been set up. So we know that
__hurd_local_reply_port will resolve to THREAD_SELF->reply_port, and can
access that directly using the THREAD_GETMEM and THREAD_SETMEM macros.
This avoids potential miscompilations, and should also be a tiny bit
faster.

Also, use mach_port_mod_refs () and not mach_port_destroy () to destroy
the receive right. mach_port_destroy () should *never* be used on
mach_task_self (); this can easily lead to port use-after-free
vulnerabilities if the task has any other references to the same port.

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-Id: <20230319151017.531737-26-bugaevc@gmail.com>

16 months agohurd: Only check for TLS initialization inside rtld or in static builds
Sergey Bugaev [Sun, 19 Mar 2023 15:10:07 +0000 (18:10 +0300)]
hurd: Only check for TLS initialization inside rtld or in static builds

When glibc is built as a shared library, TLS is always initialized by
the call of TLS_INIT_TP () macro made inside the dynamic loader, prior
to running the main program (see dl-call_tls_init_tp.h). We can take
advantage of this: we know for sure that __LIBC_NO_TLS () will evaluate
to 0 in all other cases, so let the compiler know that explicitly too.

Also, only define _hurd_tls_init () and TLS_INIT_TP () under the same
conditions (either !SHARED or inside rtld), to statically assert that
this is the case.

Other than a microoptimization, this also helps with avoiding awkward
sharing of the __libc_tls_initialized variable between ld.so and libc.so
that we would have to do otherwise -- we know for sure that no sharing
is required, simply because __libc_tls_initialized would always be set
to true inside libc.so.

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-Id: <20230319151017.531737-25-bugaevc@gmail.com>

16 months agoelf: Stop including tls.h in ldsodefs.h
Sergey Bugaev [Sun, 19 Mar 2023 15:10:06 +0000 (18:10 +0300)]
elf: Stop including tls.h in ldsodefs.h

Nothing in there needs tls.h

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-Id: <20230319151017.531737-24-bugaevc@gmail.com>

16 months agohurd: Port trampoline.c to x86_64
Sergey Bugaev [Mon, 3 Apr 2023 11:56:21 +0000 (14:56 +0300)]
hurd: Port trampoline.c to x86_64

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-Id: <20230403115621.258636-3-bugaevc@gmail.com>

16 months agohurd: Do not declare local variables volatile
Sergey Bugaev [Mon, 3 Apr 2023 11:56:20 +0000 (14:56 +0300)]
hurd: Do not declare local variables volatile

These are just regular local variables that are not accessed in any
funny ways, not even though a pointer. There's absolutely no reason to
declare them volatile. It only ends up hurting the quality of the
generated machine code.

If anything, it would make sense to decalre sigsp as *pointing* to
volatile memory (volatile void *sigsp), but evidently that's not needed
either.

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-Id: <20230403115621.258636-2-bugaevc@gmail.com>

16 months agohurd: Implement x86_64/intr-msg.h
Sergey Bugaev [Sun, 19 Mar 2023 15:10:00 +0000 (18:10 +0300)]
hurd: Implement x86_64/intr-msg.h

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-Id: <20230319151017.531737-18-bugaevc@gmail.com>

16 months agohurd: Add sys/ucontext.h and sigcontext.h for x86_64
Sergey Bugaev [Sun, 19 Mar 2023 15:09:59 +0000 (18:09 +0300)]
hurd: Add sys/ucontext.h and sigcontext.h for x86_64

This is based on the Linux port's version, but laid out to match Mach's
struct i386_thread_state, much like the i386 version does.

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
16 months agohurd: Stop depending on the default_pager stubs provided by gnumach
Flavio Cruz [Mon, 10 Apr 2023 02:42:52 +0000 (22:42 -0400)]
hurd: Stop depending on the default_pager stubs provided by gnumach

The hurd source tree already provides the same stubs and they are only
needed there.
Message-Id: <ZDN3rDdjMowtUWf7@jupiter.tail36e24.ts.net>

16 months agomanual: update AddressSanitizer discussion
Paul Eggert [Sat, 8 Apr 2023 20:51:26 +0000 (13:51 -0700)]
manual: update AddressSanitizer discussion

* manual/string.texi (Truncating Strings): Update obsolescent
reference and use the more-generic term “AddressSanitizer”.
Mention fortification, too.  -fcheck-pointer-bounds is no longer
supported.

16 months agomanual: document snprintf truncation better
Paul Eggert [Sat, 8 Apr 2023 20:51:26 +0000 (13:51 -0700)]
manual: document snprintf truncation better

16 months agomanual: improve string section wording
Paul Eggert [Sat, 8 Apr 2023 20:51:26 +0000 (13:51 -0700)]
manual: improve string section wording

* manual/string.texi: Editorial fixes.  Do not say “text” when
“string” or “string contents” is meant, as a C string can contain
bytes that are not valid text in the current encoding.
When warning about strcat efficiency, warn similarly about strncat
and wcscat.  “coping” → “copying”.
Mention at the start of the two problematic sections that problems
are discussed at section end.

16 months agomanual: fix texinfo typo
Paul Eggert [Sat, 8 Apr 2023 20:51:26 +0000 (13:51 -0700)]
manual: fix texinfo typo

* manual/creature.texi (Feature Test Macros): Fix
“creature.texi:309: warning: `.' or `,' must follow @xref, not f”.

16 months ago<stdio.h>: Make fopencookie, vasprintf, asprintf available by default
Florian Weimer [Thu, 6 Apr 2023 14:40:44 +0000 (16:40 +0200)]
<stdio.h>: Make fopencookie, vasprintf, asprintf available by default

FreeBSD makes these functions available by default, so we should
not treat them as GNU-specific and restrict them to _GNU_SOURCE.

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
16 months ago<string.h>: Make strchrnul, strcasestr, memmem available by default
Florian Weimer [Thu, 6 Apr 2023 14:40:44 +0000 (16:40 +0200)]
<string.h>: Make strchrnul, strcasestr, memmem available by default

FreeBSD makes them available by default, too, so there does not seem
to be a reason to restrict these functions to _GNU_SOURCE.

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
16 months ago<sys/platform/x86.h>: Add PREFETCHI support
H.J. Lu [Wed, 5 Apr 2023 16:21:44 +0000 (09:21 -0700)]
<sys/platform/x86.h>: Add PREFETCHI support

Add PREFETCHI support to <sys/platform/x86.h>.
Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
16 months ago<sys/platform/x86.h>: Add AMX-COMPLEX support
H.J. Lu [Wed, 5 Apr 2023 16:21:43 +0000 (09:21 -0700)]
<sys/platform/x86.h>: Add AMX-COMPLEX support

Add AMX-COMPLEX support to <sys/platform/x86.h>.
Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
16 months ago<sys/platform/x86.h>: Add AVX-NE-CONVERT support
H.J. Lu [Wed, 5 Apr 2023 16:21:42 +0000 (09:21 -0700)]
<sys/platform/x86.h>: Add AVX-NE-CONVERT support

Add AVX-NE-CONVERT support to <sys/platform/x86.h>.
Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
16 months ago<sys/platform/x86.h>: Add AVX-VNNI-INT8 support
H.J. Lu [Wed, 5 Apr 2023 16:21:41 +0000 (09:21 -0700)]
<sys/platform/x86.h>: Add AVX-VNNI-INT8 support

Add AVX-VNNI-INT8 support to <sys/platform/x86.h>.
Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
16 months ago<sys/platform/x86.h>: Add MSRLIST support
H.J. Lu [Wed, 5 Apr 2023 16:21:40 +0000 (09:21 -0700)]
<sys/platform/x86.h>: Add MSRLIST support

Add MSRLIST support to <sys/platform/x86.h>.
Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
16 months ago<sys/platform/x86.h>: Add AVX-IFMA support
H.J. Lu [Wed, 5 Apr 2023 16:21:39 +0000 (09:21 -0700)]
<sys/platform/x86.h>: Add AVX-IFMA support

Add AVX-IFMA support to <sys/platform/x86.h>.
Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
16 months ago<sys/platform/x86.h>: Add AMX-FP16 support
H.J. Lu [Wed, 5 Apr 2023 16:21:38 +0000 (09:21 -0700)]
<sys/platform/x86.h>: Add AMX-FP16 support

Add AMX-FP16 support to <sys/platform/x86.h>.
Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
16 months ago<sys/platform/x86.h>: Add WRMSRNS support
H.J. Lu [Wed, 5 Apr 2023 16:21:37 +0000 (09:21 -0700)]
<sys/platform/x86.h>: Add WRMSRNS support

Add WRMSRNS support to <sys/platform/x86.h>.
Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
16 months ago<sys/platform/x86.h>: Add ArchPerfmonExt support
H.J. Lu [Wed, 5 Apr 2023 16:21:36 +0000 (09:21 -0700)]
<sys/platform/x86.h>: Add ArchPerfmonExt support

Add Architectural Performance Monitoring Extended Leaf (EAX = 23H)
support to <sys/platform/x86.h>.
Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
16 months ago<sys/platform/x86.h>: Add CMPCCXADD support
H.J. Lu [Wed, 5 Apr 2023 16:21:35 +0000 (09:21 -0700)]
<sys/platform/x86.h>: Add CMPCCXADD support

Add CMPCCXADD support to <sys/platform/x86.h>.
Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
16 months ago<sys/platform/x86.h>: Add LASS support
H.J. Lu [Wed, 5 Apr 2023 16:21:34 +0000 (09:21 -0700)]
<sys/platform/x86.h>: Add LASS support

Add Linear Address Space Separation (LASS) support to <sys/platform/x86.h>.
Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
16 months ago<sys/platform/x86.h>: Add RAO-INT support
H.J. Lu [Wed, 5 Apr 2023 16:21:33 +0000 (09:21 -0700)]
<sys/platform/x86.h>: Add RAO-INT support

Add RAO-INT support to <sys/platform/x86.h>.
Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
16 months ago<sys/platform/x86.h>: Add LBR support
H.J. Lu [Wed, 5 Apr 2023 16:21:32 +0000 (09:21 -0700)]
<sys/platform/x86.h>: Add LBR support

Add architectural LBR support to <sys/platform/x86.h>.
Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
16 months ago<sys/platform/x86.h>: Add RTM_FORCE_ABORT support
H.J. Lu [Wed, 5 Apr 2023 16:21:31 +0000 (09:21 -0700)]
<sys/platform/x86.h>: Add RTM_FORCE_ABORT support

Add RTM_FORCE_ABORT support to <sys/platform/x86.h>.
Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
16 months ago<sys/platform/x86.h>: Add SGX-KEYS support
H.J. Lu [Wed, 5 Apr 2023 16:21:30 +0000 (09:21 -0700)]
<sys/platform/x86.h>: Add SGX-KEYS support

Add SGX-KEYS support to <sys/platform/x86.h>.
Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
16 months ago<sys/platform/x86.h>: Add BUS_LOCK_DETECT support
H.J. Lu [Wed, 5 Apr 2023 16:21:29 +0000 (09:21 -0700)]
<sys/platform/x86.h>: Add BUS_LOCK_DETECT support

Add Bus lock debug exceptions (BUS_LOCK_DETECT) support to
<sys/platform/x86.h>.
Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
16 months ago<sys/platform/x86.h>: Add LA57 support
H.J. Lu [Wed, 5 Apr 2023 16:21:28 +0000 (09:21 -0700)]
<sys/platform/x86.h>: Add LA57 support

Add 57-bit linear addresses and five-level paging (LA57) support to
<sys/platform/x86.h>.
Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
16 months agoplatform.texi: Move LAM after LAHF64_SAHF64
H.J. Lu [Wed, 5 Apr 2023 16:21:27 +0000 (09:21 -0700)]
platform.texi: Move LAM after LAHF64_SAHF64

Move LAM after LAHF64_SAHF64 to sort x86 features.
Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
16 months ago<bits/platform/x86.h>: Rename to x86_cpu_INDEX_7_ECX_15
H.J. Lu [Wed, 5 Apr 2023 16:21:26 +0000 (09:21 -0700)]
<bits/platform/x86.h>: Rename to x86_cpu_INDEX_7_ECX_15

Rename x86_cpu_INDEX_7_ECX_1 to x86_cpu_INDEX_7_ECX_15 for the unused bit
15 in ECX from CPUID with EAX == 0x7 and ECX == 0.
Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
16 months agohppa: Update struct __pthread_rwlock_arch_t comment.
John David Anglin [Wed, 5 Apr 2023 18:54:47 +0000 (18:54 +0000)]
hppa: Update struct __pthread_rwlock_arch_t comment.

Signed-off-by: John David Anglin <dave.anglin@bell.net>
16 months agohppa: Revise __TIMESIZE define to use __WORDSIZE
John David Anglin [Wed, 5 Apr 2023 18:35:38 +0000 (18:35 +0000)]
hppa: Revise  __TIMESIZE define to use __WORDSIZE

Handle both 32 and 64-bit ABIs.

Signed-off-by: John David Anglin <dave.anglin@bell.net>
16 months agolibio: Remove unused pragma weak on vtable
Adhemerval Zanella [Tue, 4 Apr 2023 19:44:40 +0000 (16:44 -0300)]
libio: Remove unused pragma weak on vtable

Both _IO_file_jumps_alias and _IO_wfile_jumps_alias are defined as
alias.

16 months agomalloc: Only set pragma weak for rpc freemem if required
Adhemerval Zanella [Tue, 4 Apr 2023 19:42:33 +0000 (16:42 -0300)]
malloc: Only set pragma weak for rpc freemem if required

Both __rpc_freemem and __rpc_thread_destroy are only used if the
the compat symbols are required.

16 months agohtl: move pthread_self info libc.
Guy-Fleury Iteriteka [Sat, 18 Mar 2023 09:58:26 +0000 (11:58 +0200)]
htl: move pthread_self info libc.

Signed-off-by: Guy-Fleury Iteriteka <gfleury@disroot.org>
Message-Id: <20230318095826.1125734-4-gfleury@disroot.org>

16 months agohtl: move ___pthread_self into libc.
Guy-Fleury Iteriteka [Sat, 18 Mar 2023 09:58:25 +0000 (11:58 +0200)]
htl: move ___pthread_self into libc.

sysdeps/mach/hurd/htl/pt-pthread_self.c: New file.
htl/Makefile: .. Add it to libc routine.
sysdeps/mach/hurd/htl/pt-sysdep.c(__pthread_self): Remove it.
sysdeps/mach/hurd/htl/pt-sysdep.h(__pthread_self): Add hidden propertie.
htl/Versions(__pthread_self) Version it as private symbol.

Signed-off-by: Guy-Fleury Iteriteka <gfleury@disroot.org>
Message-Id: <20230318095826.1125734-3-gfleury@disroot.org>

16 months agohtl: move __pthtread_total into libc
Guy-Fleury Iteriteka [Sat, 18 Mar 2023 09:58:24 +0000 (11:58 +0200)]
htl: move __pthtread_total into libc

htl/pt-nthreads.c: new file.
htl/Makefile: Add it to routine.
htl/Versions: version it as private libc symbol.
htl/pt-create.c: remove his definition here.
htl/pt-internal.h: add propertie to it declaration.

Signed-off-by: Guy-Fleury Iteriteka <gfleury@disroot.org>
Message-Id: <20230318095826.1125734-2-gfleury@disroot.org>

16 months agocompare_strings.py : Add --gmean flag
Nisha Menon [Mon, 3 Apr 2023 14:11:05 +0000 (10:11 -0400)]
compare_strings.py : Add --gmean flag

To calculate geometric mean for string benchmark results.

Signed-off-by: Nisha Poyarekar <nisha.s.menon@gmail.com>
16 months agox86/dl-cacheinfo: remove unsused parameter from handle_amd
Andreas Schwab [Thu, 9 Feb 2023 13:56:21 +0000 (14:56 +0100)]
x86/dl-cacheinfo: remove unsused parameter from handle_amd

Also replace an unreachable assert with __builtin_unreachable.

16 months agopowerpc: Disable stack protector in early static initialization
Adhemerval Zanella [Mon, 3 Apr 2023 19:10:43 +0000 (16:10 -0300)]
powerpc: Disable stack protector in early static initialization

Similar to fb95c316382679c0826cc8399760977cd95f15c9, also disable
for string-ppc64.c (pulled on rltd as the default string
implementation).

Checked on powerpc64-linux-gnu.

16 months agonptl: Fix tst-cancel30 on sparc64
Adhemerval Zanella [Mon, 3 Apr 2023 17:18:14 +0000 (14:18 -0300)]
nptl: Fix tst-cancel30 on sparc64

As indicated by sparc kernel-features.h, even though sparc64 defines
__NR_pause,  it is not supported (ENOSYS).  Always use ppoll or the
64 bit time_t variant instead.

16 months agomath: Remove the error handling wrapper from fmod and fmodf
Adhemerval Zanella Netto [Mon, 20 Mar 2023 16:01:18 +0000 (13:01 -0300)]
math: Remove the error handling wrapper from fmod and fmodf

The error handling is moved to sysdeps/ieee754 version with no SVID
support.  The compatibility symbol versions still use the wrapper
with SVID error handling around the new code.  There is no new symbol
version nor compatibility code on !LIBM_SVID_COMPAT targets
(e.g. riscv).

The ia64 is unchanged, since it still uses the arch specific
__libm_error_region on its implementation.  For both i686 and m68k,
which provive arch specific implementation, wrappers are added so
no new symbol are added (which would require to change the
implementations).

It shows an small improvement, the results for fmod:

  Architecture     | Input           | master   | patch
  -----------------|-----------------|----------|--------
  x86_64 (Ryzen 9) | subnormals      | 12.5049  | 9.40992
  x86_64 (Ryzen 9) | normal          | 296.939  | 296.738
  x86_64 (Ryzen 9) | close-exponents | 16.0244  | 13.119
  aarch64 (N1)     | subnormal       | 6.81778  | 4.33313
  aarch64 (N1)     | normal          | 155.620  | 152.915
  aarch64 (N1)     | close-exponents | 8.21306  | 5.76138
  armhf (N1)       | subnormal       | 15.1083  | 14.5746
  armhf (N1)       | normal          | 244.833  | 241.738
  armhf (N1)       | close-exponents | 21.8182  | 22.457

Checked on x86_64-linux-gnu, i686-linux-gnu, and aarch64-linux-gnu.
Reviewed-by: Wilco Dijkstra <Wilco.Dijkstra@arm.com>
16 months agomath: Improve fmodf
Adhemerval Zanella Netto [Mon, 20 Mar 2023 16:01:17 +0000 (13:01 -0300)]
math: Improve fmodf

This uses a new algorithm similar to already proposed earlier [1].
With x = mx * 2^ex and y = my * 2^ey (mx, my, ex, ey being integers),
the simplest implementation is:

   mx * 2^ex == 2 * mx * 2^(ex - 1)

   while (ex > ey)
     {
       mx *= 2;
       --ex;
       mx %= my;
     }

With mx/my being mantissa of double floating pointer, on each step the
argument reduction can be improved 8 (which is sizeof of uint32_t minus
MANTISSA_WIDTH plus the signal bit):

   while (ex > ey)
     {
       mx << 8;
       ex -= 8;
       mx %= my;
     }  */

The implementation uses builtin clz and ctz, along with shifts to
convert hx/hy back to doubles.  Different than the original patch,
this path assume modulo/divide operation is slow, so use multiplication
with invert values.

I see the following performance improvements using fmod benchtests
(result only show the 'mean' result):

  Architecture     | Input           | master   | patch
  -----------------|-----------------|----------|--------
  x86_64 (Ryzen 9) | subnormals      | 17.2549  | 12.0318
  x86_64 (Ryzen 9) | normal          | 85.4096  | 49.9641
  x86_64 (Ryzen 9) | close-exponents | 19.1072  | 15.8224
  aarch64 (N1)     | subnormal       | 10.2182  | 6.81778
  aarch64 (N1)     | normal          | 60.0616  | 20.3667
  aarch64 (N1)     | close-exponents | 11.5256  | 8.39685

I also see similar improvements on arm-linux-gnueabihf when running on
the N1 aarch64 chips, where it a lot of soft-fp implementation (for
modulo, and multiplication):

  Architecture     | Input           | master   | patch
  -----------------|-----------------|----------|--------
  armhf (N1)       | subnormal       | 11.6662  | 10.8955
  armhf (N1)       | normal          | 69.2759  | 34.1524
  armhf (N1)       | close-exponents | 13.6472  | 18.2131

Instead of using the math_private.h definitions, I used the
math_config.h instead which is used on newer math implementations.

Co-authored-by: kirill <kirill.okhotnikov@gmail.com>
[1] https://sourceware.org/pipermail/libc-alpha/2020-November/119794.html
Reviewed-by: Wilco Dijkstra <Wilco.Dijkstra@arm.com>
16 months agomath: Improve fmod
Adhemerval Zanella Netto [Mon, 20 Mar 2023 16:01:16 +0000 (13:01 -0300)]
math: Improve fmod

This uses a new algorithm similar to already proposed earlier [1].
With x = mx * 2^ex and y = my * 2^ey (mx, my, ex, ey being integers),
the simplest implementation is:

   mx * 2^ex == 2 * mx * 2^(ex - 1)

   while (ex > ey)
     {
       mx *= 2;
       --ex;
       mx %= my;
     }

With mx/my being mantissa of double floating pointer, on each step the
argument reduction can be improved 11 (which is sizeo of uint64_t minus
MANTISSA_WIDTH plus the signal bit):

   while (ex > ey)
     {
       mx << 11;
       ex -= 11;
       mx %= my;
     }  */

The implementation uses builtin clz and ctz, along with shifts to
convert hx/hy back to doubles.  Different than the original patch,
this path assume modulo/divide operation is slow, so use multiplication
with invert values.

I see the following performance improvements using fmod benchtests
(result only show the 'mean' result):

  Architecture     | Input           | master   | patch
  -----------------|-----------------|----------|--------
  x86_64 (Ryzen 9) | subnormals      | 19.1584  | 12.5049
  x86_64 (Ryzen 9) | normal          | 1016.51  | 296.939
  x86_64 (Ryzen 9) | close-exponents | 18.4428  | 16.0244
  aarch64 (N1)     | subnormal       | 11.153   | 6.81778
  aarch64 (N1)     | normal          | 528.649  | 155.62
  aarch64 (N1)     | close-exponents | 11.4517  | 8.21306

I also see similar improvements on arm-linux-gnueabihf when running on
the N1 aarch64 chips, where it a lot of soft-fp implementation (for
modulo, clz, ctz, and multiplication):

  Architecture     | Input           | master   | patch
  -----------------|-----------------|----------|--------
  armhf (N1)       | subnormal       | 15.908   | 15.1083
  armhf (N1)       | normal          | 837.525  | 244.833
  armhf (N1)       | close-exponents | 16.2111  | 21.8182

Instead of using the math_private.h definitions, I used the
math_config.h instead which is used on newer math implementations.

Co-authored-by: kirill <kirill.okhotnikov@gmail.com>
[1] https://sourceware.org/pipermail/libc-alpha/2020-November/119794.html
Reviewed-by: Wilco Dijkstra <Wilco.Dijkstra@arm.com>
16 months agobenchtests: Add fmodf benchmark
Adhemerval Zanella Netto [Mon, 20 Mar 2023 16:01:15 +0000 (13:01 -0300)]
benchtests: Add fmodf benchmark

1. Subnormals: 128 inputs.
2. Normal numbers with large exponent difference (|x/y| > 2^8):
   1024 inputs between FLT_MIN and FLT_MAX;
3. Close exponents (ey >= -103 and |x/y| < 2^8): 1024 inputs with
   exponents between -10 and 10.
Reviewed-by: Wilco Dijkstra <Wilco.Dijkstra@arm.com>
16 months agobenchtests: Add fmod benchmark
Adhemerval Zanella Netto [Mon, 20 Mar 2023 16:01:14 +0000 (13:01 -0300)]
benchtests: Add fmod benchmark

Add three different dataset, from random floating point numbers:

1. Subnormals: 128 inputs.
2. Normal numbers with large exponent difference (|x/y| > 2^52):
   1024 inputs between DBL_MIN and DBL_MAX;
3. Close exponents (ey >= -907 and |x/y| < 2^52): 1024 inputs with
   exponents between -10 and 10.
Reviewed-by: Wilco Dijkstra <Wilco.Dijkstra@arm.com>
16 months agox86: Set FSGSBASE to active if enabled by kernel
H.J. Lu [Thu, 16 Mar 2023 00:42:54 +0000 (17:42 -0700)]
x86: Set FSGSBASE to active if enabled by kernel

Linux kernel uses AT_HWCAP2 to indicate if FSGSBASE instructions are
enabled.  If the HWCAP2_FSGSBASE bit in AT_HWCAP2 is set, FSGSBASE
instructions can be used in user space.  Define dl_check_hwcap2 to set
the FSGSBASE feature to active on Linux when the HWCAP2_FSGSBASE bit is
set.

Add a test to verify that FSGSBASE is active on current kernels.
NB: This test will fail if the kernel doesn't set the HWCAP2_FSGSBASE
bit in AT_HWCAP2 while fsgsbase shows up in /proc/cpuinfo.
Reviewed-by: Florian Weimer <fweimer@redhat.com>
16 months agox86_64: Fix asm constraints in feraiseexcept (bug 30305)
Florian Weimer [Mon, 3 Apr 2023 15:23:11 +0000 (17:23 +0200)]
x86_64: Fix asm constraints in feraiseexcept (bug 30305)

The divss instruction clobbers its first argument, and the constraints
need to reflect that.  Fortunately, with GCC 12, generated code does
not actually change, so there is no externally visible bug.

Suggested-by: Jakub Jelinek <jakub@redhat.com>
Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
16 months agomanual: Document __wur usage under _FORTIFY_SOURCE
Siddhesh Poyarekar [Mon, 3 Apr 2023 14:20:04 +0000 (10:20 -0400)]
manual: Document __wur usage under _FORTIFY_SOURCE

The __warn_unused_result__ attribute is only enabled when fortification
is enabled.  Mention that in the document.  The rationale for this is
essentially to mitigate against CWE-252:

[1] https://cwe.mitre.org/data/definitions/252.html

Signed-off-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
Reviewed-by: Florian Weimer <fweimer@redhat.com>
16 months agohurd: Microoptimize _hurd_self_sigstate ()
Sergey Bugaev [Sun, 19 Mar 2023 15:10:14 +0000 (18:10 +0300)]
hurd: Microoptimize _hurd_self_sigstate ()

When THREAD_GETMEM is defined with inline assembly, the compiler may not
optimize away the two reads of _hurd_sigstate. Help it out a little bit
by only reading it once. This also makes for a slightly cleaner code.

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-Id: <20230319151017.531737-32-bugaevc@gmail.com>

16 months agohurd: Add vm_param.h for x86_64
Sergey Bugaev [Sun, 19 Mar 2023 15:10:12 +0000 (18:10 +0300)]
hurd: Add vm_param.h for x86_64

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-Id: <20230319151017.531737-30-bugaevc@gmail.com>

16 months agohurd: Implement _hurd_longjmp_thread_state for x86_64
Sergey Bugaev [Sun, 19 Mar 2023 15:10:11 +0000 (18:10 +0300)]
hurd: Implement _hurd_longjmp_thread_state for x86_64

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-Id: <20230319151017.531737-29-bugaevc@gmail.com>

16 months agohtl: Implement thread_set_pcsptp for x86_64
Sergey Bugaev [Sun, 19 Mar 2023 15:10:05 +0000 (18:10 +0300)]
htl: Implement thread_set_pcsptp for x86_64

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-Id: <20230319151017.531737-23-bugaevc@gmail.com>

16 months agox86_64: Add rtld-stpncpy & rtld-strncpy
Sergey Bugaev [Sun, 19 Mar 2023 15:10:04 +0000 (18:10 +0300)]
x86_64: Add rtld-stpncpy & rtld-strncpy

Just like the other existing rtld-str* files, this provides rtld with
usable versions of stpncpy and strncpy.

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-Id: <20230319151017.531737-22-bugaevc@gmail.com>

16 months agohtl: Add tcb-offsets.sym for x86_64
Sergey Bugaev [Sun, 19 Mar 2023 15:10:03 +0000 (18:10 +0300)]
htl: Add tcb-offsets.sym for x86_64

The source code is the same as sysdeps/i386/htl/tcb-offsets.sym, but of
course the produced tcb-offsets.h will be different.

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-Id: <20230319151017.531737-21-bugaevc@gmail.com>

16 months agohurd: Move a couple of signal-related files to x86
Sergey Bugaev [Sun, 19 Mar 2023 15:10:02 +0000 (18:10 +0300)]
hurd: Move a couple of signal-related files to x86

These do not need any changes to be used on x86_64.

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-Id: <20230319151017.531737-20-bugaevc@gmail.com>

16 months agohurd: Use uintptr_t for register values in trampoline.c
Sergey Bugaev [Sun, 19 Mar 2023 15:09:58 +0000 (18:09 +0300)]
hurd: Use uintptr_t for register values in trampoline.c

This is more correct, if only because these fields are defined as having
the type unsigned int in the Mach headers, so casting them to a signed
int and then back is suboptimal.

Also, remove an extra reassignment of uesp -- this is another remnant of
the ecx kludge.

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-Id: <20230319151017.531737-16-bugaevc@gmail.com>

16 months agohurd: Move rtld-strncpy-c.c out of mach/hurd/
Sergey Bugaev [Sun, 19 Mar 2023 15:09:57 +0000 (18:09 +0300)]
hurd: Move rtld-strncpy-c.c out of mach/hurd/

There's nothing Mach- or Hurd-specific about it; any port that ends
up with rtld pulling in strncpy will need this.

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-Id: <20230319151017.531737-15-bugaevc@gmail.com>

16 months agohurd: More 64-bit integer casting fixes
Sergey Bugaev [Sun, 19 Mar 2023 15:09:55 +0000 (18:09 +0300)]
hurd: More 64-bit integer casting fixes

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-Id: <20230319151017.531737-13-bugaevc@gmail.com>

16 months agomach, hurd: Drop __libc_lock_self0
Sergey Bugaev [Sun, 19 Mar 2023 15:09:54 +0000 (18:09 +0300)]
mach, hurd: Drop __libc_lock_self0

This was used for the value of libc-lock's owner when TLS is not yet set
up, so THREAD_SELF can not be used. Since the value need not be anything
specific -- it just has to be non-NULL -- we can just use a plain
constant, such as (void *) 1, for this. This avoids accessing the symbol
through GOT, and exporting it from libc.so in the first place.

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-Id: <20230319151017.531737-12-bugaevc@gmail.com>

16 months agostdio-common: Fix building when !IS_IN (libc)
Sergey Bugaev [Sun, 19 Mar 2023 15:09:53 +0000 (18:09 +0300)]
stdio-common: Fix building when !IS_IN (libc)

In this case, _itoa_word () is already defined inline in the header (see
sysdeps/generic/_itoa.h), and the second definition causes an error.

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-Id: <20230319151017.531737-11-bugaevc@gmail.com>

16 months agohurd: Fix _hurd_setup_sighandler () signature
Sergey Bugaev [Sun, 19 Mar 2023 15:09:52 +0000 (18:09 +0300)]
hurd: Fix _hurd_setup_sighandler () signature

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-Id: <20230319151017.531737-10-bugaevc@gmail.com>

16 months agohurd: Disable O_TRUNC and FS_RETRY_MAGICAL in rtld
Sergey Bugaev [Sun, 19 Mar 2023 15:09:51 +0000 (18:09 +0300)]
hurd: Disable O_TRUNC and FS_RETRY_MAGICAL in rtld

hurd/lookup-retry.c is compiled into rtld, the dynamic linker/loader. To
avoid pulling in file_set_size, file_utimens, tty/ctty stuff, more
string/memory code (memmove, strncpy, strcpy), and more strtoul/itoa
code, compile out support for O_TRUNC and FS_RETRY_MAGICAL when building
hurd/lookup-retry.c for rtld. None of that functionality is useful to
rtld during startup anyway. Keep support for FS_RETRY_MAGICAL("/"),
since that does not pull in much, and is required for following absolute
symlinks.

The large number of extra code being pulled into rtld was noticed by
reviewing librtld.map & elf/librtld.os.map in the build tree.

It is worth noting that once libc.so is loaded, the real __open, __stat,
etc. replace the minimal versions used initially by rtld -- this is
especially important in the Hurd port, where the minimal rtld versions
do not use the dtable and just pass real Mach port names as fds. Thus,
once libc.so is loaded, rtld will gain access to the full
__hurd_file_name_lookup_retry () version, complete with FS_RETRY_MAGICAL
support, which is important in case the program decides to
dlopen ("/proc/self/fd/...") or some such.

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-Id: <20230319151017.531737-9-bugaevc@gmail.com>

16 months agohurd: Fix file name in #error
Sergey Bugaev [Sun, 19 Mar 2023 15:09:50 +0000 (18:09 +0300)]
hurd: Fix file name in #error

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-Id: <20230319151017.531737-8-bugaevc@gmail.com>

16 months agohurd: Swap around two function calls
Sergey Bugaev [Sun, 19 Mar 2023 15:09:49 +0000 (18:09 +0300)]
hurd: Swap around two function calls

...to keep `sigexc' port initialization in one place, and match what the
comments say.

No functional change.

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-Id: <20230319151017.531737-7-bugaevc@gmail.com>

16 months agohurd: Remove __hurd_threadvar_stack_{offset,mask}
Sergey Bugaev [Sun, 19 Mar 2023 15:09:48 +0000 (18:09 +0300)]
hurd: Remove __hurd_threadvar_stack_{offset,mask}

Noone is or should be using __hurd_threadvar_stack_{offset,mask}, we
have proper TLS now. These two remaining variables are never set to
anything other than zero, so any code that would try to use them as
described would just dereference a zero pointer and crash. So remove
them entirely.

Signed-off-by: Sergey Bugaev <bugaevc@gmail.com>
Message-Id: <20230319151017.531737-6-bugaevc@gmail.com>

16 months agohurd: Make exception subcode a long
Sergey Bugaev [Sun, 19 Mar 2023 15:09:47 +0000 (18:09 +0300)]
hurd: Make exception subcode a long

On EXC_BAD_ACCESS, exception subcode is used to pass the faulting memory
address, so it needs to be (at least) pointer-sized. Thus, make it into
a long. This matches the corresponding change in GNU Mach.
Message-Id: <20230319151017.531737-5-bugaevc@gmail.com>

16 months agotime: Fix strftime(3) API regarding nullability
Alejandro Colomar [Sun, 12 Mar 2023 00:08:10 +0000 (01:08 +0100)]
time: Fix strftime(3) API regarding nullability

strftime(3) doesn't accept null pointers in any of the parameters.

Cc: Paul Eggert <eggert@cs.ucla.edu>
Signed-off-by: Alejandro Colomar <alx@kernel.org>
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
16 months agoUpdate arm libm-tests-ulps
Adhemerval Zanella [Thu, 30 Mar 2023 13:44:33 +0000 (13:44 +0000)]
Update arm libm-tests-ulps

For the next test from cf7ffdd8a5f6da55397e10b3860062944312824c.

16 months agogetlogin_r: fix missing fallback if loginuid is unset (bug 30235)
Andreas Schwab [Wed, 15 Mar 2023 10:44:24 +0000 (11:44 +0100)]
getlogin_r: fix missing fallback if loginuid is unset (bug 30235)

When /proc/self/loginuid is not set, we should still fall back to using
the traditional utmp lookup, instead of failing right away.

16 months agomemalign: Support scanning for aligned chunks.
DJ Delorie [Wed, 29 Mar 2023 04:18:40 +0000 (00:18 -0400)]
memalign: Support scanning for aligned chunks.

This patch adds a chunk scanning algorithm to the _int_memalign code
path that reduces heap fragmentation by reusing already aligned chunks
instead of always looking for chunks of larger sizes and splitting
them.  The tcache macros are extended to allow removing a chunk from
the middle of the list.

The goal is to fix the pathological use cases where heaps grow
continuously in workloads that are heavy users of memalign.

Note that tst-memalign-2 checks for tcache operation, which
malloc-check bypasses.

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
16 months agomalloc: Use C11 atomics on memusage
Adhemerval Zanella [Fri, 11 Mar 2022 16:53:11 +0000 (13:53 -0300)]
malloc: Use C11 atomics on memusage

Checked on x86_64-linux-gnu.

Reviewed-by: DJ Delorie <dj@redhat.com>
16 months agoRemove --enable-tunables configure option
Adhemerval Zanella Netto [Thu, 23 Mar 2023 13:13:51 +0000 (10:13 -0300)]
Remove --enable-tunables configure option

And make always supported.  The configure option was added on glibc 2.25
and some features require it (such as hwcap mask, huge pages support, and
lock elisition tuning).  It also simplifies the build permutations.

Changes from v1:
 * Remove glibc.rtld.dynamic_sort changes, it is orthogonal and needs
   more discussion.
 * Cleanup more code.
Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
16 months agoRemove --disable-experimental-malloc option
Adhemerval Zanella [Tue, 28 Mar 2023 18:46:34 +0000 (15:46 -0300)]
Remove --disable-experimental-malloc option

It is the default since 2.26 and it has bitrotten over the years,
By using it multiple malloc tests fails:

  FAIL: malloc/tst-memalign-2
  FAIL: malloc/tst-memalign-2-malloc-hugetlb1
  FAIL: malloc/tst-memalign-2-malloc-hugetlb2
  FAIL: malloc/tst-memalign-2-mcheck
  FAIL: malloc/tst-mxfast-malloc-hugetlb1
  FAIL: malloc/tst-mxfast-malloc-hugetlb2
  FAIL: malloc/tst-tcfree2
  FAIL: malloc/tst-tcfree2-malloc-hugetlb1
  FAIL: malloc/tst-tcfree2-malloc-hugetlb2

Checked on x86_64-linux-gnu.

Reviewed-by: DJ Delorie <dj@redhat.com>
16 months agoAllow building with --disable-nscd again
Flavio Cruz [Tue, 28 Mar 2023 13:16:17 +0000 (10:16 -0300)]
Allow building with --disable-nscd again

The change 88677348b4de breaks the build with undefiend references to
the NSCD functions.

16 months agosystem: Add "--" after "-c" for sh (BZ #28519)
Joe Simmons-Talbott [Wed, 22 Mar 2023 18:04:30 +0000 (14:04 -0400)]
system: Add "--" after "-c" for sh (BZ #28519)

Prevent sh from interpreting a user string as shell options if it
starts with '-' or '+'.  Since the version of /bin/sh used for testing
system() is different from the full-fledged system /bin/sh add support
to it for handling "--" after "-c".  Add a testcase to ensure the
expected behavior.

Signed-off-by: Joe Simmons-Talbott <josimmon@redhat.com>
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
16 months agoposix: Fix some crashes in wordexp [BZ #18096]
Julian Squires [Wed, 22 Mar 2023 16:39:57 +0000 (14:09 -0230)]
posix: Fix some crashes in wordexp [BZ #18096]

Without these fixes, the first three included tests segfault (on a
NULL dereference); the fourth aborts on an assertion, which is itself
unnecessary.

Signed-off-by: Julian Squires <julian@cipht.net>
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
16 months agoLoongArch: ldconfig: Add comments for using EF_LARCH_OBJABI_V1
caiyinyu [Tue, 28 Mar 2023 01:19:53 +0000 (09:19 +0800)]
LoongArch: ldconfig: Add comments for using EF_LARCH_OBJABI_V1

We added Adhemerval Zanella's comment to explain the reason for
using EF_LARCH_OBJABI_V1.

16 months agoelf: Take into account ${sysconfdir} in elf/tst-ldconfig-p.sh
Romain Geissler [Sun, 26 Mar 2023 19:25:58 +0000 (19:25 +0000)]
elf: Take into account ${sysconfdir} in elf/tst-ldconfig-p.sh

Take into account ${sysconfdir} in elf/tst-ldconfig-p.sh.

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
16 months agoFix tst-glibc-hwcaps-prepend-cache with custom configure prefix value
Romain Geissler [Sun, 26 Mar 2023 20:00:16 +0000 (20:00 +0000)]
Fix tst-glibc-hwcaps-prepend-cache with custom configure prefix value

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
16 months agoFix tst-ldconfig-ld_so_conf-update with custom configure prefix value
Romain Geissler [Sun, 26 Mar 2023 20:00:15 +0000 (20:00 +0000)]
Fix tst-ldconfig-ld_so_conf-update with custom configure prefix value

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
16 months agosupport: introduce support_sysconfdir_prefix
Romain Geissler [Sun, 26 Mar 2023 20:00:14 +0000 (20:00 +0000)]
support: introduce support_sysconfdir_prefix

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
16 months agoRemove set-hooks.h from generic includes
Adhemerval Zanella Netto [Tue, 27 Dec 2022 21:11:45 +0000 (18:11 -0300)]
Remove set-hooks.h from generic includes

The hooks mechanism uses symbol sets for running lists of functions,
which requires either extra linker directives to provide any hardening
(such as RELRO) or additional code (such as pointer obfuscation via
mangling with random value).

Currently only hurd uses set-hooks.h so we remove it from the generic
includes.  The generic implementation uses direct function calls which
provide hardening and good code generation, observability and debugging
without the need for extra linking options or special code handling.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
16 months agoRemove --with-default-link configure option
Adhemerval Zanella Netto [Tue, 27 Dec 2022 21:11:44 +0000 (18:11 -0300)]
Remove --with-default-link configure option

Now that there is no need to use a special linker script to hardening
internal data structures, remove the --with-default-link configure
option and associated definitions.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
16 months agolibio: Remove the usage of __libc_IO_vtables
Adhemerval Zanella Netto [Tue, 27 Dec 2022 21:11:43 +0000 (18:11 -0300)]
libio: Remove the usage of __libc_IO_vtables

Instead of using a special ELF section along with a linker script
directive to put the IO vtables within the RELRO section, the libio
vtables are all moved to an array marked as data.relro (so linker
will place in the RELRO segment without the need of extra directives).

To avoid static linking namespace issues and including all vtable
referenced objects, all required function pointers are set to weak alias.

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

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
16 months agolibio: Do not autogenerate stdio_lim.h
Adhemerval Zanella Netto [Mon, 6 Mar 2023 18:53:55 +0000 (15:53 -0300)]
libio: Do not autogenerate stdio_lim.h

Instead define the required fields in system dependend files.  The only
system dependent definition is FILENAME_MAX, which should match POSIX
PATH_MAX, and it is obtained from either kernel UAPI or mach headers.
Currently set pre-defined value from current kernels.

It avoids a circular dependendy when including stdio.h in
gen-as-const-headers files.

Checked on x86_64-linux-gnu and i686-linux-gnu
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
16 months agoMove libc_freeres_ptrs and libc_subfreeres to hidden/weak functions
Adhemerval Zanella Netto [Tue, 27 Dec 2022 21:11:42 +0000 (18:11 -0300)]
Move libc_freeres_ptrs and libc_subfreeres to hidden/weak functions

They are both used by __libc_freeres to free all library malloc
allocated resources to help tooling like mtrace or valgrind with
memory leak tracking.

The current scheme uses assembly markers and linker script entries
to consolidate the free routine function pointers in the RELRO segment
and to be freed buffers in BSS.

This patch changes it to use specific free functions for
libc_freeres_ptrs buffers and call the function pointer array directly
with call_function_static_weak.

It allows the removal of both the internal macros and the linker
script sections.

Checked on x86_64-linux-gnu, i686-linux-gnu, and aarch64-linux-gnu.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
16 months agobenchtests: Move libmvec benchtest inputs to benchtests directory
Joe Ramsay [Fri, 24 Mar 2023 12:10:10 +0000 (12:10 +0000)]
benchtests: Move libmvec benchtest inputs to benchtests directory

This allows other targets to use the same inputs for their own libmvec
microbenchmarks without having to duplicate them in their own
subdirectory.
Reviewed-by: Szabolcs Nagy <szabolcs.nagy@arm.com>
16 months agostdio-common: tests: don't double-define _FORTIFY_SOURCE
Sam James [Tue, 21 Feb 2023 09:27:26 +0000 (09:27 +0000)]
stdio-common: tests: don't double-define _FORTIFY_SOURCE

Exactly the same as 35bcb08eaa953c9b8bef6ab2486dc4361e1f26c0.

If using -D_FORITFY_SOURCE=3 (in my case, I've patched GCC to add
=3 instead of =2 (we've done =2 for years in Gentoo)), building
glibc tests will fail on tst-bz11319-fortify2 like:
```
<command-line>: error: "_FORTIFY_SOURCE" redefined [-Werror]
<built-in>: note: this is the location of the previous definition
cc1: all warnings being treated as errors
```

It's just because we're always setting -D_FORTIFY_SOURCE=2
rather than unsetting it first. If F_S is already 2, it's harmless,
but if it's another value (say, 1, or 3), the compiler will bawk.

(I'm not aware of a reason this couldn't be tested with =3,
but the toolchain support is limited for that (too new), and we want
to run the tests everywhere possible.)

As Siddhesh noted previously, we could implement some fallback
logic to determine the maximal F_S value supported by the toolchain,
which is a bit easier now that autoconf-archive has been updated for F_S=3
(https://github.com/autoconf-archive/autoconf-archive/pull/269), but let's
revisit this if it continues to crop up.

Signed-off-by: Sam James <sam@gentoo.org>
Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
16 months agoLoongArch: ldconfig: Ignore EF_LARCH_OBJABI_V1 in shared objects
Xi Ruoyao [Sun, 26 Mar 2023 11:13:34 +0000 (19:13 +0800)]
LoongArch: ldconfig: Ignore EF_LARCH_OBJABI_V1 in shared objects

Binutils 2.40 sets EF_LARCH_OBJABI_V1 for shared objects:

    $ ld --version | head -n1
    GNU ld (GNU Binutils) 2.40
    $ echo 'int dummy;' > dummy.c
    $ cc dummy.c -shared
    $ readelf -h a.out | grep Flags
    Flags:                             0x43, DOUBLE-FLOAT, OBJ-v1

We need to ignore it in ldconfig or ldconfig will consider all shared
objects linked by Binutils 2.40 "unsupported".  Maybe we should stop
setting EF_LARCH_OBJABI_V1 for shared objects, but Binutils 2.40 is
already released and we cannot change it.

16 months ago_dl_map_object_from_fd: Remove unnecessary debugger notification in error path
Andreas Schwab [Thu, 23 Mar 2023 15:18:50 +0000 (16:18 +0100)]
_dl_map_object_from_fd: Remove unnecessary debugger notification in error path

After commit ed3ce71f5c ("elf: Move la_activity (LA_ACT_ADD) after
_dl_add_to_namespace_list() (BZ #28062)") it is no longer necessary to
reset the debugger state in the error case, since the debugger
notification only happens after no more errors can occur.

16 months agohppa: Drop 16-byte pthread lock alignment
John David Anglin [Sun, 26 Mar 2023 21:16:22 +0000 (21:16 +0000)]
hppa: Drop 16-byte pthread lock alignment

Linux threads were removed about 12 years ago and the current
nptl implementation only requires 4-byte alignment for pthread
locks.

The 16-byte alignment causes various issues. For example in
building ignition-msgs, we have:

/usr/include/google/protobuf/map.h:124:37: error: static assertion failed
  124 |   static_assert(alignof(value_type) <= 8, "");
      |                 ~~~~~~~~~~~~~~~~~~~~^~~~

This is caused by the 16-byte pthread lock alignment.

Signed-off-by: John David Anglin <dave.anglin@bell.net>
16 months agoMinor: don't call _dl_debug_update (which can have side effects) inside assert
Paul Pluzhnikov [Sat, 25 Mar 2023 21:27:01 +0000 (21:27 +0000)]
Minor: don't call _dl_debug_update (which can have side effects) inside assert

16 months agox86: Don't check PREFETCHWT1 in tst-cpu-features-cpuinfo.c
DJ Delorie [Fri, 10 Mar 2023 03:32:54 +0000 (22:32 -0500)]
x86: Don't check PREFETCHWT1 in tst-cpu-features-cpuinfo.c

Don't check PREFETCHWT1 against /proc/cpuinfo since kernel doesn't report
PREFETCHWT1 in /proc/cpuinfo.

Reviewed-by: Noah Goldstein <goldstein.w.n@gmail.com>
This page took 0.088326 seconds and 5 git commands to generate.