https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90513
Alan Modra <amodra at gmail dot com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |amodra at gmail dot com --- Comment #7 from Alan Modra <amodra at gmail dot com> --- > The compiler should not require the loader to do this. Nope. The compiler *does* require a linker to this. eg. compile this: #include <stdio.h> void __attribute__ ((noclone, noinline)) print (const char *str) { puts (str); } int main () { print ("Hello"); return 0; } The call to "print" must be adjusted to go to the local entry point. If you aren't using a final link stage such as when building kernel modules, then the module loader needs to do the same as the linker.