--- Comment #14 from amodra at gcc dot gnu dot org 2008-07-30 02:44 ---
Subject: Bug 36955
Author: amodra
Date: Wed Jul 30 02:43:05 2008
New Revision: 138291
URL: http://gcc.gnu.org/viewcvs?root=gccview=revrev=138291
Log:
PR target/36955
* config/rs6000/rs6000.c
--- Comment #15 from amodra at bigpond dot net dot au 2008-07-30 02:44
---
.
--
amodra at bigpond dot net dot au changed:
What|Removed |Added
--- Comment #8 from pinskia at gcc dot gnu dot org 2008-07-28 22:29 ---
The difference is the saving/restoring of r30. r30 is not used at all as far
as I can tell.
--
pinskia at gcc dot gnu dot org changed:
What|Removed |Added
--- Comment #9 from janis at gcc dot gnu dot org 2008-07-28 23:21 ---
The difference is in setting up r30 before branching to __tls_get_addr, which
probably uses r30.
--
janis at gcc dot gnu dot org changed:
What|Removed |Added
--- Comment #10 from pinskia at gcc dot gnu dot org 2008-07-28 23:27
---
From http://sourceware.org/ml/binutils/2005-05/msg00391.html:
Also, the ld support doesn't allow registers other than r30 as a GOT pointer.
booo.
-- Pinski
--
pinskia at gcc dot gnu dot org changed:
--- Comment #11 from amodra at bigpond dot net dot au 2008-07-29 00:20
---
When -fPIC, r30 needs to be set to point into the .got2 section for the
function, so that r30 is valid for the __tls_get_addr plt call stub. Note that
this is a different GOT pointer than that used by @[EMAIL
--- Comment #12 from amodra at bigpond dot net dot au 2008-07-29 00:37
---
So, the easy fix for this bug is (totally untested, not even compiled)
Index: gcc/config/rs6000/rs6000.c
===
--- gcc/config/rs6000/rs6000.c
--- Comment #13 from amodra at bigpond dot net dot au 2008-07-29 01:04
---
Blah, of course that's the wrong place to add the use_reg. Needs to be a few
lines lower. I guess I may as well take this bug and go thru a boot/regress
cycle.
--
amodra at bigpond dot net dot au changed: