blob: 6bf0cb2b8cf1d5086ca3df2bdd8798523220e0e3 [file] [log] [blame]
#; $ as -o test.o gas-cfi-test.s && gcc -nostdlib -o test test.o
.text
#; func_locvars
#; - function with a space on the stack
#; allocated for local variables
.type func_locvars,@function
func_locvars:
.cfi_startproc
#; alocate space for local vars
suba.w #0x1234,%sp
.cfi_adjust_cfa_offset 0x1234
#; dummy body
moveq.l #1,%d0
#; release space of local vars and return
adda.w #0x1234,%sp
.cfi_adjust_cfa_offset -0x1234
rts
.cfi_endproc
#; func_prologue
#; - functions that begins with standard
#; prologue: "link %a6,#0"
.type func_prologue,@function
func_prologue:
.cfi_startproc
#; prologue, CFI is valid after
#; each instruction.
link %a6,#0
.cfi_def_cfa_offset 8
.cfi_offset a6,-8
.cfi_def_cfa_register a6
#; function body
jbsr func_locvars
addq.l #3, %d0
#; epilogue with valid CFI
#; (we're better than gcc :-)
unlk %a6
.cfi_def_cfa_register sp
rts
.cfi_endproc
#; main
#; - typical function
.type main,@function
main:
.cfi_startproc
#; only function body that doesn't
#; touch the stack at all.
jbsr func_prologue
#; return
rts
.cfi_endproc