https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119386
--- Comment #56 from Alexander Monakov <amonakov at gcc dot gnu.org> --- I think you mean -fno-plt, not -mno-plt (here and your previous comment)? Ideally we would be able to express a relocation to PLT, but without admitting lazy binding (i.e. the trampoline will be in .plt.got instead of .plt, the corresponding GOT slot will be in .got instead of .got.plt, and the relocation for the GOT slot will be GLOB_DAT instead of JUMP_SLOT). Then we could simply emit 'call mcount@PLTGOT' and have the necessary five-byte instruction without the risk of entering lazy resolution code on first invocation.