| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch adds the narrowing multiply functions from TS 18661-1 to
glibc's libm: fmul, fmull, dmull, f32mulf64, f32mulf32x, f32xmulf64
for all configurations; f32mulf64x, f32mulf128, f64mulf64x,
f64mulf128, f32xmulf64x, f32xmulf128, f64xmulf128 for configurations
with _Float64x and _Float128; __nldbl_dmull for ldbl-opt.
The changes are mostly essentially the same as for the narrowing add
functions, so the description of those generally applies to this patch
as well. f32xmulf64 for i386 cannot use precision control as used for
add and subtract, because that would result in double rounding for
subnormal results, so that uses round-to-odd with long double
intermediate result instead. The soft-fp support involves adding a
new FP_TRUNC_COOKED since soft-fp multiplication uses cooked inputs
and outputs.
Tested for x86_64, x86, mips64 (all three ABIs, both hard and soft
float) and powerpc, and with build-many-glibcs.py.
* math/Makefile (libm-narrow-fns): Add mul.
(libm-test-funcs-narrow): Likewise.
* math/Versions (GLIBC_2.28): Add narrowing multiply functions.
* math/bits/mathcalls-narrow.h (mul): Use __MATHCALL_NARROW.
* math/gen-auto-libm-tests.c (test_functions): Add mul.
* math/math-narrow.h (CHECK_NARROW_MUL): New macro.
(NARROW_MUL_ROUND_TO_ODD): Likewise.
(NARROW_MUL_TRIVIAL): Likewise.
* soft-fp/op-common.h (FP_TRUNC_COOKED): Likewise.
* sysdeps/ieee754/float128/float128_private.h (__fmull): New
macro.
(__dmull): Likewise.
* sysdeps/ieee754/ldbl-opt/Makefile (libnldbl-calls): Add fmul and
dmul.
(CFLAGS-nldbl-dmul.c): New variable.
(CFLAGS-nldbl-fmul.c): Likewise.
* sysdeps/ieee754/ldbl-opt/Versions (GLIBC_2.28): Add
__nldbl_dmull.
* sysdeps/ieee754/ldbl-opt/nldbl-compat.h (__nldbl_dmull): New
prototype.
* manual/arith.texi (Misc FP Arithmetic): Document fmul, fmull,
dmull, fMmulfN, fMmulfNx, fMxmulfN and fMxmulfNx.
* math/auto-libm-test-in: Add tests of mul.
* math/auto-libm-test-out-narrow-mul: New generated file.
* math/libm-test-narrow-mul.inc: New file.
* sysdeps/i386/fpu/s_f32xmulf64.c: Likewise.
* sysdeps/ieee754/dbl-64/s_f32xmulf64.c: Likewise.
* sysdeps/ieee754/dbl-64/s_fmul.c: Likewise.
* sysdeps/ieee754/float128/s_f32mulf128.c: Likewise.
* sysdeps/ieee754/float128/s_f64mulf128.c: Likewise.
* sysdeps/ieee754/float128/s_f64xmulf128.c: Likewise.
* sysdeps/ieee754/ldbl-128/s_dmull.c: Likewise.
* sysdeps/ieee754/ldbl-128/s_f64xmulf128.c: Likewise.
* sysdeps/ieee754/ldbl-128/s_fmull.c: Likewise.
* sysdeps/ieee754/ldbl-128ibm/s_dmull.c: Likewise.
* sysdeps/ieee754/ldbl-128ibm/s_fmull.c: Likewise.
* sysdeps/ieee754/ldbl-96/s_dmull.c: Likewise.
* sysdeps/ieee754/ldbl-96/s_fmull.c: Likewise.
* sysdeps/ieee754/ldbl-opt/nldbl-dmul.c: Likewise.
* sysdeps/ieee754/ldbl-opt/nldbl-fmul.c: Likewise.
* sysdeps/ieee754/soft-fp/s_dmull.c: Likewise.
* sysdeps/ieee754/soft-fp/s_fmul.c: Likewise.
* sysdeps/ieee754/soft-fp/s_fmull.c: Likewise.
* sysdeps/powerpc/fpu/libm-test-ulps: Update.
* sysdeps/mach/hurd/i386/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/aarch64/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/alpha/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/arm/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/hppa/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/i386/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/ia64/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/microblaze/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips32/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips64/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/nios2/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/sh/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/x86_64/64/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist: Likewise.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
A recent binutils patch
<https://sourceware.org/ml/binutils/2018-04/msg00336.html> stops the
MIPS linker including the _gp_disp absolute symbol in dynamic symbol
tables.
With older binutils, it is included for MIPS o32 (despite the use of
symbol versioning), and this means that all the ABI test baselines for
MIPS o32 include "_gp_disp _gp_disp A". This symbol is not
meaningfully part of the ABI for shared libraries, since it always has
to be resolved at static link time to the local definition for the
linked object.
All the other absolute symbols in ABI test baselines are the names of
symbol versions. I don't think the mere existence of a symbol version
with a given name - as opposed to the contents of that version if
nonempty - is part of the ABI either. Thus, this patch allows the ABI
tests to pass both before and after the binutils change by changing
abilist.awk not to include absolute symbols in its output, and
changing the baselines accordingly.
Tested for x86_64, and with build-many-glibcs.py.
* scripts/abilist.awk: Ignore absolute symbols.
* sysdeps/mach/hurd/i386/ld.abilist: Remove absolute symbols.
* sysdeps/mach/hurd/i386/libBrokenLocale.abilist: Likewise.
* sysdeps/mach/hurd/i386/libanl.abilist: Likewise.
* sysdeps/mach/hurd/i386/libc.abilist: Likewise.
* sysdeps/mach/hurd/i386/libcrypt.abilist: Likewise.
* sysdeps/mach/hurd/i386/libdl.abilist: Likewise.
* sysdeps/mach/hurd/i386/libm.abilist: Likewise.
* sysdeps/mach/hurd/i386/libnsl.abilist: Likewise.
* sysdeps/mach/hurd/i386/libpthread.abilist: Likewise.
* sysdeps/mach/hurd/i386/libresolv.abilist: Likewise.
* sysdeps/mach/hurd/i386/librt.abilist: Likewise.
* sysdeps/mach/hurd/i386/libutil.abilist: Likewise.
* sysdeps/unix/sysv/linux/aarch64/ld.abilist: Likewise.
* sysdeps/unix/sysv/linux/aarch64/libBrokenLocale.abilist: Likewise.
* sysdeps/unix/sysv/linux/aarch64/libanl.abilist: Likewise.
* sysdeps/unix/sysv/linux/aarch64/libc.abilist: Likewise.
* sysdeps/unix/sysv/linux/aarch64/libcrypt.abilist: Likewise.
* sysdeps/unix/sysv/linux/aarch64/libdl.abilist: Likewise.
* sysdeps/unix/sysv/linux/aarch64/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/aarch64/libnsl.abilist: Likewise.
* sysdeps/unix/sysv/linux/aarch64/libpthread.abilist: Likewise.
* sysdeps/unix/sysv/linux/aarch64/libresolv.abilist: Likewise.
* sysdeps/unix/sysv/linux/aarch64/librt.abilist: Likewise.
* sysdeps/unix/sysv/linux/aarch64/libthread_db.abilist: Likewise.
* sysdeps/unix/sysv/linux/aarch64/libutil.abilist: Likewise.
* sysdeps/unix/sysv/linux/alpha/ld.abilist: Likewise.
* sysdeps/unix/sysv/linux/alpha/libBrokenLocale.abilist: Likewise.
* sysdeps/unix/sysv/linux/alpha/libanl.abilist: Likewise.
* sysdeps/unix/sysv/linux/alpha/libc.abilist: Likewise.
* sysdeps/unix/sysv/linux/alpha/libcrypt.abilist: Likewise.
* sysdeps/unix/sysv/linux/alpha/libdl.abilist: Likewise.
* sysdeps/unix/sysv/linux/alpha/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/alpha/libnsl.abilist: Likewise.
* sysdeps/unix/sysv/linux/alpha/libpthread.abilist: Likewise.
* sysdeps/unix/sysv/linux/alpha/libresolv.abilist: Likewise.
* sysdeps/unix/sysv/linux/alpha/librt.abilist: Likewise.
* sysdeps/unix/sysv/linux/alpha/libthread_db.abilist: Likewise.
* sysdeps/unix/sysv/linux/alpha/libutil.abilist: Likewise.
* sysdeps/unix/sysv/linux/arm/ld.abilist: Likewise.
* sysdeps/unix/sysv/linux/arm/libBrokenLocale.abilist: Likewise.
* sysdeps/unix/sysv/linux/arm/libanl.abilist: Likewise.
* sysdeps/unix/sysv/linux/arm/libc.abilist: Likewise.
* sysdeps/unix/sysv/linux/arm/libcrypt.abilist: Likewise.
* sysdeps/unix/sysv/linux/arm/libdl.abilist: Likewise.
* sysdeps/unix/sysv/linux/arm/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/arm/libnsl.abilist: Likewise.
* sysdeps/unix/sysv/linux/arm/libpthread.abilist: Likewise.
* sysdeps/unix/sysv/linux/arm/libresolv.abilist: Likewise.
* sysdeps/unix/sysv/linux/arm/librt.abilist: Likewise.
* sysdeps/unix/sysv/linux/arm/libthread_db.abilist: Likewise.
* sysdeps/unix/sysv/linux/arm/libutil.abilist: Likewise.
* sysdeps/unix/sysv/linux/hppa/ld.abilist: Likewise.
* sysdeps/unix/sysv/linux/hppa/libBrokenLocale.abilist: Likewise.
* sysdeps/unix/sysv/linux/hppa/libanl.abilist: Likewise.
* sysdeps/unix/sysv/linux/hppa/libc.abilist: Likewise.
* sysdeps/unix/sysv/linux/hppa/libcrypt.abilist: Likewise.
* sysdeps/unix/sysv/linux/hppa/libdl.abilist: Likewise.
* sysdeps/unix/sysv/linux/hppa/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/hppa/libnsl.abilist: Likewise.
* sysdeps/unix/sysv/linux/hppa/libpthread.abilist: Likewise.
* sysdeps/unix/sysv/linux/hppa/libresolv.abilist: Likewise.
* sysdeps/unix/sysv/linux/hppa/librt.abilist: Likewise.
* sysdeps/unix/sysv/linux/hppa/libthread_db.abilist: Likewise.
* sysdeps/unix/sysv/linux/hppa/libutil.abilist: Likewise.
* sysdeps/unix/sysv/linux/i386/ld.abilist: Likewise.
* sysdeps/unix/sysv/linux/i386/libBrokenLocale.abilist: Likewise.
* sysdeps/unix/sysv/linux/i386/libanl.abilist: Likewise.
* sysdeps/unix/sysv/linux/i386/libc.abilist: Likewise.
* sysdeps/unix/sysv/linux/i386/libcrypt.abilist: Likewise.
* sysdeps/unix/sysv/linux/i386/libdl.abilist: Likewise.
* sysdeps/unix/sysv/linux/i386/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/i386/libnsl.abilist: Likewise.
* sysdeps/unix/sysv/linux/i386/libpthread.abilist: Likewise.
* sysdeps/unix/sysv/linux/i386/libresolv.abilist: Likewise.
* sysdeps/unix/sysv/linux/i386/librt.abilist: Likewise.
* sysdeps/unix/sysv/linux/i386/libthread_db.abilist: Likewise.
* sysdeps/unix/sysv/linux/i386/libutil.abilist: Likewise.
* sysdeps/unix/sysv/linux/ia64/ld.abilist: Likewise.
* sysdeps/unix/sysv/linux/ia64/libBrokenLocale.abilist: Likewise.
* sysdeps/unix/sysv/linux/ia64/libanl.abilist: Likewise.
* sysdeps/unix/sysv/linux/ia64/libc.abilist: Likewise.
* sysdeps/unix/sysv/linux/ia64/libcrypt.abilist: Likewise.
* sysdeps/unix/sysv/linux/ia64/libdl.abilist: Likewise.
* sysdeps/unix/sysv/linux/ia64/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/ia64/libnsl.abilist: Likewise.
* sysdeps/unix/sysv/linux/ia64/libpthread.abilist: Likewise.
* sysdeps/unix/sysv/linux/ia64/libresolv.abilist: Likewise.
* sysdeps/unix/sysv/linux/ia64/librt.abilist: Likewise.
* sysdeps/unix/sysv/linux/ia64/libthread_db.abilist: Likewise.
* sysdeps/unix/sysv/linux/ia64/libutil.abilist: Likewise.
* sysdeps/unix/sysv/linux/m68k/coldfire/ld.abilist: Likewise.
* sysdeps/unix/sysv/linux/m68k/coldfire/libBrokenLocale.abilist:
Likewise.
* sysdeps/unix/sysv/linux/m68k/coldfire/libanl.abilist: Likewise.
* sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist: Likewise.
* sysdeps/unix/sysv/linux/m68k/coldfire/libcrypt.abilist: Likewise.
* sysdeps/unix/sysv/linux/m68k/coldfire/libdl.abilist: Likewise.
* sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/m68k/coldfire/libnsl.abilist: Likewise.
* sysdeps/unix/sysv/linux/m68k/coldfire/libpthread.abilist: Likewise.
* sysdeps/unix/sysv/linux/m68k/coldfire/libresolv.abilist: Likewise.
* sysdeps/unix/sysv/linux/m68k/coldfire/librt.abilist: Likewise.
* sysdeps/unix/sysv/linux/m68k/coldfire/libthread_db.abilist: Likewise.
* sysdeps/unix/sysv/linux/m68k/coldfire/libutil.abilist: Likewise.
* sysdeps/unix/sysv/linux/m68k/m680x0/ld.abilist: Likewise.
* sysdeps/unix/sysv/linux/m68k/m680x0/libBrokenLocale.abilist:
Likewise.
* sysdeps/unix/sysv/linux/m68k/m680x0/libanl.abilist: Likewise.
* sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist: Likewise.
* sysdeps/unix/sysv/linux/m68k/m680x0/libcrypt.abilist: Likewise.
* sysdeps/unix/sysv/linux/m68k/m680x0/libdl.abilist: Likewise.
* sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/m68k/m680x0/libnsl.abilist: Likewise.
* sysdeps/unix/sysv/linux/m68k/m680x0/libpthread.abilist: Likewise.
* sysdeps/unix/sysv/linux/m68k/m680x0/libresolv.abilist: Likewise.
* sysdeps/unix/sysv/linux/m68k/m680x0/librt.abilist: Likewise.
* sysdeps/unix/sysv/linux/m68k/m680x0/libthread_db.abilist: Likewise.
* sysdeps/unix/sysv/linux/m68k/m680x0/libutil.abilist: Likewise.
* sysdeps/unix/sysv/linux/microblaze/ld.abilist: Likewise.
* sysdeps/unix/sysv/linux/microblaze/libBrokenLocale.abilist: Likewise.
* sysdeps/unix/sysv/linux/microblaze/libanl.abilist: Likewise.
* sysdeps/unix/sysv/linux/microblaze/libc.abilist: Likewise.
* sysdeps/unix/sysv/linux/microblaze/libcrypt.abilist: Likewise.
* sysdeps/unix/sysv/linux/microblaze/libdl.abilist: Likewise.
* sysdeps/unix/sysv/linux/microblaze/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/microblaze/libnsl.abilist: Likewise.
* sysdeps/unix/sysv/linux/microblaze/libpthread.abilist: Likewise.
* sysdeps/unix/sysv/linux/microblaze/libresolv.abilist: Likewise.
* sysdeps/unix/sysv/linux/microblaze/librt.abilist: Likewise.
* sysdeps/unix/sysv/linux/microblaze/libthread_db.abilist: Likewise.
* sysdeps/unix/sysv/linux/microblaze/libutil.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips32/ld.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips32/libBrokenLocale.abilist:
Likewise.
* sysdeps/unix/sysv/linux/mips/mips32/libanl.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips32/libcidn.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips32/libcrypt.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips32/libdl.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips32/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips32/libnsl.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips32/libnss_compat.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips32/libnss_db.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips32/libnss_dns.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips32/libnss_files.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips32/libnss_hesiod.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips32/libnss_nis.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips32/libnss_nisplus.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips32/libpthread.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips32/libresolv.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips32/librt.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips32/libthread_db.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips32/libutil.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips64/libBrokenLocale.abilist:
Likewise.
* sysdeps/unix/sysv/linux/mips/mips64/libanl.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips64/libcrypt.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips64/libdl.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips64/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips64/libnsl.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips64/libpthread.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips64/librt.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips64/libthread_db.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips64/libutil.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips64/n32/ld.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips64/n32/libresolv.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips64/n64/ld.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips64/n64/libresolv.abilist: Likewise.
* sysdeps/unix/sysv/linux/nios2/ld.abilist: Likewise.
* sysdeps/unix/sysv/linux/nios2/libBrokenLocale.abilist: Likewise.
* sysdeps/unix/sysv/linux/nios2/libanl.abilist: Likewise.
* sysdeps/unix/sysv/linux/nios2/libc.abilist: Likewise.
* sysdeps/unix/sysv/linux/nios2/libcrypt.abilist: Likewise.
* sysdeps/unix/sysv/linux/nios2/libdl.abilist: Likewise.
* sysdeps/unix/sysv/linux/nios2/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/nios2/libnsl.abilist: Likewise.
* sysdeps/unix/sysv/linux/nios2/libpthread.abilist: Likewise.
* sysdeps/unix/sysv/linux/nios2/libresolv.abilist: Likewise.
* sysdeps/unix/sysv/linux/nios2/librt.abilist: Likewise.
* sysdeps/unix/sysv/linux/nios2/libthread_db.abilist: Likewise.
* sysdeps/unix/sysv/linux/nios2/libutil.abilist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/ld.abilist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/libBrokenLocale.abilist:
Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/libanl.abilist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/libcrypt.abilist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/libdl.abilist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/libnsl.abilist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/libpthread.abilist:
Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/libresolv.abilist:
Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/librt.abilist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/libthread_db.abilist:
Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/libutil.abilist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist:
Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist:
Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/ld-le.abilist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/ld.abilist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/libBrokenLocale-le.abilist:
Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/libBrokenLocale.abilist:
Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/libanl-le.abilist:
Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/libanl.abilist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/libc.abilist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/libcrypt-le.abilist:
Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/libcrypt.abilist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/libdl-le.abilist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/libdl.abilist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/libnsl-le.abilist:
Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/libnsl.abilist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/libpthread-le.abilist:
Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/libpthread.abilist:
Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/libresolv-le.abilist:
Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/libresolv.abilist:
Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/librt-le.abilist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/librt.abilist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/libthread_db-le.abilist:
Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/libthread_db.abilist:
Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/libutil-le.abilist:
Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/libutil.abilist: Likewise.
* sysdeps/unix/sysv/linux/riscv/rv64/ld.abilist: Likewise.
* sysdeps/unix/sysv/linux/riscv/rv64/libBrokenLocale.abilist:
Likewise.
* sysdeps/unix/sysv/linux/riscv/rv64/libanl.abilist: Likewise.
* sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist: Likewise.
* sysdeps/unix/sysv/linux/riscv/rv64/libcrypt.abilist: Likewise.
* sysdeps/unix/sysv/linux/riscv/rv64/libdl.abilist: Likewise.
* sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/riscv/rv64/libnsl.abilist: Likewise.
* sysdeps/unix/sysv/linux/riscv/rv64/libpthread.abilist: Likewise.
* sysdeps/unix/sysv/linux/riscv/rv64/libresolv.abilist: Likewise.
* sysdeps/unix/sysv/linux/riscv/rv64/librt.abilist: Likewise.
* sysdeps/unix/sysv/linux/riscv/rv64/libthread_db.abilist: Likewise.
* sysdeps/unix/sysv/linux/riscv/rv64/libutil.abilist: Likewise.
* sysdeps/unix/sysv/linux/s390/libanl.abilist: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/ld.abilist: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/libBrokenLocale.abilist:
Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/libcrypt.abilist: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/libdl.abilist: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/libnsl.abilist: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/libpthread.abilist: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/libresolv.abilist: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/librt.abilist: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/libthread_db.abilist: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/libutil.abilist: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-64/ld.abilist: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-64/libBrokenLocale.abilist:
Likewise.
* sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-64/libcrypt.abilist: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-64/libdl.abilist: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-64/libnsl.abilist: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-64/libpthread.abilist: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-64/libresolv.abilist: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-64/librt.abilist: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-64/libthread_db.abilist: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-64/libutil.abilist: Likewise.
* sysdeps/unix/sysv/linux/sh/ld.abilist: Likewise.
* sysdeps/unix/sysv/linux/sh/libBrokenLocale.abilist: Likewise.
* sysdeps/unix/sysv/linux/sh/libanl.abilist: Likewise.
* sysdeps/unix/sysv/linux/sh/libc.abilist: Likewise.
* sysdeps/unix/sysv/linux/sh/libcrypt.abilist: Likewise.
* sysdeps/unix/sysv/linux/sh/libdl.abilist: Likewise.
* sysdeps/unix/sysv/linux/sh/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/sh/libnsl.abilist: Likewise.
* sysdeps/unix/sysv/linux/sh/libpthread.abilist: Likewise.
* sysdeps/unix/sysv/linux/sh/libresolv.abilist: Likewise.
* sysdeps/unix/sysv/linux/sh/librt.abilist: Likewise.
* sysdeps/unix/sysv/linux/sh/libthread_db.abilist: Likewise.
* sysdeps/unix/sysv/linux/sh/libutil.abilist: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc32/ld.abilist: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc32/libBrokenLocale.abilist:
Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc32/libanl.abilist: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc32/libcrypt.abilist: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc32/libdl.abilist: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc32/libnsl.abilist: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc32/libpthread.abilist: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc32/libresolv.abilist: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc32/librt.abilist: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc32/libthread_db.abilist: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc32/libutil.abilist: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/ld.abilist: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/libBrokenLocale.abilist:
Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/libanl.abilist: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/libcrypt.abilist: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/libdl.abilist: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/libnsl.abilist: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/libpthread.abilist: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/libresolv.abilist: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/librt.abilist: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/libthread_db.abilist: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/libutil.abilist: Likewise.
* sysdeps/unix/sysv/linux/x86_64/64/ld.abilist: Likewise.
* sysdeps/unix/sysv/linux/x86_64/64/libBrokenLocale.abilist: Likewise.
* sysdeps/unix/sysv/linux/x86_64/64/libanl.abilist: Likewise.
* sysdeps/unix/sysv/linux/x86_64/64/libc.abilist: Likewise.
* sysdeps/unix/sysv/linux/x86_64/64/libcrypt.abilist: Likewise.
* sysdeps/unix/sysv/linux/x86_64/64/libdl.abilist: Likewise.
* sysdeps/unix/sysv/linux/x86_64/64/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/x86_64/64/libnsl.abilist: Likewise.
* sysdeps/unix/sysv/linux/x86_64/64/libpthread.abilist: Likewise.
* sysdeps/unix/sysv/linux/x86_64/64/libresolv.abilist: Likewise.
* sysdeps/unix/sysv/linux/x86_64/64/librt.abilist: Likewise.
* sysdeps/unix/sysv/linux/x86_64/64/libthread_db.abilist: Likewise.
* sysdeps/unix/sysv/linux/x86_64/64/libutil.abilist: Likewise.
* sysdeps/unix/sysv/linux/x86_64/libmvec.abilist: Likewise.
* sysdeps/unix/sysv/linux/x86_64/x32/ld.abilist: Likewise.
* sysdeps/unix/sysv/linux/x86_64/x32/libBrokenLocale.abilist: Likewise.
* sysdeps/unix/sysv/linux/x86_64/x32/libanl.abilist: Likewise.
* sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist: Likewise.
* sysdeps/unix/sysv/linux/x86_64/x32/libcrypt.abilist: Likewise.
* sysdeps/unix/sysv/linux/x86_64/x32/libdl.abilist: Likewise.
* sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/x86_64/x32/libnsl.abilist: Likewise.
* sysdeps/unix/sysv/linux/x86_64/x32/libpthread.abilist: Likewise.
* sysdeps/unix/sysv/linux/x86_64/x32/libresolv.abilist: Likewise.
* sysdeps/unix/sysv/linux/x86_64/x32/librt.abilist: Likewise.
* sysdeps/unix/sysv/linux/x86_64/x32/libthread_db.abilist: Likewise.
* sysdeps/unix/sysv/linux/x86_64/x32/libutil.abilist: Likewise.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
To prepare for shadow stack support, restore the pointer into %rdx after
syscall and use %rdx, instead of %rsi, to restore context. There is no
functional change.
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
* sysdeps/unix/sysv/linux/x86_64/swapcontext.S (__swapcontext):
Restore the pointer into %rdx, after syscall and use %rdx,
instead of %rsi, to restore context.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
To prepare for shadow stack support, pop the pointer into %rdx after
syscall and use %rdx, instead of %rsi, to restore context. There is
no functional change.
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
* sysdeps/unix/sysv/linux/x86_64/setcontext.S (__setcontext):
Pop the pointer into %rdx after syscall and use %rdx, instead
of %rsi, to restore context.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The pad array in struct pthread_unwind_buf is used by setjmp to save
shadow stack register. We assert that size of struct pthread_unwind_buf
is no less than offset of shadow stack pointer + shadow stack pointer
size.
Since functions, like LIBC_START_MAIN, START_THREAD_DEFN as well as
these with thread cancellation, call setjmp, but never return after
__libc_unwind_longjmp, __libc_unwind_longjmp, which is defined as
__libc_longjmp on x86, doesn't need to restore shadow stack register.
__libc_longjmp, which is a private interface for thread cancellation
implementation in libpthread, is changed to call __longjmp_cancel,
instead of __longjmp. __longjmp_cancel is a new internal function
in libc, which is similar to __longjmp, but doesn't restore shadow
stack register.
The compatibility longjmp and siglongjmp in libpthread.so are changed
to call __libc_siglongjmp, instead of __libc_longjmp, so that they will
restore shadow stack register.
Tested with build-many-glibcs.py.
Signed-off-by: H.J. Lu <hjl.tools@gmail.com>
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
* nptl/pthread_create.c (START_THREAD_DEFN): Clear previous
handlers after setjmp.
* setjmp/longjmp.c (__libc_longjmp): Don't define alias if
defined.
* sysdeps/unix/sysv/linux/x86/setjmpP.h: Include
<libc-pointer-arith.h>.
(_JUMP_BUF_SIGSET_BITS_PER_WORD): New.
(_JUMP_BUF_SIGSET_NSIG): Changed to 96.
(_JUMP_BUF_SIGSET_NWORDS): Changed to use ALIGN_UP and
_JUMP_BUF_SIGSET_BITS_PER_WORD.
* sysdeps/x86/Makefile (sysdep_routines): Add __longjmp_cancel.
* sysdeps/x86/__longjmp_cancel.S: New file.
* sysdeps/x86/longjmp.c: Likewise.
* sysdeps/x86/nptl/pt-longjmp.c: Likewise.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
As for sysctl, ustat has been deprecated in favor of {f}statfs. Also
some newer ports which uses generic interface builds a stub version that
returns ENOSYS.
This patch deprecates ustat interface by removing ustat.h related headers,
adding a compatibility symbol, and avoiding new ports to build and provide
the symbol.
Checked on x86_64-linux-gnu and i686-linux-gnu. Also checked with a
check-abi on all affected ABIs.
* NEWS: Add ustat.h deprecation entry.
* bits/ustat.h: Remove file.
* misc/sys/ustat.h: Likewise.
* misc/ustat.h: Likewise.
* sysdeps/unix/sysv/linux/generic/ustat.c: Likewise.
* misc/Makefile (headers): Remove ustat.h and sys/ustat.h.
* misc/ustat.c (__ustat): Rename to __old_ustat and export only in
compatibility mode.
* sysdeps/unix/sysv/linux/ustat.c (__ustat): Likewise.
* sysdeps/unix/sysv/linux/mips/ustat.c: Define DEV_TO_KDEV and use
generic Linux implementation.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch consolidate Linux readahead implementation on generic
sysdeps/unix/sysv/linux/readahead.c one. The changes are:
- Assume __NR_readahead existence with current minimum kernel of 3.2
for all architectures.
- Use INLINE_SYSCALL_CALL, __ALIGNMENT_ARG, and SYSCALL_LL64 to pass
the 64 bit offset. This allows architectures with different abis
to use the same implementation.
- Remove arch-specific readahead implementations.
Checked on x86_64-linux-gnu and i686-linux-gnu.
* sysdeps/unix/sysv/linux/arm/readahead.c: Remove file.
* sysdeps/unix/sysv/linux/mips/mips32/readahead.c: Likewise.
* sysdeps/unix/sysv/linux/mips/mips64/n32/syscalls.list (readahead):
Remove.
* sysdeps/unix/sysv/linux/mips/mips64/n64/syscalls.list: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/syscalls.list: Likewise.
* sysdeps/unix/sysv/linux/wordsize-64/syscalls.list: Likewise.
* sysdeps/unix/sysv/linux/readahead.c (__readahead): Assume
__NR_readahead existence, and use INLINE_SYSCALL_CALL, __ALIGNMENT_ARG,
and SYSCALL_LL64.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The creation of the divergent sysdeps directory for powerpc64le
commit 2f7f3cd8cd302bb10908c86f3f7b349df0a78e6a
Author: Paul E. Murphy <murphyp@linux.vnet.ibm.com>
Date: Fri Jul 15 18:04:40 2016 -0500
powerpc64le: Create divergent sysdep directory for powerpc64le.
allowed float128 to be enabled for powerpc64le (little-endian) and not
for powerpc64 (big-endian). Since the only intended difference between
them was the presence or absence of the float128 interface, the sysdeps
directory for powerpc64le explicitly reused the files from powerpc64
(through the use of Implies files).
Although this works, it also means that files under the powerpc64
directory might be preferred over files under powerpc64le. For
instance, on a build for powerpc64le with target set to power9, a file
from powerpc64/power5 might get built, even though a file with the same
name exists in powerpc64le/power8. That happens because the processor
hierarchy was only defined in the sysdeps directory for powerpc64 (and
borrowed by powerpc64le).
This patch fixes this behavior, by creating new subdirectories under
powerpc64 (i.e.: powerpc64/be and powerpc64/le) and creating new Implies
files to provide the hierarchy of processors for powerpc64 and
powerpc64le separately. These changes have no effect on installed,
stripped binaries (which remain unchanged).
Tested that installed stripped binaries are unchanged and that there are
no regressions on powerpc64 and powerpc64le.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Since tile support has been removed from the Linux kernel for 4.17,
this patch removes the (unmaintained) port to tilegx from glibc (the
tilepro support having been previously removed). This reflects the
general principle that a glibc port needs upstream support for the
architecture in all the components it build-depends on (so binutils,
GCC and the Linux kernel, for the normal case of a port supporting the
Linux kernel but no other OS), in order to be maintainable.
Apart from removal of sysdeps/tile and sysdeps/unix/sysv/linux/tile,
there are updates to various comments referencing tile for which
removal of those references seemed appropriate. The configuration is
removed from README and from build-many-glibcs.py. contrib.texi keeps
mention of removed contributions, but I updated Chris Metcalf's entry
to reflect that he also contributed the non-removed support for the
generic Linux kernel syscall interface.
__ASSUME_FADVISE64_64_NO_ALIGN support is removed, as it was only used
by tile.
* sysdeps/tile: Remove.
* sysdeps/unix/sysv/linux/tile: Likewise.
* README (tilegx-*-linux-gnu): Remove from list of supported
configurations.
* manual/contrib.texi (Contributors): Mention Chris Metcalf's
contribution of support for generic Linux kernel syscall
interface.
* scripts/build-many-glibcs.py (Context.add_all_configs): Remove
tilegx configurations.
(Config.install_linux_headers): Do not handle tile.
* sysdeps/unix/sysv/linux/aarch64/ldsodefs.h: Do not mention Tile
in comment.
* sysdeps/unix/sysv/linux/nios2/Makefile: Likewise.
* sysdeps/unix/sysv/linux/posix_fadvise.c: Likewise.
[__ASSUME_FADVISE64_64_NO_ALIGN] (__ALIGNMENT_ARG): Remove
conditional undefine and redefine.
* sysdeps/unix/sysv/linux/posix_fadvise64.c: Do not mention Tile
in comment.
[__ASSUME_FADVISE64_64_NO_ALIGN] (__ALIGNMENT_ARG): Remove
conditional undefine and redefine.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch consolidates Linux getdirentries{64} implementation on just
the default sysdeps/unix/sysv/linux/getdirentries{64} ones. The default
implementation handles the Linux requirements:
* getdirentries is only built for _DIRENT_MATCHES_DIRENT64 being 0.
* getdirentries64 is always built and aliased to getdents for ABIs
that define _DIRENT_MATCHES_DIRENT64 to 1.
Checked on aarch64-linux-gnu, x86_64-linux-gnu, i686-linux-gnu,
sparcv9-linux-gnu, sparc64-linux-gnu, powerpc-linux-gnu, and
powerpc64le-linux-gnu.
* sysdeps/unix/sysv/linux/getdirentries.c (getdirentries): Build iff
_DIRENT_MATCHES_DIRENT64 is not defined.
* sysdeps/unix/sysv/linux/getdirentries64.c (getdirentries64): Open
implementation and alias to getdirentries if _DIRENT_MATCHES_DIRENT64
is defined.
* sysdeps/unix/sysv/linux/wordsize-64/getdirentries.c: Remove file.
* sysdeps/unix/sysv/linux/wordsize-64/getdirentries64.c: Remove file.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch adds the PTRACE_SECCOMP_GET_METADATA constant from Linux
4.16 to all relevant sys/ptrace.h files. A type struct
__ptrace_seccomp_metadata, analogous to other such types, is also
added.
Tested for x86_64, and with build-many-glibcs.py.
* sysdeps/unix/sysv/linux/sys/ptrace.h
(PTRACE_SECCOMP_GET_METADATA): New enum value and macro.
* sysdeps/unix/sysv/linux/bits/ptrace-shared.h
(struct __ptrace_seccomp_metadata): New type.
* sysdeps/unix/sysv/linux/aarch64/sys/ptrace.h
(PTRACE_SECCOMP_GET_METADATA): Likewise.
* sysdeps/unix/sysv/linux/arm/sys/ptrace.h
(PTRACE_SECCOMP_GET_METADATA): Likewise.
* sysdeps/unix/sysv/linux/ia64/sys/ptrace.h
(PTRACE_SECCOMP_GET_METADATA): Likewise.
* sysdeps/unix/sysv/linux/powerpc/sys/ptrace.h
(PTRACE_SECCOMP_GET_METADATA): Likewise.
* sysdeps/unix/sysv/linux/s390/sys/ptrace.h
(PTRACE_SECCOMP_GET_METADATA): Likewise.
* sysdeps/unix/sysv/linux/sparc/sys/ptrace.h
(PTRACE_SECCOMP_GET_METADATA): Likewise.
* sysdeps/unix/sysv/linux/tile/sys/ptrace.h
(PTRACE_SECCOMP_GET_METADATA): Likewise.
* sysdeps/unix/sysv/linux/x86/sys/ptrace.h
(PTRACE_SECCOMP_GET_METADATA): Likewise.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch consolidates both alphasort{64} and versionsort{64}
implementation on just the default dirent/alphasort{64}c and
dirent/versionsort{64} respectively. It changes the logic
to follow the conventions used on other code consolidation:
* the non-LFS variant is only built for _DIRENT_MATCHES_DIRENT64 being 0.
* the LFS variant is always built and aliased to getdents for ABIs
that define _DIRENT_MATCHES_DIRENT64 to 1.
Also on Linux the compat symbol for old non-LFS dirent64 definition
requires a platform-specific scandir64.c. For powerpc32 and sparcv9
it requires to add specific arch-implementation to override the
generic Linux one because neither ABI exports an compat symbol for
non-LFS alphasort64 and versionsort64 variant. It is most likely a
bug and it is also not one that can be fixed (in that there would be
existing binaries expecting both meanings of that symbol at its single
existing version, with binaries expecting the new meaning probably much
more common than those expecting the original meaning of that symbol at
that version).
Checked on aarch64-linux-gnu, x86_64-linux-gnu, i686-linux-gnu,
sparcv9-linux-gnu, sparc64-linux-gnu, powerpc-linux-gnu, and
powerpc64le-linux-gnu.
* dirent/alphasort.c (alphasort): Build iff _DIRENT_MATCHES_DIRENT64 is
defined.
* dirent/versionsort.c (versionsort): Likewise.
* dirent/alphasort64.c (alphasort64): Build regardless and alias to
alphasort if _DIRENT_MATCHES_DIRENT64 is defined.
* dirent/versionsort64.c (versionsort64): Likewise.
* sysdeps/unix/sysv/linux/i386/alphasort64.c: Remove file.
* sysdeps/unix/sysv/linux/arm/alphasort64.c: Likewise.
* sysdeps/unix/sysv/linux/arm/versionsort64.c: Likewise.
* sysdeps/unix/sysv/linux/m68k/alphasort64.c: Likewise.
* sysdeps/unix/sysv/linux/m68k/versionsort64.c: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/alphasort64.c: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/versionsort64.c: Likewise.
* sysdeps/unix/sysv/linux/i386/versionsort64.c: Likewise.
* sysdeps/unix/sysv/linux/alphasort64.c: New file.
* sysdeps/unix/sysv/linux/versionsort64.c: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/alphasort64.c: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/versionsort64.c: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc32/alphasort64.c: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc32/versionsort64.c: Likewise.
|
|
|
|
|
|
|
|
|
|
|
| |
This patch makes the alpha bits/termios.h define XTABS to TAB3, so
matching a change made in Linux 4.16 as well as matching other
architectures where the values are already equal.
Tested with build-many-glibcs.py for alpha-linux-gnu.
* sysdeps/unix/sysv/linux/alpha/bits/termios.h [__USE_MISC]
(XTABS): Define to TAB3.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch consolidates scandir{at}{64} implementation on just
the default dirent/scandir{at}{64}{_r}.c ones. It changes the logic
to follow the conventions used on other code consolidation:
* scandir{at} is only built for _DIRENT_MATCHES_DIRENT64 being 0.
* scandir{at}{64} is always built and aliased to getdents for ABIs
that define _DIRENT_MATCHES_DIRENT64 to 1.
Also on Linux the compat symbol for old non-LFS dirent64 definition
requires a platform-specific scandir64.c.
Checked on aarch64-linux-gnu, x86_64-linux-gnu, i686-linux-gnu,
sparcv9-linux-gnu, sparc64-linux-gnu, powerpc-linux-gnu, and
powerpc64le-linux-gnu.
* dirent/scandir-tail-common.c: New file.
* dirent/scandir-tail.c: Use scandir-tail-common.c.
(__scandir_tail): Build iff _DIRENT_MATCHES_DIRENT64 is not defined.
* dirent/scandir.c: Use scandir-tail-common.c.
* dirent/scandirat.c: Likewise.
* dirent/scandir64-tail.c: Use scandir-tail-common.c.
* dirent/scandir64.c (scandir64): Always build and alias to scandir
if _DIRENT_MATCHES_DIRENT64 is defined.
* dirent/scandirat64.c (scandirat64): Likewise.
* include/dirent.h (__scandir_tail): Only define iff
_DIRENT_MATCHES_DIRENT64 is not defined.
(__scandir64_tail): Define regardless.
(__scandirat, scandirat64): Remove libc_hidden_proto.
* sysdeps/unix/sysv/linux/arm/scandir64.c: Remove file.
* sysdeps/unix/sysv/linux/m68k/scandir64.c: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/scandir64.c: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/scandir64.c: Likewise.
* sysdeps/unix/sysv/linux/i386/scandir64.c: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc32/scandir64.c: Likewise.
* sysdeps/unix/sysv/linux/scandir64.c: New file.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch updates the aarch64 bits/hwcap.h and dl-procinfo.c for the
new HWCAP_ASIMDFHM value in Linux 4.16.
Tested with build-many-glibcs.py for aarch64-linux-gnu.
* sysdeps/unix/sysv/linux/aarch64/bits/hwcap.h (HWCAP_ASIMDFHM):
New macro.
* sysdeps/unix/sysv/linux/aarch64/dl-procinfo.c (_DL_HWCAP_COUNT):
Increase to 24.
(_dl_aarch64_cap_flags): Add asimdfhm.
|
|
|
|
|
|
|
|
|
| |
* sysdeps/arm/sys/ucontext.h: Remove fpregset struct name, unused and
non-compliant.
* sysdeps/i386/sys/ucontext.h: Likewise.
* sysdeps/m68k/sys/ucontext.h: Likewise.
* sysdeps/mips/sys/ucontext.h: Likewise.
* sysdeps/unix/sysv/linux/hppa/sys/ucontext.h: Likewise.
|
|
|
|
|
|
|
|
|
|
| |
* bits/sched.h: Include <bits/types/struct_sched_param.h> and move struct
sched_param definition to it.
* sysdeps/unix/sysv/linux/bits/sched.h: Likewise.
* bits/types/struct_sched_param.h: New file.
* sysdeps/htl/bits/types/struct___pthread_attr.h: Include
<bits/types/struct_sched_param.h> instead of <sched.h>.
* posix/Makefile (headers): Add bits/types/struct_sched_param.h.
|
|
|
|
|
|
|
| |
Fix commit 298d0e3 for mips64n32, checked on a mips64n32-linux-gnu build.
* sysdeps/unix/sysv/linux/mips/mips64/getdents64.c (__getdents64):
Only alias to __getdents for _DIRENT_MATCHES_DIRENT64.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch consolidates Linux getdents{64} implementation on just
the default sysdeps/unix/sysv/linux/getdents{64}{_r}.c ones.
Although this symbol is used only internally, the non-LFS version
still need to be build due the non-LFS getdirentries which requires
its semantic.
The non-LFS default implementation now uses the wordsize-32 as base
which uses getdents64 syscall plus adjustment for overflow (it allows
to use the same code for architectures that does not support non-LFS
getdents syscall). It has two main differences to wordsize-32 one:
- DIRENT_SET_DP_INO is added to handle alpha requirement to zero
the padding.
- alloca is removed by allocating a bounded temporary buffer (it
increases stack usage by roughly 276 bytes).
The default implementation handle the Linux requirements:
* getdents is only built for _DIRENT_MATCHES_DIRENT64 being 0.
* getdents64 is always built and aliased to getdents for ABIs
that define _DIRENT_MATCHES_DIRENT64 to 1.
* A compat symbol is added for getdents64 for ABI that used to
export the old non-LFS version.
Checked on aarch64-linux-gnu, x86_64-linux-gnu, i686-linux-gnu,
sparcv9-linux-gnu, sparc64-linux-gnu, powerpc-linux-gnu, and
powerpc64le-linux-gnu.
* sysdeps/unix/sysv/linux/alpha/getdents.c: Add comments with alpha
requirements.
(_DIRENT_MATCHES_DIRENT64): Undef
* sysdeps/unix/sysv/linux/alpha/getdents64.c: Likewise.
* sysdeps/unix/sysv/linux/arm/getdents64.c: Remove file.
* sysdeps/unix/sysv/linux/generic/getdents.c: Likewise.
* sysdeps/unix/sysv/linux/generic/getdents64.c: Likewise.
* sysdeps/unix/sysv/linux/generic/wordsize-32/getdents.c: Likewise.
* sysdeps/unix/sysv/linux/getdents.c: Simplify implementation by
use getdents64 syscalls as base.
* sysdeps/unix/sysv/linux/getdents64.c: Likewise and add compatibility
symbol if required.
* sysdeps/unix/sysv/linux/hppa/getdents64.c: Likewise.
* sysdeps/unix/sysv/linux/i386/getdents64.c: Likewise.
* sysdeps/unix/sysv/linux/m68k/getdents64.c: Likewise.
* sysdeps/unix/sysv/linux/powerpc/getdents64.c: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/getdents64.c: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc32/getdents64.c: Likewise.
* sysdeps/unix/sysv/linux/wordsize-64/getdents.c: Likewise.
* sysdeps/unix/sysv/linux/wordsize-64/getdents64.c: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/get_clockfreq.c
(__get_clockfreq_via_proc_openprom): Use __getdents64.
* sysdeps/unix/sysv/linux/mips/mips64/getdents64.c: New file.
|
|
|
|
|
| |
This reverts commit 783c4820303fb6b031d401564f8089ecaf154b62 which
accidentaly flew out.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
| |
Linux 4.16 does not add any new syscalls; this patch updates the
version number in syscall-names.list to reflect that it's still
current for 4.16.
Tested for x86_64 (compilation with build-many-glibcs.py, using Linux
4.16).
* sysdeps/unix/sysv/linux/syscall-names.list: Update kernel
version to 4.16.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The recent commit b4a5d26d8835d972995f0a0a2f805a8845bafa0b
"linux: Consolidate sigaction implementation" changed the definition
of struct sigaction for s390 (31bit). Unfortunately the order of the
fields were wrong.
This leads to blocking testcases e.g. nptl/tst-sem11.
A thread which blocks due to sem_wait() is cancelled via pthread_cancel()
and the signal-handler sigcancel_handler (see <glibc-src>/nptl/nptl-init.c
is called.
But it just returns as the siginfo_t argument is not setup by the kernel.
Then the main-thread is blocking due to pthread_join().
The flag SA_SIGINFO is set in sa_flags in struct sigaction and
is copied to the "kernel_sigaction.h" struct by the sigaction() call,
but due to the wrong ordering of the struct fields,
the kernel does not recognize it.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch consolidates Linux readdir{64}{_r} implementation on just
the default sysdeps/unix/sysv/linux/readdir{64}{_r}.c ones. The
default implementation handle the Linux requirements:
* readdir{_r} is only built for _DIRENT_MATCHES_DIRENT64 being 0.
* readdir64{_r} is always built and aliased to readdir{_r} for
ABI that define _DIRENT_MATCHES_DIRENT64.
* A compat symbol is added for readdir64{_r} for ABI that used to
export the old non-LFS version.
Checked on aarch64-linux-gnu, x86_64-linux-gnu, i686-linux-gnu,
sparcv9-linux-gnu, sparc64-linux-gnu, powerpc-linux-gnu, and
powerpc64le-linux-gnu.
* sysdeps/posix/readdir.c (__READDIR, __GETDENTS, DIRENTY_TYPE,
__READDIR_ALIAS): Undefine after usage.
* sysdeps/posix/readdir_r.c (__READDIR_R, __GETDENTS, DIRENT_TYPE,
__READDIR_R_ALIAS): Likewise.
* sysdeps/unix/sysv/linux/arm/readdir64.c: Remove file.
* sysdeps/unix/sysv/linux/arm/readdir64_r.c: Likewise.
* sysdeps/unix/sysv/linux/m68k/readdir64.c: Likewise.
* sysdeps/unix/sysv/linux/m68k/readdir64_r.c: Likewise.
* sysdeps/unix/sysv/linux/powerpc/readdir64.c: Likewise.
* sysdeps/unix/sysv/linux/powerpc/readdir64_r.c: Likewise.
* sysdeps/unix/sysv/linux/i386/readdir64.c: Likewise.
* sysdeps/unix/sysv/linux/i386/readdir64_r.c: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/readdir64.c: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/readdir64_r.c: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc32/readdir64.c: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc32/readdir64_r.c: Likewise.
* sysdeps/unix/sysv/linux/wordsize-64/readdir.c: Likewise.
* sysdeps/unix/sysv/linux/wordsize-64/readdir64.c: Likewise.
* sysdeps/unix/sysv/linux/wordsize-64/readdir64_r.c: Likewise.
* sysdeps/unix/sysv/linux/wordsize-64/readdir_r.c: Likewise.
* sysdeps/unix/sysv/linux/readdir.c: New file.
* sysdeps/unix/sysv/linux/readdir_r.c: Likewise.
* sysdeps/unix/sysv/linux/readdir64.c: Add compat symbol if required.
* sysdeps/unix/sysv/linux/readdir64_r.c: Likewise.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch consolidates all Linux sigaction implementations on the default
sysdeps/unix/sysv/linux/sigaction.c. The idea is remove redundant code
and simplify new ports addition by following the current generic
Linux User API (UAPI).
The UAPI for new ports defines a generic extensible sigaction struct as:
struct sigaction
{
__sighandler_t sa_handler;
unsigned long sa_flags;
#ifdef SA_RESTORER
void (*sa_restorer) (void);
#endif
sigset_t sa_mask;
};
Where SA_RESTORER is just placed for compatibility reasons (news ports
should not add it). A similar definition is used on generic
kernel_sigaction.h.
The user exported sigaction definition is not changed, so for most
architectures it requires an adjustment to kernel expected one for the
syscall.
The main changes are:
- All architectures now define and use a kernel_sigaction struct meant
for the syscall, even for the architectures where the user sigaction
has the same layout of the kernel expected one (s390-64 and ia64).
Although it requires more work for these architectures, it simplifies
the generic implementation. Also, sigaction is hardly a hotspot where
micro optimization would play an important role.
- The generic kernel_sigaction definition is now aligned with expected
UAPI one for newer ports, where SA_RESTORER and sa_restorer are not
expected to be defined. This means adding kernel_sigaction for
current architectures that does define it (m68k, nios2, powerpc, s390,
sh, sparc, and tile) and which rely on previous generic definition.
- Remove old MIPS usage of sa_restorer. This was removed since 2.6.27
(2957c9e61ee9c - "[MIPS] IRIX: Goodbye and thanks for all the fish").
- The remaining arch-specific sigaction.c are to handle ABI idiosyncrasies
(like SPARC kernel ABI for rt_sigaction that requires an additional
stub argument).
So for new ports the generic implementation should work if its uses
Linux UAPI. If SA_RESTORER is still required (due some architecture
limitation), it should define its own kernel_sigaction.h, define it and
include generic header (assuming it still uses the default generic kernel
layout).
Checked on x86_64-linux-gnu, i686-linux-gnu, arm-linux-gnueabihf,
aarch64-linux-gnu, sparc64-linux-gnu, sparcv9-linux-gnu, powerpc-linux-gnu,
powerpc64-linux-gnu, ia64-linux-gnu and alpha-linux-gnu. I also checked the
build on all remaining affected ABIs.
* sysdeps/unix/sysv/linux/aarch64/sigaction.c: Use default Linux version
as base implementation.
* sysdeps/unix/sysv/linux/arm/sigaction.c: Likewise.
* sysdeps/unix/sysv/linux/i386/sigaction.c: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc32/sigaction.c: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/sigaction.c: Likewise.
* sysdeps/unix/sysv/linux/x86_64/sigaction.c: Likewise.
* sysdeps/unix/sysv/linux/alpha/kernel_sigaction.h: Add include guards,
remove unrequired definitions and update comments.
* sysdeps/unix/sysv/linux/kernel_sigaction.h: Likewise.
* sysdeps/unix/sysv/linux/mips/kernel_sigaction.h: Likewise.
* sysdeps/unix/sysv/linux/ia64/kernel_sigaction.h: New file.
* sysdeps/unix/sysv/linux/m68k/kernel_sigaction.h: Likewise.
* sysdeps/unix/sysv/linux/nios2/kernel_sigaction.h: Likewise.
* sysdeps/unix/sysv/linux/powerpc/kernel_sigaction: Likewise.
* sysdeps/unix/sysv/linux/s390/kernel_sigaction.h: Likewise.
* sysdeps/unix/sysv/linux/sh/kernel_sigaction.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/kernel_sigaction.h: Likewise.
* sysdeps/unix/sysv/linux/tile/kernel_sigaction.h: Likewise.
* sysdeps/unix/sysv/linux/ia64/sigaction.c: Remove file.
* sysdeps/unix/sysv/linux/mips/sigaction.c: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-64/sigaction.c: Likewise.
* sysdeps/unix/sysv/linux/sigaction.c: Add STUB, SET_SA_RESTORER,
and RESET_SA_RESTORER hooks.
|
|
|
|
|
|
|
|
|
|
|
| |
Add RWF_APPEND to RWF_SUPPORTED to support Linux kernel 4.16.
[BZ #22947]
* bits/uio-ext.h (RWF_APPEND): New.
* sysdeps/unix/sysv/linux/bits/uio-ext.h (RWF_APPEND): Likewise.
* manual/llio.texi: Document RWF_APPEND.
* misc/tst-preadvwritev2-common.c (RWF_APPEND): New.
(RWF_SUPPORTED): Add RWF_APPEND.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch filters out the internal NPTL signals (SIGCANCEL/SIGTIMER and
SIGSETXID) from signal functions. GLIBC on Linux requires both signals to
proper implement pthread cancellation, posix timers, and set*id posix
thread synchronization.
And not filtering out the internal signal is troublesome:
- A conformant program on a architecture that does not filter out the
signals might inadvertently disable pthread asynchronous cancellation,
set*id synchronization or posix timers.
- It might also to security issues if SIGSETXID is masked and set*id
functions are called (some threads might have effective user or group
id different from the rest).
The changes are basically:
- Change __is_internal_signal to bool and used on all signal function
that has a signal number as input. Also for signal function which accepts
signals sets (sigset_t) it assumes that canonical function were used to
add/remove signals which lead to some input simplification.
- Fix tst-sigset.c to avoid check for SIGCANCEL/SIGTIMER and SIGSETXID.
It is rewritten to check each signal indidually and to check realtime
signals using canonical macros.
- Add generic __clear_internal_signals and __is_internal_signal
version since both symbols are used on generic implementations.
- Remove superflous sysdeps/nptl/sigfillset.c.
- Remove superflous SIGTIMER handling on Linux __is_internal_signal
since it is the same of SIGCANCEL.
- Remove dangling define and obvious comment on nptl/sigaction.c.
Checked on x86_64-linux-gnu.
[BZ #22391]
* nptl/sigaction.c (__sigaction): Use __is_internal_signal to
check for internal nptl signals.
* nptl/sigaction.c (__sigaction): Likewise.
* signal/sigaddset.c (sigaddset): Likewise.
* signal/sigdelset.c (sigdelset): Likewise.
* sysdeps/posix/signal.c (__bsd_signal): Likewise.
* sysdeps/posix/sigset.c (sigset): Call and check sigaddset return
value.
* signal/sigfillset.c (sigfillset): User __clear_internal_signals
to filter out internal nptl signals.
* signal/tst-sigset.c (do_test): Check ech signal indidually and
also check realtime signals using standard macros.
* sysdeps/generic/internal-signals.h (__clear_internal_signals,
__is_internal_signal, __libc_signal_block_all,
__libc_signal_block_app, __libc_signal_restore_set): New functions.
* sysdeps/nptl/sigfillset.c: Remove file.
* sysdeps/unix/sysv/linux/internal-signals.h (__is_internal_signal):
Change return to bool.
(__clear_internal_signals): Remove SIGTIMER clean since it is
equal to SIGCANEL on Linux.
* sysdeps/unix/sysv/linux/sigtimedwait.c (__sigtimedwait): Assume
signal set was constructed using standard functions.
Reported-by: Yury Norov <ynorov@caviumnetworks.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch assumes O_DIRECTORY works as defined by POSIX on opendir
implementation (aligning with other glibc code, for instance pwd). This
allows remove both the fallback code to handle system with missing or
broken O_DIRECTORY along with the Linux specific opendir.c which just
advertise the working flag.
Checked on aarch64-linux-gnu, x86_64-linux-gnu, i686-linux-gnu,
sparcv9-linux-gnu, sparc64-linux-gnu, powerpc-linux-gnu, and
powerpc64le-linux-gnu.
* sysdeps/posix/opendir.c (o_directory_works, tryopen_o_directory):
Remove definitions.
(opendir_oflags): Use O_DIRECTORY regardless.
(__opendir, __opendirat): Remove need_isdir_precheck usage.
* sysdeps/unix/sysv/linux/opendir.c: Remove file.
|
|
|
|
|
| |
In addition to SIGSEGV and SIGILL, SIGBUS is also a possible signal
generated by the kernel.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch fixes 3dc214977 for sparc. Different than other architectures
SPARC kernel Kconfig does not define CONFIG_CLONE_BACKWARDS, however it
has the same ABI as if it did, implemented by sparc-specific code
(sparc_do_fork).
It also has a unique return value convention for clone:
Parent --> %o0 == child's pid, %o1 == 0
Child --> %o0 == parent's pid, %o1 == 1
Which required a special macro to correct issue the syscall
(INLINE_CLONE_SYSCALL).
Checked on sparc64-linux-gnu and sparcv9-linux-gnu.
* sysdeps/unix/sysv/linux/arch-fork.h [__ASSUME_CLONE_BACKWARDS]
(arch_fork): Issue INLINE_CLONE_SYSCALL if defined.
* sysdeps/unix/sysv/linux/sparc/kernel-features.h
(__ASSUME_CLONE_BACKWARDS): Define.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
When there is no login uid Linux sets /proc/self/loginid to the sentinel
value of, (uid_t) -1. If this is set we can return early and avoid
needlessly looking up the sentinel value in any configured nss
databases.
Checked on aarch64-linux-gnu.
* sysdeps/unix/sysv/linux/getlogin_r.c (__getlogin_r_loginuid): Return
early when linux sentinel value is set.
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Linux kernel architectures have various arrangements for umount
syscalls. There is a syscall that takes flags, and an older one that
does not. Newer architectures have only the one taking flags, under
the name umount2 (or under the name umount, in the ia64 case). Older
architectures may have both, under the names umount2 and umount (or
under the names umount and oldumount, in the alpha case). glibc then
has several similar implementations of the umount function (no flags)
in terms of either the __umount2 function, or the corresponding
syscall, or in terms of the old syscall under either of its names.
This patch simplifies the implementations in glibc by always using the
__umount2 function to implement the umount function on all systems
using the Linux kernel. The linux/generic implementation is moved to
sysdeps/unix/sysv/linux (without any changes to code or comments) and
all the other variants are removed. (This will have the effect of
causing the new syscall to be used in some cases that previously used
the old one, but as discussed for previous changes, such a change to
the underlying syscalls used is OK.)
There remain two variants of how the __umount2 function is
implemented, either in umount2.S, or, for ia64, in syscalls.list.
Tested with build-many-glibcs.py.
[BZ #16552]
* sysdeps/unix/sysv/linux/generic/umount.c: Move to ....
* sysdeps/unix/sysv/linux/umount.c: ... here.
* sysdeps/unix/sysv/linux/arm/umount.c: Remove file.
* sysdeps/unix/sysv/linux/hppa/umount.c: Likewise.
* sysdeps/unix/sysv/linux/ia64/umount.c: Likewise.
* sysdeps/unix/sysv/linux/mips/mips64/umount.c: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/umount.c: Likewise.
* sysdeps/unix/sysv/linux/umount.S: Likewise.
* sysdeps/unix/sysv/linux/x86_64/umount.c: Likewise.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* sysdeps/generic/libc-start.h [!SHARED] (ARCH_SETUP_TLS): Define to
__libc_setup_tls.
* sysdeps/unix/sysv/linux/powerpc/libc-start.h [!SHARED]
(ARCH_SETUP_TLS): Likewise.
* sysdeps/mach/hurd/libc-start.h: New file copied from
sysdeps/generic/libc-start.h, but define ARCH_SETUP_TLS to empty.
* csu/libc-start.c [!SHARED] (LIBC_START_MAIN): Call ARCH_SETUP_TLS instead
of __libc_setup_tls.
* sysdeps/mach/hurd/i386/init-first.c [!SHARED] (init1): Call
__libc_setup_tls before initializing libpthread and running _hurd_init which
starts the signal thread.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
The glibc-internal header frame.h was used in the old
debug/backtrace.c but is now unused. Similarly, there are some
sigcontextinfo.h macros that are used nowhere in glibc -
ADVANCE_STACK_FRAME and FIRST_FRAME_POINTER were used in the old
debug/backtrace.c, while SIGCONTEXT_EXTRA_ARGS, GET_FRAME, GET_STACK
and CALL_SIGHANDLER were unused even before the removal of that old
implementation (beyond uses of SIGCONTEXT_EXTRA_ARGS in definitions of
CALL_SIGHANDLER). This patch removes all the unused frame.h headers
and definitions of those macros.
Tested with build-many-glibcs.py.
* sysdeps/generic/frame.h: Remove file.
* sysdeps/arm/frame.h: Likewise.
* sysdeps/hppa/frame.h: Likewise.
* sysdeps/generic/sigcontextinfo.h (SIGCONTEXT_EXTRA_ARGS): Remove
macro.
(GET_FRAME): Likewise.
(GET_STACK): Likewise.
(CALL_SIGHANDLER): Likewise.
* sysdeps/mach/hurd/i386/sigcontextinfo.h (SIGCONTEXT_EXTRA_ARGS):
Likewise.
(GET_FRAME): Likewise.
(GET_STACK): Likewise.
(CALL_SIGHANDLER): Likewise.
* sysdeps/unix/sysv/linux/alpha/sigcontextinfo.h
(SIGCONTEXT_EXTRA_ARGS): Likewise.
(GET_FRAME): Likewise.
(GET_STACK): Likewise.
(CALL_SIGHANDLER): Likewise.
* sysdeps/unix/sysv/linux/arm/sigcontextinfo.h
(SIGCONTEXT_EXTRA_ARGS): Likewise.
(GET_FRAME): Likewise.
(GET_STACK): Likewise.
(ADVANCE_STACK_FRAME): Likewise.
(CALL_SIGHANDLER): Likewise.
* sysdeps/unix/sysv/linux/i386/sigcontextinfo.h
(SIGCONTEXT_EXTRA_ARGS): Likewise.
(GET_FRAME): Likewise.
(GET_STACK): Likewise.
(CALL_SIGHANDLER): Likewise.
* sysdeps/unix/sysv/linux/ia64/sigcontextinfo.h
(SIGCONTEXT_EXTRA_ARGS): Likewise.
(GET_FRAME): Likewise.
(GET_STACK): Likewise.
(CALL_SIGHANDLER): Likewise.
* sysdeps/unix/sysv/linux/m68k/sigcontextinfo.h
(SIGCONTEXT_EXTRA_ARGS): Likewise.
(GET_FRAME): Likewise.
(GET_STACK): Likewise.
(CALL_SIGHANDLER): Likewise.
* sysdeps/unix/sysv/linux/microblaze/sigcontextinfo.h
(SIGCONTEXT_EXTRA_ARGS): Likewise.
(GET_FRAME): Likewise.
(GET_STACK): Likewise.
(CALL_SIGHANDLER): Likewise.
* sysdeps/unix/sysv/linux/mips/sigcontextinfo.h
(SIGCONTEXT_EXTRA_ARGS): Likewise.
(GET_FRAME): Likewise.
(GET_STACK): Likewise.
(CALL_SIGHANDLER): Likewise.
* sysdeps/unix/sysv/linux/powerpc/sigcontextinfo.h
(SIGCONTEXT_EXTRA_ARGS): Likewise.
(GET_FRAME): Likewise.
(GET_STACK): Likewise.
(CALL_SIGHANDLER): Likewise.
* sysdeps/unix/sysv/linux/riscv/sigcontextinfo.h
(SIGCONTEXT_EXTRA_ARGS): Likewise.
(GET_FRAME): Likewise.
(GET_STACK): Likewise.
(CALL_SIGHANDLER): Likewise.
* sysdeps/unix/sysv/linux/s390/sigcontextinfo.h
(SIGCONTEXT_EXTRA_ARGS): Likewise.
(GET_FRAME): Likewise.
(GET_STACK): Likewise.
(CALL_SIGHANDLER): Likewise.
* sysdeps/unix/sysv/linux/sh/sigcontextinfo.h
(SIGCONTEXT_EXTRA_ARGS): Likewise.
(GET_FRAME): Likewise.
(GET_STACK): Likewise.
(CALL_SIGHANDLER): Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc32/sigcontextinfo.h
(SIGCONTEXT_EXTRA_ARGS): Likewise.
(FIRST_FRAME_POINTER): Likewise.
(ADVANCE_STACK_FRAME): Likewise.
(GET_STACK): Likewise.
(GET_FRAME): Likewise.
(CALL_SIGHANDLER): Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/sigcontextinfo.h
(SIGCONTEXT_EXTRA_ARGS): Likewise.
(ADVANCE_STACK_FRAME): Likewise.
(GET_STACK): Likewise.
(GET_FRAME): Likewise.
(CALL_SIGHANDLER): Likewise.
* sysdeps/unix/sysv/linux/tile/sigcontextinfo.h
(SIGCONTEXT_EXTRA_ARGS): Likewise.
(GET_FRAME): Likewise.
(GET_STACK): Likewise.
(CALL_SIGHANDLER): Likewise.
* sysdeps/unix/sysv/linux/x86_64/sigcontextinfo.h
(SIGCONTEXT_EXTRA_ARGS): Likewise.
(GET_FRAME): Likewise.
(GET_STACK): Likewise.
(CALL_SIGHANDLER): Likewise.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch adds the narrowing subtract functions from TS 18661-1 to
glibc's libm: fsub, fsubl, dsubl, f32subf64, f32subf32x, f32xsubf64
for all configurations; f32subf64x, f32subf128, f64subf64x,
f64subf128, f32xsubf64x, f32xsubf128, f64xsubf128 for configurations
with _Float64x and _Float128; __nldbl_dsubl for ldbl-opt.
The changes are essentially the same as for the narrowing add
functions, so the description of those generally applies to this patch
as well.
Tested for x86_64, x86, mips64 (all three ABIs, both hard and soft
float) and powerpc, and with build-many-glibcs.py.
* math/Makefile (libm-narrow-fns): Add sub.
(libm-test-funcs-narrow): Likewise.
* math/Versions (GLIBC_2.28): Add narrowing subtract functions.
* math/bits/mathcalls-narrow.h (sub): Use __MATHCALL_NARROW.
* math/gen-auto-libm-tests.c (test_functions): Add sub.
* math/math-narrow.h (CHECK_NARROW_SUB): New macro.
(NARROW_SUB_ROUND_TO_ODD): Likewise.
(NARROW_SUB_TRIVIAL): Likewise.
* sysdeps/ieee754/float128/float128_private.h (__fsubl): New
macro.
(__dsubl): Likewise.
* sysdeps/ieee754/ldbl-opt/Makefile (libnldbl-calls): Add fsub and
dsub.
(CFLAGS-nldbl-dsub.c): New variable.
(CFLAGS-nldbl-fsub.c): Likewise.
* sysdeps/ieee754/ldbl-opt/Versions (GLIBC_2.28): Add
__nldbl_dsubl.
* sysdeps/ieee754/ldbl-opt/nldbl-compat.h (__nldbl_dsubl): New
prototype.
* manual/arith.texi (Misc FP Arithmetic): Document fsub, fsubl,
dsubl, fMsubfN, fMsubfNx, fMxsubfN and fMxsubfNx.
* math/auto-libm-test-in: Add tests of sub.
* math/auto-libm-test-out-narrow-sub: New generated file.
* math/libm-test-narrow-sub.inc: New file.
* sysdeps/i386/fpu/s_f32xsubf64.c: Likewise.
* sysdeps/ieee754/dbl-64/s_f32xsubf64.c: Likewise.
* sysdeps/ieee754/dbl-64/s_fsub.c: Likewise.
* sysdeps/ieee754/float128/s_f32subf128.c: Likewise.
* sysdeps/ieee754/float128/s_f64subf128.c: Likewise.
* sysdeps/ieee754/float128/s_f64xsubf128.c: Likewise.
* sysdeps/ieee754/ldbl-128/s_dsubl.c: Likewise.
* sysdeps/ieee754/ldbl-128/s_f64xsubf128.c: Likewise.
* sysdeps/ieee754/ldbl-128/s_fsubl.c: Likewise.
* sysdeps/ieee754/ldbl-128ibm/s_dsubl.c: Likewise.
* sysdeps/ieee754/ldbl-128ibm/s_fsubl.c: Likewise.
* sysdeps/ieee754/ldbl-96/s_dsubl.c: Likewise.
* sysdeps/ieee754/ldbl-96/s_fsubl.c: Likewise.
* sysdeps/ieee754/ldbl-opt/nldbl-dsub.c: Likewise.
* sysdeps/ieee754/ldbl-opt/nldbl-fsub.c: Likewise.
* sysdeps/ieee754/soft-fp/s_dsubl.c: Likewise.
* sysdeps/ieee754/soft-fp/s_fsub.c: Likewise.
* sysdeps/ieee754/soft-fp/s_fsubl.c: Likewise.
* sysdeps/powerpc/fpu/libm-test-ulps: Update.
* sysdeps/mach/hurd/i386/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/aarch64/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/alpha/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/arm/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/hppa/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/i386/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/ia64/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/microblaze/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips32/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/mips/mips64/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/nios2/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/libm-le.abilist: Likewise.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/sh/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/tile/tilegx32/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/tile/tilegx64/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/x86_64/64/libm.abilist: Likewise.
* sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist: Likewise.
|
|
|
|
|
|
| |
* sysdeps/unix/sysv/linux/x86_64/sysdep.h: Always include
<dl-sysdep.h>. Test for value of RTLD_PRIVATE_ERRNO instead of
testing whether it is defined.
|
|
|
|
|
|
|
|
|
|
|
| |
On Alpha, the register $at is, by default, reserved for use by the
assembler, in the expansion of pseudo-instructions. It's also used
by the special calling convention for _mcount. We get warnings from
Alpha clone.S because the code to call _mcount isn't properly marked
up to tell the assembler not to use $at itself.
* sysdeps/unix/sysv/linux/alpha/clone.s (__clone): Wrap manual
uses of $at in .set noat / .set at.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Since __libc_longjmp is a private interface for cancellation implementation
in libpthread, there is no need to provide hidden __libc_longjmp in libc.
Tested with build-many-glibcs.py.
* include/setjmp.h (__libc_longjmp): Remove libc_hidden_proto.
* setjmp/longjmp.c (__libc_longjmp): Remove libc_hidden_def.
* sysdeps/s390/longjmp.c (__libc_longjmp): Likewise.
* sysdeps/unix/sysv/linux/sparc/sparc64/longjmp.S (__libc_longjmp):
Likewise.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
On sparc32 tst-makecontext fails, as backtrace called within a context
created by makecontext to yield infinite backtrace.
Fix that the same way than nios2 by adding a nop just before
__startcontext. This is needed as otherwise FDE lookup just repeatedly
finds __setcontext's FDE in an infinite loop, due to the convention of
using 'address - 1' for FDE lookup.
Changelog:
[BZ #22919]
* sysdeps/unix/sysv/linux/sparc/sparc32/setcontext.S (__startcontext):
Add nop before __startcontext, add explaining comments.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Some SPE opcodes clashes with some recent PowerISA opcodes and
until recently gas did not complain about it. However binutils
recently changed it and now VLE configured gas does not support to
assembler some instruction that might class with VLE (HTM for
instance). It also does not help that glibc build hardware lock
elision support as default (regardless of assembler support).
Although runtime will not actually enables TLE on SPE hardware
(since kernel will not advertise it), I see little advantage on
adding HTM support on SPE built glibc. SPE uses an incompatible
ABI which does not allow share the same build with default
powerpc and HTM code slows down SPE without any benefict.
This patch fixes it by only building HTM when SPE configuration
is not used.
Checked with a powerpc-linux-gnuspe build. I also did some sniff
tests on a e500 hardware without any issue.
[BZ #22926]
* sysdeps/powerpc/powerpc32/sysdep.h (ABORT_TRANSACTION_IMPL): Define
empty for __SPE__.
* sysdeps/powerpc/sysdep.h (ABORT_TRANSACTION): Likewise.
* sysdeps/unix/sysv/linux/powerpc/elision-lock.c (__lll_lock_elision):
Do not build hardware transactional code for __SPE__.
* sysdeps/unix/sysv/linux/powerpc/elision-trylock.c
(__lll_trylock_elision): Likewise.
* sysdeps/unix/sysv/linux/powerpc/elision-unlock.c
(__lll_unlock_elision): Likewise.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch refactors the ARCH_FORK macro and the required architecture
specific header to simplify the required architecture definitions
to provide the fork syscall semantic and proper document current
Linux clone ABI variant.
Instead of require the reimplementation of arch-fork.h header, this
patch changes the ARCH_FORK to an inline function with clone ABI
defined by kernel-features.h define. The generic kernel ABI meant
for newer ports is used as default and redefine if the architecture
requires.
Checked on x86_64-linux-gnu and i686-linux-gnu. Also with a build
for all the afected ABIs.
* sysdeps/nptl/fork.c (ARCH_FORK): Replace by auch_fork.
* sysdeps/unix/sysv/linux/alpha/arch-fork.h: Remove file.
* sysdeps/unix/sysv/linux/riscv/arch-fork.h: Likewise.
* sysdeps/unix/sysv/linux/aarch64/arch-fork.h: Likewise.
* sysdeps/unix/sysv/linux/arm/arch-fork.h: Likewise.
* sysdeps/unix/sysv/linux/hppa/arch-fork.h: Likewise.
* sysdeps/unix/sysv/linux/i386/arch-fork.h: Likewise.
* sysdeps/unix/sysv/linux/ia64/arch-fork.h: Likewise.
* sysdeps/unix/sysv/linux/m68k/arch-fork.h: Likewise.
* sysdeps/unix/sysv/linux/microblaze/arch-fork.h: Likewise.
* sysdeps/unix/sysv/linux/mips/arch-fork.h: Likewise.
* sysdeps/unix/sysv/linux/nios2/arch-fork.h: Likewise.
* sysdeps/unix/sysv/linux/powerpc/arch-fork.h: Likewise.
* sysdeps/unix/sysv/linux/s390/arch-fork.h: Likewise.
* sysdeps/unix/sysv/linux/sh/arch-fork.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/arch-fork.h: Likewise.
* sysdeps/unix/sysv/linux/tile/arch-fork.h: Likewise.
* sysdeps/unix/sysv/linux/x86_64/arch-fork.h: Likewise.
* sysdeps/unix/sysv/linux/arch-fork.h (arch_fork): New function.
* sysdeps/unix/sysv/linux/aarch64/kernel-features.h: New file.
* sysdeps/unix/sysv/linux/riscv/kernel-features.h: Likewise.
* sysdeps/unix/sysv/linux/arm/kernel-features.h
(__ASSUME_CLONE_BACKWARDS): Define.
* sysdeps/unix/sysv/linux/createthread.c (ARCH_CLONE): Define to
__clone2 if __NR_clone2 is defined.
* sysdeps/unix/sysv/linux/hppa/kernel-features.h
(__ASSUME_CLONE_BACKWARDS): Likewise.
* sysdeps/unix/sysv/linux/i386/kernel-features.h
(__ASSUME_CLONE_BACKWARDS): Likewise.
* sysdeps/unix/sysv/linux/ia64/kernel-features.h
(__ASSUME_CLONE2): Likewise.
* sysdeps/unix/sysv/linux/microblaze/kernel-features.h
(__ASSUME_CLONE_BACKWARDS3): Likewise.
* sysdeps/unix/sysv/linux/kernel-features.h: Document possible clone
variants and the define architecture can use.
(__ASSUME_CLONE_DEFAULT): Define as default.
* sysdeps/unix/sysv/linux/mips/kernel-features.h
(__ASSUME_CLONE_BACKWARDS): Likewise.
* sysdeps/unix/sysv/linux/powerpc/kernel-features.h
(__ASSUME_CLONE_BACKWARDS): Likewise.
* sysdeps/unix/sysv/linux/s390/kernel-features.h
(__ASSUME_CLONE_BACKWARDS2): Likewise.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* io/futimens.c: Add missing start-of-file descriptive comment.
* io/utime.c: Likewise.
* misc/futimesat.c: Likewise.
* misc/utimes.c: Likewise.
* sysdeps/mach/hurd/futimesat.c: Likewise.
* sysdeps/mach/hurd/utimes.c: Likewise.
* sysdeps/posix/utime.c: Likewise.
* sysdeps/posix/utimes.c: Likewise.
* sysdeps/unix/sysv/linux/futimesat.c: Likewise.
* sysdeps/unix/sysv/linux/generic/futimesat.c: Likewise.
* sysdeps/unix/sysv/linux/generic/utimes.c: Likewise.
* sysdeps/unix/sysv/linux/utimes.c: Likewise.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* bits/sigaction.h: Add include guard.
* sysdeps/unix/sysv/linux/alpha/bits/sigaction.h: Likewise.
* sysdeps/unix/sysv/linux/bits/sigaction.h: Likewise.
* sysdeps/unix/sysv/linux/hppa/bits/sigaction.h: Likewise.
* sysdeps/unix/sysv/linux/ia64/bits/sigaction.h: Likewise.
* sysdeps/unix/sysv/linux/mips/bits/sigaction.h: Likewise.
* sysdeps/unix/sysv/linux/s390/bits/sigaction.h: Likewise.
* sysdeps/unix/sysv/linux/sparc/bits/sigaction.h: Likewise.
* sysdeps/unix/sysv/linux/tile/bits/sigaction.h: Likewise.
* hurd/hurd/signal.h: Include <bits/sigaction.h>.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch defines _DIRENT_MATCHES_DIRENT64 to either 0 or 1 and adjust its
usage from checking its definition to its value.
Checked on a build for major Linux abis.
* bits/dirent.h (__INO_T_MATCHES_INO64_T): Define regardless whether
__INO_T_MATCHES_INO64_T is defined.
* sysdeps/unix/sysv/linux/bits/dirent.h: Likewise.
* dirent/alphasort.c: Check _DIRENT_MATCHES_DIRENT64 value instead
of definition.
* dirent/alphasort64.c: Likewise.
* dirent/scandir.c: Likewise.
* dirent/scandir64-tail.c: Likewise.
* dirent/scandir64.c: Likewise.
* dirent/scandirat.c: Likewise.
* dirent/scandirat64.c: Likewise.
* dirent/versionsort.c: Likewise.
* dirent/versionsort64.c: Likewise.
* include/dirent.h: Likewise.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Now that send might be implemented calling sendto syscall on Linux,
I am seeing some issue in some kernel configurations where tst-cancel4
sendto do not block as expected.
The socket used to force the syscall blocking is used with default
system configuration for buffer sending size, which might not be
suffice to force blocking. This patch fixes it by explicit setting
buffer socket lower than the buffer size used. It also enables sendto
cancellation tests to work in both ways (since internally send is
implemented routing to sendto on Linux kernel).
The patch also removes unrequired make rules on some archictures
for send/recv. The generic nptl Makefile already set the compiler flags
required on some architectures for correct unwinding and libc object
are not strictly required to support unwind (since pthread_cancel
requires linking against libpthread).
Checked on aarch64-linux-gnu and x86_64-linux-gnu. I also did a
sniff test with tst-cancel{4,5} on a simulated mips64-linux-gnu.
* nptl/tst-cancel4-common.h (set_socket_buffer): New function.
* nptl/tst-cancel4-common.c (do_test): Call set_socket_buffer
for socketpair endpoint.
* nptl/tst-cancel4.c (tf_send): Call set_socket_buffer and use
WRITE_BUFFER_SIZE as buffer size for sending socket.
(tf_sendto): Use SOCK_STREAM instead of SOCK_DGRAM and fix an
issue on system where send is implemented with sendto syscall.
* sysdeps/unix/sysv/linux/mips/mips64/Makefile [$(subdir) = socket]
(CFLAGS-recv.c, CFLAGS-send.c): Remove rules.
[$(subdir) = nptl] (CFLAGS-recv.c, CFLAGS-send.c): Likewise.
* sysdeps/unix/sysv/linux/riscv/rv64/Makefile: Remove file.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch fixes the i386 sa_restorer field initialization for sigaction
syscall for kernel with vDSO. As described in bug report, i386 Linux
(and compat on x86_64) interprets SA_RESTORER clear with nonzero
sa_restorer as a request for stack switching if the SS segment is 'funny'.
This means that anything that tries to mix glibc's signal handling with
segmentation (for instance through modify_ldt syscall) is randomly broken
depending on what values lands in sa_restorer.
The testcase added is based on Linux test tools/testing/selftests/x86/ldt_gdt.c,
more specifically in do_multicpu_tests function. The main changes are:
- C11 atomics instead of plain access.
- Remove x86_64 support which simplifies the syscall handling and fallbacks.
- Replicate only the test required to trigger the issue.
Checked on i686-linux-gnu.
[BZ #21269]
* sysdeps/unix/sysv/linux/i386/Makefile (tests): Add tst-bz21269.
* sysdeps/unix/sysv/linux/i386/sigaction.c (SET_SA_RESTORER): Clear
sa_restorer for vDSO case.
* sysdeps/unix/sysv/linux/i386/tst-bz21269.c: New file.
|
|
|
|
|
|
|
|
|
|
|
| |
Tested with strace.
* sysdeps/unix/sysv/linux/powerpc/sys/ptrace.h (__ptrace_request): Add
PTRACE_GETREGS, PTRACE_SETREGS, PTRACE_GETFPREGS, PTRACE_SETFPREGS,
PTRACE_GETVRREGS, PTRACE_SETVRREGS, PTRACE_GETEVRREGS,
PTRACE_SETEVRREGS, PTRACE_GETREGS64, PTRACE_SETREGS64,
PTRACE_GET_DEBUGREG, PTRACE_SET_DEBUGREG, PTRACE_GETVSRREGS,
PTRACE_SETVSRREGS, and PTRACE_SINGLEBLOCK.
|
|
|
|
|
|
|
|
|
|
|
| |
Linux ptrace headers define macros whose tokens conflict with the
constants of enum __ptrace_request causing build errors when
asm/ptrace.h or linux/ptrace.h are included before sys/ptrace.h.
* sysdeps/unix/sysv/linux/powerpc/sys/ptrace.h: Undefine Linux
macros used in __ptrace_request.
Signed-off-by: Tulio Magno Quites Machado Filho <tuliom@linux.vnet.ibm.com>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Glibc build generates header files to define constants from special .sym
files. If a .sym file includes the same header file which it generates,
it leads to circular dependency which may lead to build hang on a
many-core machine. Define GEN_AS_CONST_HEADERS when generating header
files to avoid circular dependency.
<tcb-offsets.h> is needed for i686 and it isn't needed for x86-64 at
least since glibc 2.23.
Tested on i686 and x86-64.
[BZ #22792]
* Makerules ($(common-objpfx)%.h): Pass -DGEN_AS_CONST_HEADERS
to $(CC).
* sysdeps/unix/sysv/linux/i386/lowlevellock.h: Include
<tcb-offsets.h> only if GEN_AS_CONST_HEADERS isn't defined.
* sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Don't include
<tcb-offsets.h>.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch renames the nptl-signals.h header to internal-signals.h.
On Linux the definitions and functions are not only NPTL related, but
used for other POSIX definitions as well (for instance SIGTIMER for
posix times, SIGSETXID for id functions, and signal block/restore
helpers) and since generic functions will be places and used in generic
implementation it makes more sense to decouple it from NPTL.
Checked on x86_64-linux-gnu.
* sysdeps/nptl/nptl-signals.h: Move to ...
* sysdeps/generic/internal-signals.h: ... here. Adjust internal
comments.
* sysdeps/unix/sysv/linux/internal-signals.h: Add include guards.
(__nptl_is_internal_signal): Rename to __is_internal_signal.
(__nptl_clear_internal_signals): Rename to __clear_internal_signals.
* sysdeps/unix/sysv/linux/raise.c: Adjust nptl-signal.h to
include-signals.h rename.
* nptl/pthreadP.h: Likewise.
* sysdeps/unix/sysv/linux/spawni.c (__spawni_child): Call
__is_internal_signal instead of __nptl_is_internal_signal.
|