diff options
author | Alan Modra <amodra@gmail.com> | 2021-06-29 13:31:45 +0930 |
---|---|---|
committer | Alan Modra <amodra@gmail.com> | 2021-07-15 15:27:09 +0930 |
commit | cd6ca96f5d530e4ee07b65ac8b075119ba5bb035 (patch) | |
tree | 5656cb884387d4b3aae4d1aec237dbceaa1bfaa3 /gcc | |
parent | 4f3b383cf8825197e714a4a21852eca071f8e67e (diff) | |
download | gcc-cd6ca96f5d530e4ee07b65ac8b075119ba5bb035.zip gcc-cd6ca96f5d530e4ee07b65ac8b075119ba5bb035.tar.gz gcc-cd6ca96f5d530e4ee07b65ac8b075119ba5bb035.tar.bz2 |
[POWER10] __morestack calls from pcrel code
Compiling gcc/testsuite/gcc.dg/split-*.c and others with -mcpu=power10
and linking with a non-pcrel libgcc results in crashes due to the
power10 pcrel code not having r2 set for the generic-morestack.c
functions called from __morestack. There is also a problem when
non-pcrel code calls a pcrel libgcc. See the patch comments.
A similar situation theoretically occurs with ELFv1 multi-toc
executables, when __morestack might be located in a different toc
group to its caller. This patch makes no attempt to fix that, since
the gold linker does not support multi-toc (gold is needed for proper
support of -fsplit-stack code) nor does gcc emit __morestack calls
that support multi-toc.
* config/rs6000/morestack.S (R2_SAVE): Define.
(__morestack): Save and restore r2. Set up r2 for called
functions.
Diffstat (limited to 'gcc')
0 files changed, 0 insertions, 0 deletions