glibc/support
Stefan Liebler 8646009efd Fix alignment of TLS variables for tls variant TLS_TCB_AT_TP [BZ #23403]
The alignment of TLS variables is wrong if accessed from within a thread
for architectures with tls variant TLS_TCB_AT_TP.
For the main thread the static tls data is properly aligned.
For other threads the alignment depends on the alignment of the thread
pointer as the static tls data is located relative to this pointer.

This patch adds this alignment for TLS_TCB_AT_TP variants in the same way
as it is already done for TLS_DTV_AT_TP. The thread pointer is also already
properly aligned if the user provides its own stack for the new thread.

This patch extends the testcase nptl/tst-tls1.c in order to check the
alignment of the tls variables and it adds a pthread_create invocation
with a user provided stack.
The test itself is migrated from test-skeleton.c to test-driver.c
and the missing support functions xpthread_attr_setstack and xposix_memalign
are added.

ChangeLog:

	[BZ #23403]
	* nptl/allocatestack.c (allocate_stack): Align pointer pd for
	TLS_TCB_AT_TP tls variant.
	* nptl/tst-tls1.c: Migrate to support/test-driver.c.
	Add alignment checks.
	* support/Makefile (libsupport-routines): Add xposix_memalign and
	xpthread_setstack.
	* support/support.h: Add xposix_memalign.
	* support/xthread.h: Add xpthread_attr_setstack.
	* support/xposix_memalign.c: New File.
	* support/xpthread_attr_setstack.c: Likewise.

(cherry picked from commit bc79db3fd487daea36e7c130f943cfb9826a41b4)
2019-11-05 14:36:16 -05:00
..
Makefile Fix alignment of TLS variables for tls variant TLS_TCB_AT_TP [BZ #23403] 2019-11-05 14:36:16 -05:00
README support: Introduce new subdirectory for test infrastructure 2016-12-09 08:18:27 +01:00
README-testing.c support: Introduce new subdirectory for test infrastructure 2016-12-09 08:18:27 +01:00
blob_repeat.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
blob_repeat.h Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
capture_subprocess.h support: Add support_capture_subprogram 2019-04-26 14:31:22 +02:00
check.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
check.h Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
check_addrinfo.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
check_dns_packet.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
check_hostent.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
check_netent.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
check_nss.h Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
delayed_exit.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
descriptors.h Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
echo-container.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
format_nss.h Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
ignore_stderr.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
links-dso-program-c.c nss_db: fix endent wrt NULL mappings [BZ #24695] [BZ #24696] 2019-10-31 18:12:21 -04:00
links-dso-program.cc nss_db: fix endent wrt NULL mappings [BZ #24695] [BZ #24696] 2019-10-31 18:12:21 -04:00
namespace.h Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
next_to_fault.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
next_to_fault.h Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
oom_error.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
resolv_test.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
resolv_test.h Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
run_diff.h Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
set_fortify_handler.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
shell-container.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
subprocess.h support: Add support_capture_subprogram 2019-04-26 14:31:22 +02:00
support-xfstat.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
support-xstat.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
support.h Fix alignment of TLS variables for tls variant TLS_TCB_AT_TP [BZ #23403] 2019-11-05 14:36:16 -05:00
support_become_root.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
support_can_chroot.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
support_capture_subprocess.c support: Add support_capture_subprogram 2019-04-26 14:31:22 +02:00
support_capture_subprocess_check.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
support_chroot.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
support_copy_file_range.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
support_descriptor_supports_holes.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
support_descriptors.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
support_enter_mount_namespace.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
support_enter_network_namespace.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
support_format_address_family.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
support_format_addrinfo.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
support_format_dns_packet.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
support_format_herrno.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
support_format_hostent.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
support_format_netent.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
support_isolate_in_subprocess.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
support_openpty.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
support_paths.c support: Export bindir path on support_path 2019-10-31 18:10:53 -04:00
support_quote_blob.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
support_quote_string.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
support_record_failure.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
support_run_diff.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
support_shared_allocate.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
support_subprocess.c support: Add support_capture_subprogram 2019-04-26 14:31:22 +02:00
support_test_compare_blob.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
support_test_compare_failure.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
support_test_compare_string.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
support_test_main.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
support_test_verify_impl.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
support_write_file_string.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
temp_file-internal.h Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
temp_file.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
temp_file.h Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
test-container.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
test-driver.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
test-driver.h Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
true-container.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
tst-support-namespace.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
tst-support_blob_repeat.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
tst-support_capture_subprocess.c support: Add support_capture_subprogram 2019-04-26 14:31:22 +02:00
tst-support_descriptors.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
tst-support_format_dns_packet.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
tst-support_quote_blob.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
tst-support_quote_string.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
tst-support_record_failure-2.sh Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
tst-support_record_failure.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
tst-test_compare.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
tst-test_compare_blob.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
tst-test_compare_string.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
tst-xreadlink.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
tst-xsigstack.c Tests for minimal signal handler functionality in MINSIGSTKSZ space. 2019-01-16 09:04:10 -05:00
tty.h Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
write_message.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xaccept.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xaccept4.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xasprintf.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xbind.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xcalloc.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xchroot.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xclose.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xconnect.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xcopy_file_range.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xdlfcn.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xdlfcn.h Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xdup2.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xfclose.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xfopen.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xfork.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xftruncate.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xgetsockname.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xlisten.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xlseek.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xmalloc.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xmemstream.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xmemstream.h Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xmkdir.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xmkdirp.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xmmap.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xmprotect.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xmunmap.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xopen.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xpipe.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xpoll.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xposix_memalign.c Fix alignment of TLS variables for tls variant TLS_TCB_AT_TP [BZ #23403] 2019-11-05 14:36:16 -05:00
xposix_spawn.c support: Add support_capture_subprogram 2019-04-26 14:31:22 +02:00
xposix_spawn_file_actions_addclose.c support: Add support_capture_subprogram 2019-04-26 14:31:22 +02:00
xposix_spawn_file_actions_adddup2.c support: Add support_capture_subprogram 2019-04-26 14:31:22 +02:00
xpthread_attr_destroy.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xpthread_attr_init.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xpthread_attr_setdetachstate.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xpthread_attr_setguardsize.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xpthread_attr_setstack.c Fix alignment of TLS variables for tls variant TLS_TCB_AT_TP [BZ #23403] 2019-11-05 14:36:16 -05:00
xpthread_attr_setstacksize.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xpthread_barrier_destroy.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xpthread_barrier_init.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xpthread_barrier_wait.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xpthread_barrierattr_destroy.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xpthread_barrierattr_init.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xpthread_barrierattr_setpshared.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xpthread_cancel.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xpthread_check_return.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xpthread_cond_wait.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xpthread_create.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xpthread_detach.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xpthread_join.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xpthread_mutex_consistent.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xpthread_mutex_destroy.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xpthread_mutex_init.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xpthread_mutex_lock.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xpthread_mutex_unlock.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xpthread_mutexattr_destroy.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xpthread_mutexattr_init.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xpthread_mutexattr_setprotocol.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xpthread_mutexattr_setpshared.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xpthread_mutexattr_setrobust.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xpthread_mutexattr_settype.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xpthread_once.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xpthread_rwlock_destroy.c nptl: Fix pthread_rwlock_try*lock stalls (Bug 23844) 2019-01-31 21:37:53 -05:00
xpthread_rwlock_init.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xpthread_rwlock_rdlock.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xpthread_rwlock_unlock.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xpthread_rwlock_wrlock.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xpthread_rwlockattr_init.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xpthread_rwlockattr_setkind_np.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xpthread_sigmask.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xpthread_spin_lock.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xpthread_spin_unlock.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xraise.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xreadlink.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xrealloc.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xrecvfrom.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xsendto.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xsetsockopt.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xsigaction.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xsignal.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xsignal.h Tests for minimal signal handler functionality in MINSIGSTKSZ space. 2019-01-16 09:04:10 -05:00
xsigstack.c hurd: Fix libsupport xsigstack build 2019-01-24 09:38:49 -02:00
xsocket.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xsocket.h Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xspawn.h support: Add support_capture_subprogram 2019-04-26 14:31:22 +02:00
xstdio.h Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xstrdup.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xstrndup.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xsymlink.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xsysconf.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xthread.h Fix alignment of TLS variables for tls variant TLS_TCB_AT_TP [BZ #23403] 2019-11-05 14:36:16 -05:00
xunistd.h Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xunlink.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xwaitpid.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00
xwrite.c Update copyright dates with scripts/update-copyrights. 2019-01-01 00:11:28 +00:00

README

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