glibc/support
Florian Weimer 446d22e91d Linux: Implement interfaces for memory protection keys
This adds system call wrappers for pkey_alloc, pkey_free, pkey_mprotect,
and x86-64 implementations of pkey_get and pkey_set, which abstract over
the PKRU CPU register and hide the actual number of memory protection
keys supported by the CPU.  pkey_mprotect with a -1 key is implemented
using mprotect, so it will work even if the kernel does not support the
pkey_mprotect system call.

The system call wrapers use unsigned int instead of unsigned long for
parameters, so that no special treatment for x32 is needed.  The flags
argument is currently unused, and the access rights bit mask is limited
to two bits by the current PKRU register layout anyway.

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2017-12-05 15:20:35 +01:00
..
capture_subprocess.h resolv: Tests for various versions of res_init 2017-06-02 15:50:36 +02:00
check_addrinfo.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
check_dns_packet.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
check_hostent.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
check_netent.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
check_nss.h Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
check.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
check.h support: Add TEST_COMPARE macro 2017-12-04 20:56:08 +01:00
delayed_exit.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
format_nss.h Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
ignore_stderr.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
Makefile Linux: Implement interfaces for memory protection keys 2017-12-05 15:20:35 +01:00
namespace.h support_enter_mount_namespace: Unshare with mount --make-rprivate 2017-11-18 14:30:20 +01:00
next_to_fault.c support: Add <support/next_to_fault.h> 2017-11-13 19:29:32 +01:00
next_to_fault.h support: Add <support/next_to_fault.h> 2017-11-13 19:29:32 +01:00
oom_error.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
README
README-testing.c
resolv_test.c Revert "resolv_test.c: also cope with CONNREFUSED errors returned by recvfrom" 2017-09-25 20:47:51 +02:00
resolv_test.h support: Add resolver testing mode which does not patch _res 2017-07-05 19:04:40 +02:00
run_diff.h Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
set_fortify_handler.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
support_become_root.c support_become_root: Fix comment style 2017-11-18 17:54:24 +01:00
support_can_chroot.c resolv: Tests for various versions of res_init 2017-06-02 15:50:36 +02:00
support_capture_subprocess_check.c support: Report actual exit status in support_capture_subprocess_check 2017-06-30 11:30:48 +02:00
support_capture_subprocess.c Add internal facility for dynamic array handling 2017-06-02 11:59:28 +02:00
support_chroot.c support_create_temp_directory: Align behavior with create_temp_file 2017-11-18 14:11:09 +01:00
support_enter_mount_namespace.c support_enter_mount_namespace: Unshare with mount --make-rprivate 2017-11-18 14:30:20 +01:00
support_enter_network_namespace.c support: Add error checking to close system calls [BZ #21244] 2017-03-15 13:33:40 +01:00
support_format_address_family.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
support_format_addrinfo.c support_format_addrinfo: Fix flags and canonname formatting 2017-05-11 11:51:34 +02:00
support_format_dns_packet.c support_format_dns_packet: Fix CNAME and multiple RR handling 2017-03-15 13:33:40 +01:00
support_format_herrno.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
support_format_hostent.c support_format_hostent: Add more error information for NETDB_INTERNAL 2017-10-05 12:20:19 +02:00
support_format_netent.c support: struct netent portability fix for support_format_netent 2017-01-01 09:35:45 +01:00
support_isolate_in_subprocess.c resolv: Tests for various versions of res_init 2017-06-02 15:50:36 +02:00
support_record_failure.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
support_run_diff.c support: Add error checking to close system calls [BZ #21244] 2017-03-15 13:33:40 +01:00
support_shared_allocate.c resolv: Tests for various versions of res_init 2017-06-02 15:50:36 +02:00
support_test_compare_failure.c support: Add TEST_COMPARE macro 2017-12-04 20:56:08 +01:00
support_test_main.c support: Add optstring support 2017-06-15 16:01:38 -03:00
support_test_verify_impl.c support: Expose TEST_VERIFY_EXIT behavior to GCC optimizers 2017-06-09 14:08:13 +02:00
support_write_file_string.c resolv: Tests for various versions of res_init 2017-06-02 15:50:36 +02:00
support-xstat.c resolv: Tests for various versions of res_init 2017-06-02 15:50:36 +02:00
support.h support: Add xstrndup, xunlink, xreadlink, support_create_temp_directory 2017-11-12 09:53:06 +01:00
temp_file-internal.h Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
temp_file.c support_create_temp_directory: Align behavior with create_temp_file 2017-11-18 14:11:09 +01:00
temp_file.h support_create_temp_directory: Align behavior with create_temp_file 2017-11-18 14:11:09 +01:00
test-driver.c support: Add optstring support 2017-06-15 16:01:38 -03:00
test-driver.h support: Add optstring support 2017-06-15 16:01:38 -03:00
tst-support_capture_subprocess.c Add internal facility for dynamic array handling 2017-06-02 11:59:28 +02:00
tst-support_format_dns_packet.c Another round of inclusion fixes for _ISOMAC testsuite. 2017-03-22 08:44:32 -04:00
tst-support_record_failure-2.sh Another round of inclusion fixes for _ISOMAC testsuite. 2017-03-22 08:44:32 -04:00
tst-support_record_failure.c Another round of inclusion fixes for _ISOMAC testsuite. 2017-03-22 08:44:32 -04:00
tst-support-namespace.c support: Check isolation of loopback addresses in tst-support-namespace 2017-07-05 19:04:39 +02:00
tst-test_compare.c support/tst-test_compare: Fix 32-bit/64-bit expected output mismatch 2017-12-05 15:08:59 +01:00
tst-xreadlink.c support_create_temp_directory: Align behavior with create_temp_file 2017-11-18 14:11:09 +01:00
write_message.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xaccept4.c Assume that accept4 is always available and works 2017-04-19 07:44:48 +02:00
xaccept.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xasprintf.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xbind.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xcalloc.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xchroot.c resolv: Tests for various versions of res_init 2017-06-02 15:50:36 +02:00
xclose.c support: Add error checking to close system calls [BZ #21244] 2017-03-15 13:33:40 +01:00
xconnect.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xdlfcn.c Implement xdlopen, xdlsym and xdlclose routines which terminate test 2017-09-20 19:37:45 -07:00
xdlfcn.h Implement xdlopen, xdlsym and xdlclose routines which terminate test 2017-09-20 19:37:45 -07:00
xdup2.c Add internal facility for dynamic array handling 2017-06-02 11:59:28 +02:00
xfclose.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xfopen.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xfork.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xgetsockname.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xlisten.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xmalloc.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xmemstream.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xmemstream.h Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xmkdir.c resolv: Tests for various versions of res_init 2017-06-02 15:50:36 +02:00
xmmap.c nptl: Add tst-robust-fork 2017-01-27 06:53:20 +01:00
xmprotect.c __inet_pton_length: Implement new internal helper function 2017-06-21 13:09:08 +02:00
xmunmap.c nptl: Add tst-robust-fork 2017-01-27 06:53:20 +01:00
xopen.c resolv: Tests for various versions of res_init 2017-06-02 15:50:36 +02:00
xpipe.c Add internal facility for dynamic array handling 2017-06-02 11:59:28 +02:00
xpoll.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xpthread_attr_destroy.c Bug 20116: Fix use after free in pthread_create() 2017-01-28 19:21:44 -05:00
xpthread_attr_init.c Bug 20116: Fix use after free in pthread_create() 2017-01-28 19:21:44 -05:00
xpthread_attr_setdetachstate.c Bug 20116: Fix use after free in pthread_create() 2017-01-28 19:21:44 -05:00
xpthread_attr_setguardsize.c nptl: Invert the mmap/mprotect logic on allocated stacks (BZ#18988) 2017-06-14 17:22:35 -03:00
xpthread_attr_setstacksize.c Bug 20116: Fix use after free in pthread_create() 2017-01-28 19:21:44 -05:00
xpthread_barrier_destroy.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xpthread_barrier_init.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xpthread_barrier_wait.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xpthread_cancel.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xpthread_check_return.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xpthread_cond_wait.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xpthread_create.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xpthread_detach.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xpthread_join.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xpthread_mutex_consistent.c nptl: Add tst-robust-fork 2017-01-27 06:53:20 +01:00
xpthread_mutex_destroy.c nptl: Add tst-robust-fork 2017-01-27 06:53:20 +01:00
xpthread_mutex_init.c nptl: Add tst-robust-fork 2017-01-27 06:53:20 +01:00
xpthread_mutex_lock.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xpthread_mutex_unlock.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xpthread_mutexattr_destroy.c nptl: Add tst-robust-fork 2017-01-27 06:53:20 +01:00
xpthread_mutexattr_init.c nptl: Add tst-robust-fork 2017-01-27 06:53:20 +01:00
xpthread_mutexattr_setprotocol.c nptl: Add tst-robust-fork 2017-01-27 06:53:20 +01:00
xpthread_mutexattr_setpshared.c nptl: Add tst-robust-fork 2017-01-27 06:53:20 +01:00
xpthread_mutexattr_setrobust.c nptl: Add tst-robust-fork 2017-01-27 06:53:20 +01:00
xpthread_mutexattr_settype.c nptl: Add tst-robust-fork 2017-01-27 06:53:20 +01:00
xpthread_once.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xpthread_rwlock_init.c rwlock: Fix explicit hand-over (bug 21298) 2017-07-28 00:23:58 -04:00
xpthread_rwlock_rdlock.c rwlock: Fix explicit hand-over (bug 21298) 2017-07-28 00:23:58 -04:00
xpthread_rwlock_unlock.c rwlock: Fix explicit hand-over (bug 21298) 2017-07-28 00:23:58 -04:00
xpthread_rwlock_wrlock.c rwlock: Fix explicit hand-over (bug 21298) 2017-07-28 00:23:58 -04:00
xpthread_rwlockattr_init.c rwlock: Fix explicit hand-over (bug 21298) 2017-07-28 00:23:58 -04:00
xpthread_rwlockattr_setkind_np.c rwlock: Fix explicit hand-over (bug 21298) 2017-07-28 00:23:58 -04:00
xpthread_sigmask.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xpthread_spin_lock.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xpthread_spin_unlock.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xraise.c Linux: Implement interfaces for memory protection keys 2017-12-05 15:20:35 +01:00
xreadlink.c support: Add xstrndup, xunlink, xreadlink, support_create_temp_directory 2017-11-12 09:53:06 +01:00
xrealloc.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xrecvfrom.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xsendto.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xsetsockopt.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xsigaction.c Linux: Implement interfaces for memory protection keys 2017-12-05 15:20:35 +01:00
xsignal.c Linux: Implement interfaces for memory protection keys 2017-12-05 15:20:35 +01:00
xsignal.h Linux: Implement interfaces for memory protection keys 2017-12-05 15:20:35 +01:00
xsocket.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xsocket.h Assume that accept4 is always available and works 2017-04-19 07:44:48 +02:00
xstdio.h Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xstrdup.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xstrndup.c support: Add xstrndup, xunlink, xreadlink, support_create_temp_directory 2017-11-12 09:53:06 +01:00
xsysconf.c Linux: Implement interfaces for memory protection keys 2017-12-05 15:20:35 +01:00
xthread.h rwlock: Fix explicit hand-over (bug 21298) 2017-07-28 00:23:58 -04:00
xunistd.h Linux: Implement interfaces for memory protection keys 2017-12-05 15:20:35 +01:00
xunlink.c support: Add xstrndup, xunlink, xreadlink, support_create_temp_directory 2017-11-12 09:53:06 +01:00
xwaitpid.c Update copyright dates with scripts/update-copyrights. 2017-01-01 00:14:16 +00:00
xwrite.c support: Use %td for pointer difference in xwrite 2017-01-01 09:27:54 +01: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

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