glibc/sysdeps/unix/sysv/linux/powerpc/powerpc64
Alan Modra afcd9480fe powerpc __tls_get_addr call optimization
This patch is glibc support for a PowerPC TLS optimization, inspired
by Alexandre Oliva's TLS optimization for other processors,
http://www.lsd.ic.unicamp.br/~oliva/writeups/TLS/RFC-TLSDESC-x86.txt

In essence, this optimization uses a zero module id in the tls_index
GOT entry to indicate that a TLS variable is allocated space in the
static TLS area.  A special plt call linker stub for __tls_get_addr
checks for such a tls_index and if found, returns the offset
immediately.  The linker communicates the fact that the special
__tls_get_addr stub is used by setting a bit in the dynamic tag
DT_PPC64_OPT/DT_PPC_OPT.  glibc communicates to the linker that this
optimization is available by the presence of __tls_get_addr_opt.

tst-tlsmod2.so is built with -Wl,--no-tls-get-addr-optimize for
tst-tls-dlinfo, which otherwise would fail since it tests that no
static tls is allocated.  The ld option --no-tls-get-addr-optimize has
been available since binutils-2.20 so doesn't need a configure test.

	* NEWS: Advertise TLS optimization.
	* elf/elf.h (R_PPC_TLSGD, R_PPC_TLSLD, DT_PPC_OPT, PPC_OPT_TLS): Define.
	(DT_PPC_NUM): Increment.
	* elf/dynamic-link.h (HAVE_STATIC_TLS): Define.
	(CHECK_STATIC_TLS): Use here.
	* sysdeps/powerpc/powerpc32/dl-machine.h (elf_machine_rela): Optimize
	TLS descriptors.
	* sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_rela): Likewise.
	* sysdeps/powerpc/dl-tls.c: New file.
	* sysdeps/powerpc/Versions: Add __tls_get_addr_opt.
	* sysdeps/powerpc/tst-tlsopt-powerpc.c: New tls test.
	* sysdeps/unix/sysv/linux/powerpc/Makefile: Add new test.
	Build tst-tlsmod2.so with --no-tls-get-addr-optimize.
	* sysdeps/unix/sysv/linux/powerpc/powerpc32/ld.abilist: Update.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/ld.abilist: Likewise.
	* sysdeps/unix/sysv/linux/powerpc/powerpc64/ld-le.abilist: Likewise.
2015-03-25 15:53:47 +10:30
..
970 powerpc: Re-work the Implies structure 2010-06-30 09:57:38 -07:00
a2 powerpc: PPCA2/A2 optimized memcpy function 2010-10-24 21:47:33 -04:00
cell powerpc: Re-work the Implies structure 2010-06-30 09:57:38 -07:00
fpu Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
____longjmp_chk.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
brk.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
c++-types.data powerpc: Consolidate nptl/ subdirectories under linux/.... 2014-06-23 09:40:01 -07:00
clone.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
configure Require autoconf 2.69 2014-09-29 07:53:36 -07:00
configure.ac Use %ifdef in sysdeps/unix/sysv/linux/powerpc/powerpc64/shlib-versions. 2014-09-12 12:25:36 +00:00
dl-cache.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
fcntl.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
getcontext.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
Implies Revert "Use ieee754/dbl-64/wordsize-64 on powerpc64" 2013-01-10 10:44:05 +01:00
kernel_stat.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
ld-le.abilist powerpc __tls_get_addr call optimization 2015-03-25 15:53:47 +10:30
ld.abilist powerpc __tls_get_addr call optimization 2015-03-25 15:53:47 +10:30
ldsodefs.h Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
libanl-le.abilist powerpc: Consolidate nptl/ subdirectories under linux/.... 2014-06-23 09:40:01 -07:00
libanl.abilist powerpc: Consolidate nptl/ subdirectories under linux/.... 2014-06-23 09:40:01 -07:00
libBrokenLocale-le.abilist powerpc: Consolidate nptl/ subdirectories under linux/.... 2014-06-23 09:40:01 -07:00
libBrokenLocale.abilist powerpc: Consolidate nptl/ subdirectories under linux/.... 2014-06-23 09:40:01 -07:00
libc-le.abilist powerpc: Consolidate nptl/ subdirectories under linux/.... 2014-06-23 09:40:01 -07:00
libc.abilist powerpc: Consolidate nptl/ subdirectories under linux/.... 2014-06-23 09:40:01 -07:00
libcrypt-le.abilist powerpc: Consolidate nptl/ subdirectories under linux/.... 2014-06-23 09:40:01 -07:00
libcrypt.abilist powerpc: Consolidate nptl/ subdirectories under linux/.... 2014-06-23 09:40:01 -07:00
libdl-le.abilist powerpc: Consolidate nptl/ subdirectories under linux/.... 2014-06-23 09:40:01 -07:00
libdl.abilist powerpc: Consolidate nptl/ subdirectories under linux/.... 2014-06-23 09:40:01 -07:00
libm-le.abilist powerpc: Consolidate nptl/ subdirectories under linux/.... 2014-06-23 09:40:01 -07:00
libm.abilist powerpc: Consolidate nptl/ subdirectories under linux/.... 2014-06-23 09:40:01 -07:00
libnsl-le.abilist powerpc: Consolidate nptl/ subdirectories under linux/.... 2014-06-23 09:40:01 -07:00
libnsl.abilist powerpc: Consolidate nptl/ subdirectories under linux/.... 2014-06-23 09:40:01 -07:00
libpthread-le.abilist powerpc: Consolidate nptl/ subdirectories under linux/.... 2014-06-23 09:40:01 -07:00
libpthread.abilist powerpc: Consolidate nptl/ subdirectories under linux/.... 2014-06-23 09:40:01 -07:00
libresolv-le.abilist powerpc: Consolidate nptl/ subdirectories under linux/.... 2014-06-23 09:40:01 -07:00
libresolv.abilist powerpc: Consolidate nptl/ subdirectories under linux/.... 2014-06-23 09:40:01 -07:00
librt-le.abilist powerpc: Consolidate nptl/ subdirectories under linux/.... 2014-06-23 09:40:01 -07:00
librt.abilist powerpc: Consolidate nptl/ subdirectories under linux/.... 2014-06-23 09:40:01 -07:00
libthread_db-le.abilist powerpc: Consolidate nptl/ subdirectories under linux/.... 2014-06-23 09:40:01 -07:00
libthread_db.abilist powerpc: Consolidate nptl/ subdirectories under linux/.... 2014-06-23 09:40:01 -07:00
libutil-le.abilist powerpc: Consolidate nptl/ subdirectories under linux/.... 2014-06-23 09:40:01 -07:00
libutil.abilist powerpc: Consolidate nptl/ subdirectories under linux/.... 2014-06-23 09:40:01 -07:00
localplt.data Run check-localpltk/textrel/execstack over ld.so. 2014-11-06 15:48:44 -05:00
makecontext.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
setcontext.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
shlib-versions Remove shlib-versions entries redundant with DEFAULT entries. 2014-09-26 17:34:22 +00:00
socket.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
swapcontext.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
sync_file_range.c Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00
syscalls.list Fix posix_spawn getrlimit64 namespace (bug 17991). 2015-02-18 00:26:35 +00:00
sysdep-cancel.h powerpc: Remove HAVE_ASM_GLOBAL_DOT_NAME define 2015-03-11 09:01:05 -04:00
sysdep.h powerpc: abort transaction in syscalls 2015-01-12 06:32:08 -05:00
timer_create.c PowerPC: Move powerpc64 timer_*.c out of nptl/ 2014-05-26 11:41:46 -05:00
timer_delete.c PowerPC: Move powerpc64 timer_*.c out of nptl/ 2014-05-26 11:41:46 -05:00
timer_getoverr.c PowerPC: Move powerpc64 timer_*.c out of nptl/ 2014-05-26 11:41:46 -05:00
timer_gettime.c PowerPC: Move powerpc64 timer_*.c out of nptl/ 2014-05-26 11:41:46 -05:00
timer_settime.c PowerPC: Move powerpc64 timer_*.c out of nptl/ 2014-05-26 11:41:46 -05:00
ucontext_i.sym PowerPC64 ELFv2 ABI 4/6: Stack frame layout changes 2013-12-04 07:41:39 -06:00
umount.c * sysdeps/unix/sysv/linux/powerpc/powerpc64/umount.c: Include x86_64 2006-02-28 19:07:44 +00:00
Versions PowerPC: Move remaining nptl/sysdeps/unix/sysv/linux/powerpc/ files. 2014-05-26 11:45:14 -05:00
vfork.S Update copyright dates with scripts/update-copyrights. 2015-01-02 16:29:47 +00:00