glibc/support
Chung-Lin Tang e6fd79f379 elf: Testing infrastructure for ld.so DSO sorting (BZ #17645)
This is the first of a 2-part patch set that fixes slow DSO sorting behavior in
the dynamic loader, as reported in BZ #17645. In order to facilitate such a
large modification to the dynamic loader, this first patch implements a testing
framework for validating shared object sorting behavior, to enable comparison
between old/new sorting algorithms, and any later enhancements.

This testing infrastructure consists of a Python script
scripts/dso-ordering-test.py' which takes in a description language, consisting
of strings that describe a set of link dependency relations between DSOs, and
generates testcase programs and Makefile fragments to automatically test the
described situation, for example:

  a->b->c->d          # four objects linked one after another

  a->[bc]->d;b->c     # a depends on b and c, which both depend on d,
                      # b depends on c (b,c linked to object a in fixed order)

  a->b->c;{+a;%a;-a}  # a, b, c serially dependent, main program uses
                      # dlopen/dlsym/dlclose on object a

  a->b->c;{}!->[abc]  # a, b, c serially dependent; multiple tests generated
                      # to test all permutations of a, b, c ordering linked
                      # to main program

 (Above is just a short description of what the script can do, more
  documentation is in the script comments.)

Two files containing several new tests, elf/dso-sort-tests-[12].def are added,
including test scenarios for BZ #15311 and Redhat issue #1162810 [1].

Due to the nature of dynamic loader tests, where the sorting behavior and test
output occurs before/after main(), generating testcases to use
support/test-driver.c does not suffice to control meaningful timeout for ld.so.
Therefore a new utility program 'support/test-run-command', based on
test-driver.c/support_test_main.c has been added. This does the same testcase
control, but for a program specified through a command-line rather than at the
source code level. This utility is used to run the dynamic loader testcases
generated by dso-ordering-test.py.

[1] https://bugzilla.redhat.com/show_bug.cgi?id=1162810

Signed-off-by: Chung-Lin Tang  <cltang@codesourcery.com>
Reviewed-by: Adhemerval Zanella  <adhemerval.zanella@linaro.org>
2021-10-21 11:23:53 -03:00
..
blob_repeat.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
blob_repeat.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
capture_subprocess.h support: Add capability to fork an sgid child 2021-04-12 19:03:19 +05:30
check_addrinfo.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
check_dns_packet.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
check_hostent.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
check_netent.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
check_nss.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
check.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
check.h Add TEST_COMPARE_STRING_WIDE to support/check.h 2021-10-12 13:48:39 +00:00
delayed_exit.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
Depend elf: Testing infrastructure for ld.so DSO sorting (BZ #17645) 2021-10-21 11:23:53 -03:00
descriptors.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
echo-container.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
format_nss.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
ignore_stderr.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
links-dso-program-c.c nss_db: fix endent wrt NULL mappings [BZ #24695] [BZ #24696] 2019-07-10 14:51:18 -04:00
links-dso-program.cc nss_db: fix endent wrt NULL mappings [BZ #24695] [BZ #24696] 2019-07-10 14:51:18 -04:00
Makefile elf: Testing infrastructure for ld.so DSO sorting (BZ #17645) 2021-10-21 11:23:53 -03:00
namespace.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
next_to_fault.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
next_to_fault.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
oom_error.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
process_state.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
README support: Add timespec.h 2019-05-09 14:33:53 -03:00
README-testing.c support: Introduce new subdirectory for test infrastructure 2016-12-09 08:18:27 +01:00
resolv_response_context_duplicate.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
resolv_response_context_free.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
resolv_test.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
resolv_test.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
run_diff.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
set_fortify_handler.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
shell-container.c support: Close fds in copy_func 2021-05-13 08:07:20 +05:30
subprocess.h support: Add capability to fork an sgid child 2021-04-12 19:03:19 +05:30
support_become_root.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
support_can_chroot.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
support_capture_subprocess_check.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
support_capture_subprocess.c copy_and_spawn_sgid: Avoid double calls to close() 2021-08-03 21:10:53 +05:30
support_chroot.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
support_copy_file_range.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
support_copy_file.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
support_create_timer.c support: Add support_create_timer 2021-06-22 12:09:52 -03:00
support_descriptor_supports_holes.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
support_descriptors.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
support_enter_mount_namespace.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
support_enter_network_namespace.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
support_format_address_family.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
support_format_addrinfo.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
support_format_dns_packet.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
support_format_herrno.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
support_format_hostent.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
support_format_netent.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
support_isolate_in_subprocess.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
support_mutex_pi_monotonic.c support: Add support_mutex_pi_monotonic 2021-10-01 10:11:08 -03:00
support_openpty.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
support_path_support_time64.c Define PTHREAD_STACK_MIN to sysconf(_SC_THREAD_STACK_MIN) 2021-07-09 15:10:35 -07:00
support_paths.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
support_process_state.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
support_ptrace.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
support_quote_blob_main.c Add TEST_COMPARE_STRING_WIDE to support/check.h 2021-10-12 13:48:39 +00:00
support_quote_blob_wide.c Add TEST_COMPARE_STRING_WIDE to support/check.h 2021-10-12 13:48:39 +00:00
support_quote_blob.c Add TEST_COMPARE_STRING_WIDE to support/check.h 2021-10-12 13:48:39 +00:00
support_quote_string.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
support_record_failure.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
support_run_diff.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
support_select_modifies_timeout.c libsupport: Add support_select_modifies_timeout 2021-04-12 18:38:37 -03:00
support_select_normalizes_timeout.c libsupport: Add support_select_normalizes_timeout 2021-04-12 18:38:37 -03:00
support_set_small_thread_stack_size.c support: Add support_small_thread_stack_size 2021-01-05 11:33:16 -03:00
support_shared_allocate.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
support_small_stack_thread_attribute.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
support_stack_alloc.c support: Replace _SC_MINSIGSTKSZ with _SC_SIGSTKSZ 2021-07-11 07:57:31 -07:00
support_stat_nanoseconds.c support: Fix hurd build after bfddda2570 2021-04-01 13:55:46 -03:00
support_subprocess.c support: Add capability to fork an sgid child 2021-04-12 19:03:19 +05:30
support_test_compare_blob.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
support_test_compare_failure.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
support_test_compare_string_main.c Add TEST_COMPARE_STRING_WIDE to support/check.h 2021-10-12 13:48:39 +00:00
support_test_compare_string_wide.c Add TEST_COMPARE_STRING_WIDE to support/check.h 2021-10-12 13:48:39 +00:00
support_test_compare_string.c Add TEST_COMPARE_STRING_WIDE to support/check.h 2021-10-12 13:48:39 +00:00
support_test_main.c elf: Testing infrastructure for ld.so DSO sorting (BZ #17645) 2021-10-21 11:23:53 -03:00
support_test_verify_impl.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
support_wait_for_thread_exit.c support: Add check for TID zero in support_wait_for_thread_exit 2021-10-01 18:16:41 +02:00
support_write_file_string.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
support-open-dev-null-range.c support: Also return fd when it is 0 2021-10-06 22:18:24 +05:30
support-xfstat-time64.c libsupport: Add 64-bit time_t support for stat functions 2021-06-15 10:42:11 -03:00
support-xfstat.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
support-xstat-time64.c libsupport: Add 64-bit time_t support for stat functions 2021-06-15 10:42:11 -03:00
support-xstat.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
support.h Add alloc_align attribute to memalign et al 2021-10-21 00:19:20 +01:00
temp_file-internal.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
temp_file.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
temp_file.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
test-container.c test-container: Always copy test-specific support files [BZ #27537] 2021-03-11 17:04:12 -05:00
test-driver.c elf: Testing infrastructure for ld.so DSO sorting (BZ #17645) 2021-10-21 11:23:53 -03:00
test-driver.h elf: Testing infrastructure for ld.so DSO sorting (BZ #17645) 2021-10-21 11:23:53 -03:00
test-run-command.c elf: Testing infrastructure for ld.so DSO sorting (BZ #17645) 2021-10-21 11:23:53 -03:00
timespec-add-time64.c libsupport: Add 64-bit time_t support for time functions 2021-06-15 10:42:11 -03:00
timespec-add.c libsupport: Add 64-bit time_t support for time functions 2021-06-15 10:42:11 -03:00
timespec-sub-time64.c libsupport: Add 64-bit time_t support for time functions 2021-06-15 10:42:11 -03:00
timespec-sub.c libsupport: Add 64-bit time_t support for time functions 2021-06-15 10:42:11 -03:00
timespec-time64.c libsupport: Add 64-bit time_t support for time functions 2021-06-15 10:42:11 -03:00
timespec.c libsupport: Add 64-bit time_t support for time functions 2021-06-15 10:42:11 -03:00
timespec.h libsupport: Add 64-bit time_t support for time functions 2021-06-15 10:42:11 -03:00
true-container.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
tst-support_blob_repeat.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
tst-support_capture_subprocess.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
tst-support_descriptors.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
tst-support_format_dns_packet.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
tst-support_quote_blob_wide.c Add TEST_COMPARE_STRING_WIDE to support/check.h 2021-10-12 13:48:39 +00:00
tst-support_quote_blob.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
tst-support_quote_string.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
tst-support_record_failure-2.sh Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
tst-support_record_failure.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
tst-support-namespace.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
tst-support-open-dev-null-range.c support: Add support_open_dev_null_range 2021-08-26 17:13:45 -03:00
tst-support-process_state.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
tst-test_compare_blob.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
tst-test_compare_string_wide.c Add TEST_COMPARE_STRING_WIDE to support/check.h 2021-10-12 13:48:39 +00:00
tst-test_compare_string.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
tst-test_compare.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
tst-timespec.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
tst-xreadlink.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
tst-xsigstack.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
tty.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
write_message.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xaccept4.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xaccept.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xasprintf.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xbind.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xcalloc.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xchdir.c Add xchdir to libsupport. 2021-01-09 17:47:50 +01:00
xchmod.c support: Add xchmod wrapper 2021-01-11 12:26:58 -03:00
xchroot.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xclock_gettime_time64.c libsupport: Add 64-bit time_t support for time functions 2021-06-15 10:42:11 -03:00
xclock_gettime.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xclock_settime_time64.c libsupport: Add 64-bit time_t support for time functions 2021-06-15 10:42:11 -03:00
xclock_settime.c support: Provide xclock_settime test helper function 2021-03-08 22:41:28 +01:00
xclone.c support: Fix xclone build failures on ia64 and hppa 2021-06-25 09:36:28 +02:00
xclose.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xconnect.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xcopy_file_range.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xdlfcn.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xdlfcn.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xdlmopen.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xdup2.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xfchmod.c Add xfchmod to libsupport 2021-01-10 18:55:47 +01:00
xfclose.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xfopen.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xfork.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xftruncate.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xgetline.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xgetsockname.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xlisten.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xlseek.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xlstat-time64.c libsupport: Add 64-bit time_t support for stat functions 2021-06-15 10:42:11 -03:00
xlstat.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xmalloc.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xmemstream.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xmemstream.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xmkdir.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xmkdirp.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xmmap.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xmprotect.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xmunmap.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xnewlocale.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xopen.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpipe.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpoll.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xposix_memalign.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xposix_spawn_file_actions_addclose.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xposix_spawn_file_actions_adddup2.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xposix_spawn.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpthread_attr_destroy.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpthread_attr_init.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpthread_attr_setaffinity_np.c support: Do not build xpthread_attr_setaffinity_np for hurd 2021-05-28 16:00:19 -03:00
xpthread_attr_setdetachstate.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpthread_attr_setguardsize.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpthread_attr_setstack.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpthread_attr_setstacksize.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpthread_barrier_destroy.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpthread_barrier_init.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpthread_barrier_wait.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpthread_barrierattr_destroy.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpthread_barrierattr_init.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpthread_barrierattr_setpshared.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpthread_cancel.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpthread_check_return.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpthread_cond_wait.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpthread_create.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpthread_detach.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpthread_join.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpthread_key_create.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpthread_key_delete.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpthread_kill.c support: Add xpthread_kill 2021-03-12 10:20:18 -03:00
xpthread_mutex_consistent.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpthread_mutex_destroy.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpthread_mutex_init.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpthread_mutex_lock.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpthread_mutex_unlock.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpthread_mutexattr_destroy.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpthread_mutexattr_init.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpthread_mutexattr_setprotocol.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpthread_mutexattr_setpshared.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpthread_mutexattr_setrobust.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpthread_mutexattr_settype.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpthread_once.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpthread_rwlock_destroy.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpthread_rwlock_init.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpthread_rwlock_rdlock.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpthread_rwlock_unlock.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpthread_rwlock_wrlock.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpthread_rwlockattr_init.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpthread_rwlockattr_setkind_np.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpthread_sigmask.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpthread_spin_lock.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xpthread_spin_unlock.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xptrace.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xraise.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xreadlink.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xrealloc.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xrecvfrom.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xsched.h support: Add xclone 2021-06-24 10:00:52 -03:00
xsendto.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xsetlocale.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xsetsockopt.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xsigaction.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xsignal.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xsignal.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xsigstack.c support: Add support_stack_alloc 2021-07-08 13:48:06 -03:00
xsocket.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xsocket.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xspawn.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xstdio.h Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xstrdup.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xstrndup.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xsymlink.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xsysconf.c xsysconf: Only fail on error results and errno set 2021-09-24 17:30:03 +09:00
xthread.h support: Add support_mutex_pi_monotonic 2021-10-01 10:11:08 -03:00
xtime.h libsupport: Add 64-bit time_t support for time functions 2021-06-15 10:42:11 -03:00
xunistd.h libsupport: Add 64-bit time_t support for stat functions 2021-06-15 10:42:11 -03:00
xunlink.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xuselocale.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xwaitpid.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00
xwrite.c Update copyright dates with scripts/update-copyrights 2021-01-02 12:17:34 -08:00

This subdirectory contains infrastructure which is not put into
installed libraries, but may be linked into programs (installed or
not) and tests.

# Error-checking wrappers

These wrappers test for error return codes an terminate the process on
error.  They are declared in these header files:

* support.h
* xsignal.h
* xthread.h
* xtime.h

In general, new wrappers should be added to support.h if possible.
However, support.h must remain fully compatible with C90 and therefore
cannot include headers which use identifers not reserved in C90.  If
the wrappers need additional types, additional headers such as
signal.h need to be introduced.

# Test framework

The test framework provides a main program for tests, including a
timeout for hanging tests.  See README-testing.c for a minimal
example, and test-driver.c for details how to use it.  The following
header files provide related declarations:

* check.h
* temp_file.h
* test-driver.h

For tests that make use of struct timespec, the following header files
contain additional macros and helper functions:

* timespec.h