glibc/misc/sys
H.J. Lu e27f41ba2b Add <bits/indirect-return.h>
Add <bits/indirect-return.h> and include it in <ucontext.h>.
__INDIRECT_RETURN defined in <bits/indirect-return.h> indicates if
swapcontext requires special compiler treatment.  The default
__INDIRECT_RETURN is empty.

On x86, when shadow stack is enabled, __INDIRECT_RETURN is defined
with indirect_return attribute, which has been added to GCC 9, to
indicate that swapcontext returns via indirect branch.  Otherwise
__INDIRECT_RETURN is defined with returns_twice attribute.

When shadow stack is enabled, remove always_inline attribute from
prepare_test_buffer in string/tst-xbzero-opt.c to avoid:

tst-xbzero-opt.c: In function ‘prepare_test_buffer’:
tst-xbzero-opt.c:105:1: error: function ‘prepare_test_buffer’ can never be inlined because it uses setjmp
 prepare_test_buffer (unsigned char *buf)

when indirect_return attribute isn't available.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>

	* bits/indirect-return.h: New file.
	* misc/sys/cdefs.h (__glibc_has_attribute): New.
	* sysdeps/x86/bits/indirect-return.h: Likewise.
	* stdlib/Makefile (headers): Add bits/indirect-return.h.
	* stdlib/ucontext.h: Include <bits/indirect-return.h>.
	(swapcontext): Add __INDIRECT_RETURN.
	* string/tst-xbzero-opt.c (ALWAYS_INLINE): New.
	(prepare_test_buffer): Use it.
2018-07-24 07:55:47 -07:00
..
auxv.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
cdefs.h Add <bits/indirect-return.h> 2018-07-24 07:55:47 -07:00
dir.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
file.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
ioctl.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
mman.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
param.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
queue.h [BZ #5779] 2008-03-05 05:50:39 +00:00
select.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
syslog.h Combine __USE_BSD and __USE_SVID into __USE_MISC. 2014-02-12 23:41:01 +00:00
sysmacros.h [BZ #19239] Don't include sys/sysmacros.h from sys/types.h. 2018-02-12 07:34:50 -05:00
uio.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00
xattr.h Update copyright dates with scripts/update-copyrights. 2018-01-01 00:32:25 +00:00