https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90513
--- Comment #6 from Segher Boessenkool <segher at gcc dot gnu.org> --- Confirmed. We have for the thunk .set .LTHUNK0,_ZN12Intermediate1vEv .align 2 .p2align 4,,15 .globl _ZThn8_N12Intermediate1vEv .type _ZThn8_N12Intermediate1vEv, @function _ZThn8_N12Intermediate1vEv: .LFB27: .cfi_startproc .LCF2: 0: addis 2,12,.TOC.-.LCF2@ha addi 2,2,.TOC.-.LCF2@l .localentry _ZThn8_N12Intermediate1vEv,.-_ZThn8_N12Intermediate1vEv addi 3,3,-8 b .LTHUNK0 .cfi_endproc .LFE27: .size _ZThn8_N12Intermediate1vEv,.-_ZThn8_N12Intermediate1vEv so this will not work unless the jump is optimised by the loader to jump to the local entry point. The compiler should not require the loader to do this.