aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2020-11-25nptl: Replace lll_futex_supported_clockid with futex-internal.hAdhemerval Zanella1-1/+1
The idea is to make NPTL implementation to use on the functions provided by futex-internal.h. Checked on x86_64-linux-gnu and i686-linux-gnu. Reviewed-by: Lukasz Majewski <lukma@denx.de>
2020-11-25nptl: Replace lll_futex_{timed_}wait by futex-internal.hAdhemerval Zanella4-12/+14
The idea is to make NPTL implementation to use on the functions provided by futex-internal.h. Checked on x86_64-linux-gnu and i686-linux-gnu. Reviewed-by: Lukasz Majewski <lukma@denx.de>
2020-11-25nptl: Replace lll_timedwait with __futex_abstimed_wait64Adhemerval Zanella4-97/+2
Checked with x86_64-linux-gnu and i686-linux-gnu. Reviewed-by: Lukasz Majewski <lukma@denx.de>
2020-11-25nptl: Replace __futex_clocklock_wait64 with __futex_abstimed_wait64Adhemerval Zanella3-63/+5
For non null timeouts, the __futex_clocklock_wait64 creates an a relative timeout by subtracting the current time from the input argument. The same behavior can be obtained with FUTEX_WAIT_BITSET without the need to calculate the relative timeout. Besides consolidate the code it also avoid the possible relative timeout issues [1]. The __futex_abstimed_wait64 needs also to return EINVAL syscall errors. Checked on x86_64-linux-gnu and i686-linux-gnu. [1] https://sourceware.org/pipermail/libc-alpha/2020-November/119881.html Reviewed-by: Lukasz Majewski <lukma@denx.de>
2020-11-25nptl: Remove _futex_clock_wait_bitset64Adhemerval Zanella3-54/+4
It can be replaced with a __futex_abstimed_wait64 call. Checked on x86_64-linux-gnu and i686-linux-gnu. Reviewed-by: Lukasz Majewski <lukma@denx.de>
2020-11-25nptl: Consolidate __futex_abstimed_wait_{cancelable}64Adhemerval Zanella1-76/+35
The only different is how to issue the syscall. Checked on x86_64-linux-gnu and i686-linux-gnu. Reviewed-by: Lukasz Majewski <lukma@denx.de>
2020-11-25nptl: Extend __futex_abstimed_wait_cancelable64 commentAdhemerval Zanella2-9/+13
And add a small optimization to avoid setting the operation for the 32-bit time fallback operation. Checked on x86_64-linux-gnu and i686-linux-gnu. Reviewed-by: Lukasz Majewski <lukma@denx.de>
2020-11-25nptl: Remove clockwait_tidAdhemerval Zanella2-107/+18
It can be replaced with a __futex_abstimed_wait_cancelable64 call, with the advantage that there is no need to further clock adjustments to create a absolute timeout. It allows to remove the now ununsed futex_timed_wait_cancel64 internal function. Checked on x86_64-linux-gnu and i686-linux-gnu. Reviewed-by: Lukasz Majewski <lukma@denx.de>
2020-11-25nptl: Remove futex_wait_cancelableAdhemerval Zanella2-49/+2
It is used solely on __pthread_cond_wait_common and the call can be replaced by a __futex_abstimed_wait_cancelable64 one. Checked on x86_64-linux-gnu and i686-linux-gnu. Reviewed-by: Lukasz Majewski <lukma@denx.de>
2020-11-25nptl: Remove unused internal futex functionsAdhemerval Zanella2-100/+1
The __futex_abstimed_wait usage was remove with 3102e28bd11 and the __futex_abstimed_wait_cancelable by 323592fdc92 and b8d3e8fbaac. The futex_lock_pi can be replaced by a futex_lock_pi64. Checked on x86_64-linux-gnu and i686-linux-gnu. Reviewed-by: Lukasz Majewski <lukma@denx.de>
2020-11-25Mark mtrace tests UNSUPPORTED if bug-ga2.mtrace or tst-leaks2.mtrace are missingStefan Liebler2-2/+6
Starting with commit 29fddfc7dfd6444fa61a256e9a0d0127545e1f2e, the tests posix/bug-ga2 and resolv/tst-leaks2 are test-container tests. If test-container.c returns with EXIT_UNSUPPORTED, the tests with mtrace() are not executed and the mtrace files do not exist. Therefore the "mtrace-analysis-part" of those tests are marked UNSUPPORTED if the mtrace files are missing. Reported-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com> Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
2020-11-24elf: Fix uninitialized variable for _dl_writeShuo Wang1-1/+1
Variable ret in elf/dl-write.c is uninitialized, which should get return value from __writev.
2020-11-24powerpc: Make PT_THREAD_POINTER available to assembly codeMatheus Castanho1-10/+16
PT_THREAD_POINTER is currenty defined inside a #ifndef __ASSEMBLER__ block, but its usage should not be limited to C code, as it can be useful when accessing the TLS from assembly code as well. Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
2020-11-23Use libnss_files.so for tests posix/bug-ga2 and resolv/tst-leaks2 [BZ #26821]Stefan Liebler9-15/+23
The tests posix/bug-ga2-mem and resolv/mtrace-tst-leaks2 are failing on fedora 33 as mtrace reports memory leaks. The /etc/nsswitch.conf differs between Fedora 32: hosts: files dns myhostname Fedora 33: hosts: files resolve [!UNAVAIL=return] myhostname dns Therefore /lib64/libnss_resolve.so.2 (from systemd) and the dependencies libgcc_s.so.1 and libpthread.so.0 are loaded. Usually all malloc'ed resources from getaddrinfo / gethostbyname are freed and the libraries are dlclose'd in nss/nsswitch.c:libc_freeres_fn (free_mem). Unfortunately, /lib64/libnss_resolve.so.2 is marked with DF_1_NODELETE. As this library is not unmapped, you'll see "Memory not freed". Therefore those tests are now only relying on libnss_files.so by making them test-container tests and providing the required configuration files. By moving the tests to tests-container, those are now running with "make check". Therefore the mtrace part of the tests are also moved from "make xcheck" to "make check". bug-ga2.c is now using test-driver.c in order to support WAIT_FOR_DEBUGGER environment variable.
2020-11-23hurd report-wait: Fix stpcpy usageSamuel Thibault1-29/+49
We shall not overflow the size of the description parameter. This makes describe_number and describe_port behave like strpcpy (except for not filling all the end of buffer with zeroes) and _S_msg_report_wait use series of stpncpy-like call. If we were to overflow, we can now detect it and return ENOMEM.
2020-11-23hurd S_msg_report_wait: Fix detecting fd portsSamuel Thibault1-1/+1
_hurd_init_dtable stays set to non-NULL, so we have to run through both _hurd_init_dtable and _hurd_dtable.
2020-11-23hurd S_msg_report_wait: Fix reporting portsSamuel Thibault1-1/+1
This fixes the parameter order of MSG_EXAMINE, thus fixing the detection of e.g. fd ports for nicer output in ps WAIT output.
2020-11-22hurd: Fix strcpy callsSamuel Thibault1-3/+4
strcpy cannot be used with overlapping buffer, we have to use memmove instead. strcpy also cannot be safely used when the destination buffer is smaller that the source, we need to use strncpy to truncate the source if needed.
2020-11-22hurd: Fix _S_msg_get/set_env_variable prototypeSamuel Thibault1-3/+3
_S_msg_get_env_variable and _S_msg_set_env_variable are taking string_t, not char *. Fixes a warning with gcc 11.
2020-11-16hurd: Enable using ifuncSamuel Thibault2-6/+0
Bugs have been fixed in binutils/gcc/glibc.
2020-11-16Add {,sysdep-}ld-library-path make variableSamuel Thibault6-5/+10
On GNU/Hurd we not only need $(common-objpfx) in LD_LIBRARY_PATH when loading dynamic objects, but also $(common-objpfx)/mach and $(common-objpfx)/hurd. This adds an ld-library-path variable to be used as LD_LIBRARY_PATH basis in Makefiles, and a sysdep-ld-library-path variable for sysdeps to add some more paths, here mach/ and hurd/.
2020-11-16nptl: Move stack list variables into _rtld_globalFlorian Weimer37-184/+243
Now __thread_gscope_wait (the function behind THREAD_GSCOPE_WAIT, formerly __wait_lookup_done) can be implemented directly in ld.so, eliminating the unprotected GL (dl_wait_lookup_done) function pointer. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2020-11-15hurd: let _dl_argv and __libc_stack_end be relroSamuel Thibault1-7/+0
libpthread does not switch stacks.
2020-11-15hurd: Remove some remnants of cthreadsSamuel Thibault27-80/+77
Libc has actually been using mach's lock-internal.h mutex for a long time already.
2020-11-14nanosleep: Pass NULL when rem == NULL on ports with __TIMESIZE != 64Lukasz Majewski2-2/+3
On ports with __TIMESIZE != 64 the remaining time argument always receives pointer to struct __timespec64 instance. This is the different behavior when compared to 64 bit versions of clock_nanosleep and nanosleep functions, which receive NULL. To avoid any potential issues, we also pass NULL when *rem pointer is NULL. Reported-by: Andreas Schwab <schwab@suse.de> Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
2020-11-14y2038: Convert thrd_sleep to support 64 bit timeLukasz Majewski2-0/+60
The thrd_sleep function has been converted to support 64 bit time. It was also necessary to provide Linux specific copy of it to avoid problems on i686-gnu (i.e. HURD) port, which is not providing clock_nanosleep() supporting 64 bit time. The thrd_sleep is a wrapper on POSIX threads to provide C11 standard threads interface. It directly calls __clock_nanosleep64(). Build tests: ./src/scripts/build-many-glibcs.py glibcs Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
2020-11-14y2038: Convert mtx_timedlock to support 64 bit timeLukasz Majewski2-0/+47
The mtx_timedlock function has been converted to support 64 bit time. It was also necessary to provide Linux specific copy of it to avoid problems on i686-gnu (i.e. HURD) port, which is not providing pthread_mutex_timedlock() supporting 64 bit time. The mtx_timedlock is a wrapper on POSIX threads to provide C11 standard threads interface. It directly calls __pthread_mutex_timedlock64(). Build tests: ./src/scripts/build-many-glibcs.py glibcs Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
2020-11-14y2038: Convert cnd_timedwait to support 64 bit timeLukasz Majewski2-0/+71
The cnd_timedwait function has been converted to support 64 bit time. It was also necessary to provide Linux specific copy of it to avoid problems on i686-gnu (i.e. HURD) port, which is not providing pthread_cond_timedwait() supporting 64 bit time. Moreover, a linux specific copy of thrd_priv.h header file has been added as well. The cnd_timedwait is a wrapper on POSIX threads to provide C11 standard threads interface. It directly calls __pthread_cond_timedwait64(). Build tests: ./src/scripts/build-many-glibcs.py glibcs Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
2020-11-14hurd: Drop CLOCK_MONOTONIC change which slipped inSamuel Thibault1-1/+0
2020-11-14hurd: make ptsname fail with ENOTTY on non-master-ptySamuel Thibault1-0/+8
2020-11-14mach: Add missing assert.h includeSamuel Thibault1-0/+2
2020-11-14hurd: break relocation loop between libc.so and lib{mach,hurd}user.soSamuel Thibault5-15/+44
See https://sourceware.org/pipermail/libc-alpha/2020-November/119575.html lib{mach,hurd}user.so gets relocated before libc.so, but its references to strpcpy and memcpy would need an ifunc decision, which e.g. on x86 relies on cpu_features, but libc.so's _rtld_global_ro is not relocated yet. We can however just make lib{mach,hurd}user.so only call non-ifunc functions, which can be relocated before libc.so is relocated.
2020-11-13Remove obsolete defines for HPUX support from fcntl.h and update O_NONBLOCK.John David Anglin1-4/+1
2020-11-13Remove tls.h inclusion from internal errno.hAdhemerval Zanella71-70/+83
The tls.h inclusion is not really required and limits possible definition on more arch specific headers. This is a cleanup to allow inline functions on sysdep.h, more specifically on i386 and ia64 which requires to access some tls definitions its own. No semantic changes expected, checked with a build against all affected ABIs.
2020-11-13nptl: Eliminate <smp.h> and __is_smpFlorian Weimer9-121/+20
Most systems are SMP, so optimizing for the UP case is no longer approriate. A dynamic check based on the kernel identification has been only implemented for i386 anyway. To disable adaptive mutexes on sh, define DEFAULT_ADAPTIVE_COUNT as zero for this architecture. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2020-11-13powerpc: Eliminate UP macro conditionalsFlorian Weimer3-14/+5
The macro is never defined. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2020-11-13x86: Remove UP macro. Define LOCK_PREFIX unconditionally.Florian Weimer5-35/+5
The UP macro is never defined. Also define LOCK_PREFIX unconditionally, to the same string. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2020-11-13alpha: Remove UP preprocessor conditionalsFlorian Weimer1-10/+4
The macro is never defined. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2020-11-13hurd: Make sure signals get startedSamuel Thibault1-3/+3
Now that _hurd_libc_proc_init is idempotent, we can always call it, independently of the __libc_multiple_libcs test which may not match whether signals should be started or not.
2020-11-13hurd: initialize libpthread before starting the signal threadSamuel Thibault1-0/+6
We cannot rely on csu calling __pthread_initialize_minimal before posixland_init, in some cases _init gets called before that.
2020-11-13hurd: Make _hurd_libc_proc_init idempotentSamuel Thibault1-11/+19
For the cases where _init is getting called several times during startup. Better clean pointers anyway.
2020-11-12powerpc: Add optimized stpncpy for POWER9Raphael M Zinsly6-2/+135
Add stpncpy support into the POWER9 strncpy. Reviewed-by: Matheus Castanho <msc@linux.ibm.com> Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
2020-11-12powerpc: Add optimized strncpy for POWER9Raphael M Zinsly5-1/+391
Similar to the strcpy P9 optimization, this version uses VSX to improve performance. Reviewed-by: Matheus Castanho <msc@linux.ibm.com> Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
2020-11-12Don't use nested function in test-ffsSiddhesh Poyarekar1-22/+14
There is no real need to use a nested function in that test, so break it out so that it can build with clang too.
2020-11-12Use __builtin___stpncpy_chk when availableSiddhesh Poyarekar1-1/+8
The builtin has been available in gcc since 4.7.0 and in clang since 2.6. This fixes stpncpy fortification with clang since it does a better job of plugging in __stpncpy_chk in the right place than the header hackery. This has been tested by building and running all tests with gcc 10.2.1 and also with clang tip as of a few days ago (just the tests in debug/ since running all tests don't work with clang at the moment) to make sure that both compilers pass the stpncpy tests.
2020-11-12tests: Remove NULL check for an arraySiddhesh Poyarekar4-8/+0
The NULL check for an array on stack is pointless since it will always be false, so drop it.
2020-11-11hurd: Move {,f,l}xstat{,at} and xmknod{at} to compat symbolsSamuel Thibault26-219/+510
We do not actually need them, so we can move their implementations into the standard {,f,l}stat{,at} variants and only keep compatibility wrappers.
2020-11-11hurd: Notify the proc server later during initializationSamuel Thibault3-11/+31
Notifying the proc server is an involved task, and unleashes various signal handling etc. so we have to do this after e.g. ifunc relocations are completed.
2020-11-11htl: Initialize laterSamuel Thibault9-122/+32
Since htl does not actually need a stack switch, we can initialize it like nptl is, avoiding all sorts of startup issues with ifunc. More precisely, htl defines __pthread_initialize_minimal instead of the elder _cthread_init_routine. We can then drop the stack switching dances.
2020-11-11htl: Keep thread signals blocked during its initializationSamuel Thibault2-2/+13
One may send signals immediately after creating a thread. We need to block them until the thread is ready to run signal handlers.