glibc/sysdeps/powerpc
Alan Modra d6efcc118e powerpc64: Use medium model toc accesses throughout
The PowerPC64 linker edits medium model toc-indirect code to toc-pointer
relative:
	addis r9,r2,tc_entry_for_var@toc@ha
	ld r9,tc_entry_for_var@toc@l(r9)
becomes
	addis r9,r2,(var-.TOC.)@ha
	addi r9,r9,(var-.TOC.)@l
when "var" is known to be local to the binary.  This isn't done for
small-model toc-indirect code, because "var" is almost guaranteed to
be too far away from .TOC. for a 16-bit signed offset.  And, because
the analysis of which .toc entry can be removed becomes much more
complicated in objects that mix code models, they aren't removed if
any small-model toc sequence appears in an object file.

Unfortunately, glibc's build of ld.so smashes the needed objects
together in a ld -r linking stage.  This means the GOT/TOC is left
with a whole lot of relative relocations which is untidy, but in
itself is not a serious problem.  However, static-pie on powerpc64
bombs due to a segfault caused by one of the small-model accesses
before _dl_relocate_static_pie.  (The very first one in rcrt1.o
passing start_addresses in r8 to __libc_start_main.)

So this patch makes all the toc/got accesses in assembly medium code
model, and a couple of functions hidden.  By itself this is not
enough to give us working static-pie, but it is useful in isolation to
enable better linker optimisation.

There's a serious problem in libgcc too.  libgcc ifuncs access the
AT_HWCAP words stored in the tcb with an offset from the thread
pointer (r13), but r13 isn't set at the time _dl_relocate_static_pie.
A followup patch will fix that.

Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
2022-04-10 08:33:06 +09:30
..
bits Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
fpu powerpc: Remove fcopysign{f} implementation 2022-04-07 12:00:16 -03:00
nofpu Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
nptl Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
power4 Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
power6 Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
powerpc32 powerpc: Remove fcopysign{f} implementation 2022-04-07 12:00:16 -03:00
powerpc64 powerpc64: Use medium model toc accesses throughout 2022-04-10 08:33:06 +09:30
sys/platform Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
abort-instr.h
atomic-machine.h Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
cpu-features.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
cpu-features.h Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
dl-lookupcfg.h elf: Issue la_symbind for bind-now (BZ #23734) 2022-02-01 14:49:46 -03:00
dl-procinfo.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
dl-procinfo.h Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
dl-tls.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
dl-tls.h Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
dl-tunables.list Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
elf-initfini.h Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
ffs.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
fpu_control.h Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
gccframe.h Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
hwcapinfo.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
hwcapinfo.h Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
ifunc-sel.h
jmpbuf-offsets.h Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
jmpbuf-unwind.h Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
ldsodefs.h Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
libc-tls.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
locale-defines.sym
longjmp.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
machine-gmon.h Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
Makefile powerpc: Fix unrecognized instruction errors with recent binutils 2021-09-29 14:42:20 -05:00
math-tests-snan-cast.h Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
mod-cache-ppc.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
mod-tlsopt-powerpc.c elf: Drop elf/tls-macros.h in favor of __thread and tls_model attributes [BZ #28152] [BZ #28205] 2021-08-16 09:59:30 -07:00
mp_clz_tab.c
novmx-longjmp.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
novmx-sigjmp.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
novmxsetjmp.h Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
preconfigure
preconfigure.ac
rtld-global-offsets.sym
sigjmp.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
sotruss-lib.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
stackinfo.h Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
sysdep.h Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
test-arith.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
test-arithf.c
test-get_hwcap-static.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
test-get_hwcap.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
test-gettimebase.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
tst-cache-ppc-static-dlopen.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
tst-cache-ppc-static.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
tst-cache-ppc.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
tst-set_ppr.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
tst-stack-align.h Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
tst-tlsifunc-static.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
tst-tlsifunc.c Update copyright dates with scripts/update-copyrights 2022-01-01 11:40:24 -08:00
tst-tlsopt-powerpc.c
Versions nptl: Move __pthread_unwind_next into libc 2021-04-21 19:49:50 +02:00