[Bug gas/31733] [RISCV] Generating a wrong initial CFI instruction

2024-05-19 Thread cvs-commit at gcc dot gnu.org
https://sourceware.org/bugzilla/show_bug.cgi?id=31733

--- Comment #1 from Sourceware Commits  ---
The master branch has been updated by Nelson Chu :

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=3ce12d6d4adb0e3dbdf90628a3e0d37a6ea21512

commit 3ce12d6d4adb0e3dbdf90628a3e0d37a6ea21512
Author: Sung-hun Kim 
Date:   Mon May 13 17:11:49 2024 +0900

RISC-V: PR31733, Change initial CFI operation from DW_CFA_def_cfa_register
to DW_CFA_def_cfa

The DWARF specification (especially, DWARF4 and 5 [1,2]) states that
DW_CFA_def_cfa_register cannot be used as the first CFI operation.
It said DW_CFA_def_cfa_register as follows:

  ... This operation is valid only if the current CFA rule is defined
  to use a register and offset.

So, DW_CFA_def_cfa_register can be used after that other definition
operation such as DW_CFA_def_cfa is called. However, the current gas
code emits DW_CFA_def_cfa_register as an initial CFI operation for RISCV.

In the libgcc, the unwinding function does not care about it, so it can
unwind the call stack. However, on the third party library such as
libunwindstack in Android, it causes a fatal error.

This patch changes the initial CFI operation to DW_CFA_def_cfa with
offset 0. It works as same as the previous one, but it does not have
any limitation so it satisfies the DWARF spec. This change resolves
the compatibility issue while preserving the original behaviour.

[1] DWARF4 specification, https://dwarfstd.org/doc/DWARF4.pdf
[2] DWARF5 specification, https://dwarfstd.org/doc/DWARF5.pdf

Signed-off-by: Sung-hun Kim 
Reviewed-By: Andrew Burgess 
Approved-By: Nelson Chu 

gas/
PR 31733
config/tc-riscv.c (riscv_cfi_frame_initial_instructions): Use
DW_CFA_def_cfa rather than DW_CFA_def_cfa_register.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


[Bug gas/31733] [RISCV] Generating a wrong initial CFI instruction

2024-05-13 Thread dongkyun.s at samsung dot com
https://sourceware.org/bugzilla/show_bug.cgi?id=31733

dongkyun.s at samsung dot com changed:

   What|Removed |Added

 CC||dongkyun.s at samsung dot com

-- 
You are receiving this mail because:
You are on the CC list for the bug.