http://gcc.gnu.org/bugzilla/show_bug.cgi?id=53803
Alan Modra <amodra at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |RESOLVED Resolution| |INVALID --- Comment #1 from Alan Modra <amodra at gmail dot com> 2012-06-29 15:58:57 UTC --- In reply to question (1), if you get "hidden symbol _restgpr_31_x ... is referenced by DSO" then the DSO (libc?) in question has been wrongly built. You can not have dynamic save/restore functions, so each shared library or executable must use local copies of those functions. In reply to observation (2) and (3), linking with -nostdlib means that you need to really know what you're doing. In this case you must link in some object or static library that provides the save/restore functions if you use them (as in -Os code), and, yes, linking against libgcc.a should do the trick. In reply to question (2), it sounds like you need to write some more code, or link against libgcc.a In reply to question (3), the restgpr_*_x calls are a variant of the gpr restore functions that tear down the stack frame and return, in addition to restoring registers.