]> git.ipfire.org Git - thirdparty/gcc.git/commit
[POWER10] __morestack calls from pcrel code
authorAlan Modra <amodra@gmail.com>
Tue, 29 Jun 2021 04:01:45 +0000 (13:31 +0930)
committerAlan Modra <amodra@gmail.com>
Sun, 13 Feb 2022 10:15:15 +0000 (20:45 +1030)
commit56e29facc48064c6b02019907a7da17113e5a10b
tree54b98dcc3274e7df5cf1deacb741578fb2396388
parent445922b932d938a9f47a32b97fefbd07aa4a2841
[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.

(cherry picked from commit cd6ca96f5d530e4ee07b65ac8b075119ba5bb035)
libgcc/config/rs6000/morestack.S