[Bug target/45053] libgcc_s link command misses crtsavgpr_s and crtresgpr_s for powerpc

amodra at gmail dot com gcc-bugzilla@gcc.gnu.org
Thu Feb 7 08:37:00 GMT 2013


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=45053

Alan Modra <amodra at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |ASSIGNED
                 CC|                            |amodra at gmail dot com
         AssignedTo|unassigned at gcc dot       |amodra at gmail dot com
                   |gnu.org                     |

--- Comment #12 from Alan Modra <amodra at gmail dot com> 2013-02-07 08:36:45 UTC ---
Some of the claims made in various comments are wrong, at least for current
gcc-4.7 svn rev 195829.  Even the subject is wrong.  libgcc_s.so *is* linked
with the crtsav/res objects.  They are contained in libgcc.a, and libgcc.a is
used when linking libgcc_s.so.  I have verified that libgcc_s.so built with -Os
due to --enable-target-optspace does need various _savegpr* and _restgpr*
functions.

Comment #4 shows the real problem nicely.  Notice that the reference to
_savegpr_31 comes from crtend.o which the penultimate object on the linker
command line, *after* libgcc.a.  So if no other object linked needs the
out-of-line register save functions they won't be extracted from libgcc.a.

$ nm crtbegin.o | grep gpr
         U _restgpr_29_x
$ nm crtend.o | grep gpr
         U _restgpr_31_x
         U _savegpr_31



More information about the Gcc-bugs mailing list