#; $ as -o test.o gas-cfi-test.s && gcc -nostdlib -o test test.o .text .align 4 .level 1.1 .globl func_locvars .type func_locvars, @function func_locvars: .PROC .CALLINFO FRAME=0x1234,NO_CALLS,SAVE_SP,ENTRY_GR=3 .ENTRY .cfi_startproc copy %r3,%r1 copy %r30,%r3 .cfi_def_cfa_register r3 stwm %r1,0x1234(%r30) .cfi_adjust_cfa_offset 0x1234 ldo 64(%r3),%r30 ldwm -64(%r30),%r3 .cfi_def_cfa_register sp bv,n %r0(%r2) .cfi_endproc .EXIT .PROCEND .globl func_prologue .type func_prologue, @function func_prologue: .PROC .CALLINFO FRAME=64,CALLS,SAVE_RP,SAVE_SP,ENTRY_GR=3 .ENTRY .cfi_startproc #; This is not ABI-compliant but helps the test to run on both #; 32-bit and 64-bit targets stw %r2,-24(%r30) copy %r3,%r1 copy %r30,%r3 .cfi_def_cfa_register r3 .cfi_offset r2, -24 stwm %r1,64(%r30) bl func_locvars,%r2 nop ldw -20(%r3),%r2 ldo 64(%r3),%r30 ldwm -64(%r30),%r3 .cfi_def_cfa_register sp bv,n %r0(%r2) .cfi_endproc .EXIT .PROCEND .align 4 .globl main .type main, @function main: .PROC .CALLINFO CALLS .ENTRY #; tail call - simple function that doesn't touch the stack .cfi_startproc b func_prologue nop .cfi_endproc .EXIT .PROCEND