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
check_addrinfo.c
check_dns_packet.c
check_hostent.c
check_netent.c
check_nss.h
check.c
check.h support: Add TEST_COMPARE macro 2017-12-04 20:56:08 +01:00
delayed_exit.c
format_nss.h
ignore_stderr.c
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
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
set_fortify_handler.c
support_become_root.c support_become_root: Fix comment style 2017-11-18 17:54:24 +01:00
support_can_chroot.c
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
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_format_address_family.c
support_format_addrinfo.c
support_format_dns_packet.c
support_format_herrno.c
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_isolate_in_subprocess.c
support_record_failure.c
support_run_diff.c
support_shared_allocate.c
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_write_file_string.c
support-xstat.c
support.h support: Add xstrndup, xunlink, xreadlink, support_create_temp_directory 2017-11-12 09:53:06 +01:00
temp_file-internal.h
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
tst-support_format_dns_packet.c
tst-support_record_failure-2.sh
tst-support_record_failure.c
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
xaccept4.c
xaccept.c
xasprintf.c
xbind.c
xcalloc.c
xchroot.c
xclose.c
xconnect.c
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
xfclose.c
xfopen.c
xfork.c
xgetsockname.c
xlisten.c
xmalloc.c
xmemstream.c
xmemstream.h
xmkdir.c
xmmap.c
xmprotect.c __inet_pton_length: Implement new internal helper function 2017-06-21 13:09:08 +02:00
xmunmap.c
xopen.c
xpipe.c
xpoll.c
xpthread_attr_destroy.c
xpthread_attr_init.c
xpthread_attr_setdetachstate.c
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
xpthread_barrier_destroy.c
xpthread_barrier_init.c
xpthread_barrier_wait.c
xpthread_cancel.c
xpthread_check_return.c
xpthread_cond_wait.c
xpthread_create.c
xpthread_detach.c
xpthread_join.c
xpthread_mutex_consistent.c
xpthread_mutex_destroy.c
xpthread_mutex_init.c
xpthread_mutex_lock.c
xpthread_mutex_unlock.c
xpthread_mutexattr_destroy.c
xpthread_mutexattr_init.c
xpthread_mutexattr_setprotocol.c
xpthread_mutexattr_setpshared.c
xpthread_mutexattr_setrobust.c
xpthread_mutexattr_settype.c
xpthread_once.c
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
xpthread_spin_lock.c
xpthread_spin_unlock.c
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
xrecvfrom.c
xsendto.c
xsetsockopt.c
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
xsocket.h
xstdio.h
xstrdup.c
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
xwrite.c

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