Search code examples
assemblymipsdwarfdebug-information

Specify MIPS floating-pointer registers in CFI directives


I'm trying to generate a call-frame info about saved FP register on MIPS:

  .text

  .cfi_startproc

  addiu $sp, $sp, -4
  .cfi_adjust_cfa_offset 4
  swc1 $f24, 4($sp)
  .cfi_rel_offset $f24, 0

  .cfi_endproc

but this results in

$ mipsel-linux-gnu-gcc ~/test.S -c
/home/yugr/test.S: Assembler messages:
/home/yugr/test.S:8: Error: bad register expression

How can I provide CFI info for FP register?


Solution

  • One simple alternative is to use the register's DWARF number explicitly. DWARF number of $fN is N+32 so for code above I'll need to do

      .cfi_rel_offset 56, 0