https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88311
--- Comment #3 from Segher Boessenkool <segher at gcc dot gnu.org> ---
$ ~/build/tot/gcc/cc1 -quiet -Wall -W -O2 hello2.c -mlongcall -m32
...
main:
.LFB0:
.cfi_startproc
stwu 1,-16(1)
.cfi_def_cfa_offset 16
.reloc .+2,R_PPC_PLT16_HA,printf
lis 11,0
.reloc .+2,R_PPC_PLT16_LO,printf
lwz 11,0(11)
mflr 0
lis 3,.LC0@ha
la 3,.LC0@l(3)
.reloc .,R_PPC_PLTSEQ,printf
mtctr 11
stw 0,20(1)
.cfi_offset 65, 4
crxor 6,6,6
.reloc .,R_PPC_PLTCALL,printf
bctrl
lwz 0,20(1)
li 3,0
addi 1,1,16
.cfi_def_cfa_offset 0
mtlr 0
.cfi_restore 65
blr
.cfi_endproc
.LFE0:
.size main,.-main
.section .rodata.str1.4,"aMS",@progbits,1
.align 2
.LC0:
.string "here we are"
So that works fine?!