aboutsummaryrefslogtreecommitdiff
path: root/support
AgeCommit message (Collapse)AuthorFilesLines
13 daysadd ptmx support to test-containerDJ Delorie4-0/+67
2025-03-26support: Use unwinder in links-dso-program-c only with libgcc_sFlorian Weimer1-1/+1
Do not build links-dso-program-c with exception (unwinding) support if libgcc_s is not available. In this case, the unwinder may be part of libgcc.a or libgcc_eh.a, depending on how GCC was built. If the unwinder is in libgcc_eh.a only, linking links-dso-program-c failed before this change. After this change, the exception handling landing pad is only generated if libgcc_s available, avoiding an undefined _Unwind_Resume (or equivalent) symbol reference in the non-libgcc_s case. Fixes commit ffd36cc27407003a6f9efcb9c16370e3435c5b1d ("support: Use unwinder in links-dso-program-c only with libgcc_s") and commit 5dfbc3c43ecc1bcfc760a032c91bb002660051bc ("support: Link links-dso-program-c with libgcc_s only if available").
2025-03-21support: Link links-dso-program-c with libgcc_s only if availableFlorian Weimer1-1/+4
Add a configure check to detect bootstrapping builds that do not have libgcc_s. Fixes commit 3e2be87832781a29ed67f38f87c1ce3dd4c1b866 ("support: Link links-dso-program-c against libgcc_s"). Reviewed-by: Sam James <sam@gentoo.org>
2025-03-21support: Link links-dso-program-c against libgcc_sFlorian Weimer2-0/+22
If C++ support is not available, links-dso-program-c is used instead of the C++ version. The C version was not linked against libgcc_s, which meant that thread cancellation and the backtrace function did not work in containers tests in that situation. Reviewed-by: Sam James <sam@gentoo.org>
2025-02-24support: Add support_next_to_fault_before support functionFrédéric Bérat2-10/+39
Refactor the support_next_to_fault and add the support_next_to_fault_before method returns a buffer with a protected page before it, to be able to test buffer underflow accesses. Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@redhat.com>
2025-02-13nss: Improve network number parsers (bz 32573, 32575)Tobias Stoeckmann2-0/+4
Make sure that numbers never overflow uint32_t in inet_network to properly validate octets encountered in IPv4 addresses. Avoid malloca in NSS networks file code because /etc/networks lines can be arbitrarily long. Instead of handcrafting the input for inet_network by adding ".0" octets if they are missing, just left shift the result. Also, do not accept invalid entries, but ignore the line instead. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> Signed-off-by: Tobias Stoeckmann <tobias@stoeckmann.org>
2025-01-07tst-xdirent: Fix allocating dirent for readdir_r callSamuel Thibault1-4/+8
As documented in the glibc manual, “Some systems don’t define the d_name element sufficiently long”, and it provides an example of using a union to properly allocate the storage under the dirent.
2025-01-01Fix license typo induced by update-copyrighytPaul Eggert1-1/+1
2025-01-01Update copyright dates with scripts/update-copyrightsPaul Eggert269-269/+269
2024-12-23support: Add support_record_failure_barrierFlorian Weimer2-0/+13
This can be used to stop execution after a TEST_COMPARE_BLOB failure, for example.
2024-12-18tst-timespec.c: Explicitly cast TIME_T_MAX to doubleH.J. Lu1-1/+1
Explicitly cast TIME_T_MAX to double in tst-timespec.c to silence Clang error: tst-timespec.c:290:19: error: implicit conversion from 'time_t' (aka 'long') to 'double' changes value from 9223372036854775807 to 9223372036854775808 [-Werror,-Wimplicit-const-int-float-conversion] 287 | {.expected = {.tv_sec = 0, .tv_nsec = 1}, | ~ 288 | .observed = {.tv_sec = TIME_T_MAX / TIMESPEC_HZ, 289 | .tv_nsec = TIMESPEC_HZ - 1}, 290 | .upper_bound = TIME_T_MAX, .lower_bound = 1, .result = 1, | ^~~~~~~~~~ Signed-off-by: H.J. Lu <hjl.tools@gmail.com> Reviewed-by: Sam James <sam@gentoo.org>
2024-12-10malloc: add indirection for malloc(-like) functions in tests [BZ #32366]Sam James1-1/+1
GCC 15 introduces allocation dead code removal (DCE) for PR117370 in r15-5255-g7828dc070510f8. This breaks various glibc tests which want to assert various properties of the allocator without doing anything obviously useful with the allocated memory. Alexander Monakov rightly pointed out that we can and should do better than passing -fno-malloc-dce to paper over the problem. Not least because GCC 14 already does such DCE where there's no testing of malloc's return value against NULL, and LLVM has such optimisations too. Handle this by providing malloc (and friends) wrappers with a volatile function pointer to obscure that we're calling malloc (et. al) from the compiler. Reviewed-by: Paul Eggert <eggert@cs.ucla.edu>
2024-11-25Silence most -Wzero-as-null-pointer-constant diagnosticsAlejandro Colomar7-14/+14
Replace 0 by NULL and {0} by {}. Omit a few cases that aren't so trivial to fix. Link: <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=117059> Link: <https://software.codidact.com/posts/292718/292759#answer-292759> Signed-off-by: Alejandro Colomar <alx@kernel.org>
2024-11-12support: Add xdupSiddhesh Poyarekar3-0/+32
Add xdup as the error-checking version of dup for test cases. Signed-off-by: Siddhesh Poyarekar <siddhesh@sourceware.org> Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2024-10-16support: Make support_process_state_wait return the found stateAdhemerval Zanella3-8/+24
So caller can check which state was found if multiple ones are asked. Checked on x86_64-linux-gnu. Reviewed-by: Florian Weimer <fweimer@redhat.com>
2024-09-21support: Add valgrind instructions to <support/fuse.h>Florian Weimer1-2/+4
Replacing an outdated comment (namespace setup is now handled by support_fuse_init).
2024-09-21support: Fix memory leaks in FUSE testsFlorian Weimer2-0/+2
The internal read buffer (used by all FUSE tests) was not freed. The support/tst-support_fuse test missed a deallocation.
2024-09-12support: Fix Hurd build of tst-support_readdirFlorian Weimer1-4/+7
Check for the availability of the d_off member at compile time, not run time. Fixes commit 1251e9ea49fba9f53bbf4f290f3db90c01931fa7 ("support: Add <support/readdir.h>").
2024-09-12support: Add <support/readdir.h>Florian Weimer4-0/+475
It allows to read directories using the six readdir variants without writing type-specific code or using skeleton files that are compiled four times. The readdir_r subtest for support_readdir_expect_error revealed bug 32124. Reviewed-by: DJ Delorie <dj@redhat.com>
2024-09-05support: Add FUSE-based file system test framework to support/Florian Weimer4-0/+1270
This allows to monitor the exact file system operations performed by glibc and inject errors. Hurd does not have <sys/mount.h>. To get the sources to compile at least, the same approach as in support/test-container.c is used. Reviewed-by: DJ Delorie <dj@redhat.com>
2024-09-05support: Add <support/xdirent.h>Florian Weimer8-0/+321
Use static functions for readdir/readdir_r, so that -D_FILE_OFFSET_BITS=64 does not improperly redirect calls to the wrong implementation. Reviewed-by: DJ Delorie <dj@redhat.com>
2024-09-05Bundle <linux/fuse.h> userspace header from Linux 6.10Florian Weimer5-0/+1597
And include the required licensing information. The only change is a removed trailing empty line in LICENSES/exceptions/Linux-syscall-note. Bundling <linux/fuse.h> is the recommended way to deal with the evolution of the FUSE userspace interface because structs change sizes over time. The kernel maintains compatibility, but source-level compatibility on recompilation may require additional code that is aware of older struct sizes. Signed-off-by: Florian Weimer <fweimer@redhat.com> Reviewed-by: DJ Delorie <dj@redhat.com>
2024-09-03Add support/ code for checking file contentsJoseph Myers6-0/+202
For use in freopen tests, add various support/ helper interfaces for use in checking file contents. Tested for x86_64.
2024-08-26support: Report errno constants in TEST_COMPARE failuresFlorian Weimer1-1/+10
If the expression is errno, decode it as an errno constant using strerrorname_np. Reviewed-by: Arjun Shankar <arjun@redhat.com>
2024-08-16support: Use macros for *stat wrappersFlorian Weimer8-159/+25
Macros will automatically use the correct types, without having to fiddle with internal glibc macros. It's also impossible to get the types wrong due to aliasing because support_check_stat_fd and support_check_stat_path do not depend on the struct stat* types. The changes reveal some inconsistencies in tests. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2024-08-16support: Add the xstatx functionFlorian Weimer3-0/+35
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2024-08-16support: Include <string.h> for strcmp in support_format_addrinfo.cFlorian Weimer1-0/+1
This is currently implied by the internal headers, but it makes sense not to rely on this. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2024-08-16support: Remove #include <config.h>Florian Weimer2-2/+0
This is not needed: include/intprops.h has its own detection logic. It makes building these files outside of glibc easer. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2024-08-09support: Add options list terminator to the test driverFlorian Weimer1-0/+1
This avoids crashes if a test is passed unknown options. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2024-07-26support: Add FAIL test failure helperMaciej W. Rozycki1-0/+5
Add a FAIL test failure helper analogous to FAIL_RET, that does not cause the current function to return, providing a standardized way to report a test failure with a message supplied while permitting the caller to continue executing, for further reporting, cleaning up, etc. Update existing test cases that provide a conflicting definition of FAIL by removing the local FAIL definition and then as follows: - tst-fortify-syslog: provide a meaningful message in addition to the file name already added by <support/check.h>; 'support_record_failure' is already called by 'support_print_failure_impl' invoked by the new FAIL test failure helper. - tst-ctype: no update to FAIL calls required, with the name of the file and the line number within of the failure site additionally included by the new FAIL test failure helper, and error counting plus count reporting upon test program termination also already provided by 'support_record_failure' and 'support_report_failure' respectively, called by 'support_print_failure_impl' and 'adjust_exit_status' also respectively. However in a number of places 'printf' is called and the error count adjusted by hand, so update these places to make use of FAIL instead. And last but not least adjust the final summary just to report completion, with any error count following as reported by the test driver. - test-tgmath2: no update to FAIL calls required, with the name of the file of the failure site additionally included by the new FAIL test failure helper. Also there is no need to track the return status by hand as any call to FAIL will eventually cause the test case to return an unsuccesful exit status regardless of the return status from the test function, via a call to 'adjust_exit_status' made by the test driver. Reviewed-by: DJ Delorie <dj@redhat.com>
2024-06-17support: Include <limits.h> for NAME_MAX use in temp_file.cFlorian Weimer1-0/+1
2024-06-17support: Include <stdlib.h> for atoi use in support_wait_for_thread_exitFlorian Weimer1-0/+1
2024-06-05support: Fix typo in xgetsockname error messageAvinal Kumar1-1/+2
The error message in xgetsockname was incorrectly referring to a different function. This commit fixes that. Suggested-by: Arjun Shankar <arjun@redhat.com> Signed-off-by: Avinal Kumar <avinal.xlvii@gmail.com> Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2024-05-07support: Add envp argument to support_capture_subprogramAdhemerval Zanella5-12/+16
So tests can specify a list of environment variables. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
2024-04-10libsupport: Add xgetpeernameSergey Kolosov3-0/+32
The patch adds redirections for getpeername. Reviewed-by: Arjun Shankar <arjun@redhat.com>
2024-04-02Always define __USE_TIME_BITS64 when 64 bit time_t is usedAdhemerval Zanella3-3/+3
It was raised on libc-help [1] that some Linux kernel interfaces expect the libc to define __USE_TIME_BITS64 to indicate the time_t size for the kABI. Different than defined by the initial y2038 design document [2], the __USE_TIME_BITS64 is only defined for ABIs that support more than one time_t size (by defining the _TIME_BITS for each module). The 64 bit time_t redirects are now enabled using a different internal define (__USE_TIME64_REDIRECTS). There is no expected change in semantic or code generation. Checked on x86_64-linux-gnu, i686-linux-gnu, aarch64-linux-gnu, and arm-linux-gnueabi [1] https://sourceware.org/pipermail/libc-help/2024-January/006557.html [2] https://sourceware.org/glibc/wiki/Y2038ProofnessDesign Reviewed-by: DJ Delorie <dj@redhat.com>
2024-02-23tests: gracefully handle AppArmor userns containmentSimon Chopin1-2/+5
Recent AppArmor containment allows restricting unprivileged user namespaces, which is enabled by default on recent Ubuntu systems. When this happens, as is common with Linux Security Modules, the syscall will fail with -EACCESS. When that happens, the affected tests will now be considered unsupported rather than simply failing. Further information: * https://gitlab.com/apparmor/apparmor/-/wikis/unprivileged_userns_restriction * https://ubuntu.com/blog/ubuntu-23-10-restricted-unprivileged-user-namespaces * https://manpages.ubuntu.com/manpages/jammy/man5/apparmor.d.5.html (for the return code) V2: * Fix duplicated line in check_unshare_hints * Also handle similar failure in tst-pidfd_getpid V3: * Comment formatting * Aded some more documentation on syscall return value Signed-off-by: Simon Chopin <simon.chopin@canonical.com>
2024-01-08Remove ia64-linux-gnuAdhemerval Zanella1-9/+2
Linux 6.7 removed ia64 from the official tree [1], following the general principle that a glibc port needs upstream support for the architecture in all the components it depends on (binutils, GCC, and the Linux kernel). Apart from the removal of sysdeps/ia64 and sysdeps/unix/sysv/linux/ia64, there are updates to various comments referencing ia64 for which removal of those references seemed appropriate. The configuration is removed from README and build-many-glibcs.py. The CONTRIBUTED-BY, elf/elf.h, manual/contrib.texi (the porting mention), *.po files, config.guess, and longlong.h are not changed. For Linux it allows cleanup some clone2 support on multiple files. The following bug can be closed as WONTFIX: BZ 22634 [2], BZ 14250 [3], BZ 21634 [4], BZ 10163 [5], BZ 16401 [6], and BZ 11585 [7]. [1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=43ff221426d33db909f7159fdf620c3b052e2d1c [2] https://sourceware.org/bugzilla/show_bug.cgi?id=22634 [3] https://sourceware.org/bugzilla/show_bug.cgi?id=14250 [4] https://sourceware.org/bugzilla/show_bug.cgi?id=21634 [5] https://sourceware.org/bugzilla/show_bug.cgi?id=10163 [6] https://sourceware.org/bugzilla/show_bug.cgi?id=16401 [7] https://sourceware.org/bugzilla/show_bug.cgi?id=11585 Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2024-01-01Update copyright dates with scripts/update-copyrightsPaul Eggert252-252/+252
2023-11-07support: Add support_set_vma_nameAdhemerval Zanella3-0/+54
Check if kernel supports prctl (PR_SET_VMA, PR_SET_VMA_ANON_NAME, ...). Reviewed-by: DJ Delorie <dj@redhat.com>
2023-10-16Fix WAIT_FOR_DEBUGGER for container tests.Stefan Liebler1-8/+6
For container tests, gdb needs to set the sysroot to the corresponding testroot.root directory. The assumption was that PIDs < 3 means that we are running within a container. Starting with commit 2fe64148a81f0d78050c302f34a6853d21f7cae4 "Allow for unpriviledged nested containers", the default is to use the PID namespace of the parent. Thus support_test_main.c does not recognize our container anymore. This patch now assumes that we are running inside a container if test-container.c has set PID_OUTSIDE_CONTAINER and always uses this PID independent of having a new PID namespace or not. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2023-09-28test-container: Use nftw instead of rm -rfAdhemerval Zanella1-23/+11
If the binary to run is 'env', test-containers skips it and adds any required environment variable on the process envs variables. This simplifies the required code to spawn new process (no need to build an env-like program). However, this is an issue for recursive_remove if there is any LD_PRELOAD, since test-container will not prepend the loader command along with required paths. If the required preloaded library can not be loaded by the system glibc, the 'post-clean rsync' will eventually fail. One example is if system glibc does not support DT_RELR and the built glibc does, the nss/tst-nss-gai-hv2-canonname test fails with: ../scripts/evaluate-test.sh nss/tst-nss-gai-hv2-canonname $? false false 86_64-linux-gnu/nss/tst-nss-gai-hv2-canonname.test-result rm: /lib/x86_64-linux-gnu/libc.so.6: version `GLIBC_ABI_DT_RELR' not found (required by x86_64-linux-gnu/malloc/libc_malloc_debug.so) Instead trying to figure out the required loader arguments on how to spawn the 'rm -rf', replace the command with a nftw call. Checked on x86_64-linux-gnu. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org> Reviewed-by: Stefan Liebler <stli@linux.ibm.com>
2023-07-01support: Build with exceptions and asynchronous unwind tables [BZ #30587]John David Anglin1-0/+3
Changing tst-cleanup4.c to use xread instead of read caused the nptl/tst-cleanupx4 test to fail. The routines in libsupport.a need to be built with exception handling and asynchronous unwind table support. v2: Use "CFLAGS-.oS" instead of "override CFLAGS".
2023-06-19tests: replace system by xsystemFrédéric Bérat3-0/+69
With fortification enabled, system calls return result needs to be checked, has it gets the __wur macro enabled. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
2023-06-19tests: replace read by xreadFrédéric Bérat4-1/+42
With fortification enabled, read calls return result needs to be checked, has it gets the __wur macro enabled. Note on read call removal from sysdeps/pthread/tst-cancel20.c and sysdeps/pthread/tst-cancel21.c: It is assumed that this second read call was there to overcome the race condition between pipe closure and thread cancellation that could happen in the original code. Since this race condition got fixed by d0e3ffb7a58854248f1d5e737610d50cd0a60f46 the second call seems superfluous. Hence, instead of checking for the return value of read, it looks reasonable to simply remove it. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
2023-06-13tests: replace fgets by xfgetsFrederic Berat3-0/+34
With fortification enabled, fgets calls return result needs to be checked, has it gets the __wur macro enabled. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
2023-06-13tests: replace fread by xfreadFrederic Berat3-0/+41
With fortification enabled, fread calls return result needs to be checked, has it gets the __wur macro enabled. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
2023-06-06support: Add delayed__exit (with two underscores)Florian Weimer2-11/+39
It calls _exit instead of exit once the timeout expires.
2023-06-02Fix all the remaining misspellings -- BZ 25337Paul Pluzhnikov10-26/+26
2023-06-01tests: fix warn unused resultsFrédéric Bérat1-2/+2
With fortification enabled, few function calls return result need to be checked, has they get the __wur macro enabled. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>