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.

Reply via email to