[PATCH 0/9] DWARF Register Number Handling, Including RISC-V CSRs
Palmer Dabbelt via binutils
binutils@sourceware.org
Fri Nov 22 22:33:00 GMT 2019
On Fri, 22 Nov 2019 04:10:24 PST (-0800), andrew.burgess@embecosm.com wrote:
> The aim of this series is to provide support for using RISC-V CSRs
> (Control Status Registers) in gas .cfi directives. The problem with
> this is that the DWARF register numbers for these registers are rather
> large, in the range 4096 - 8191, and the number space is only sparsely
> populated. The existing code for mapping DWARF register numbers to
> names is not really setup to handle this situation, and additionally,
> the default DWARF CIE version that gas uses only has a single byte
> return address column, which is overflowed by these CSRs.
>
> This series starts with some general code clean up (I think) in the
> area around DWARF register number handling, introduces a new mechanism
> for mapping from DWARF register numbers to names, and then adds
> support for RISC-V CSRs. Finally I make DWARF CIE version 3 the
> default for RISC-V, this should be largely invisible to consumers,
> except the return address column is now uleb128 instead of ubyte.
Thanks! Aside from that minor nit about naming unknown CSRs this looks good to
me.
>
> ---
>
> Andrew Burgess (9):
> gas/riscv: Remove unneeded structure
> binutils: Be more forgiving of targets with large numbers of registers
> binutils: Rename init_dwarf_regnames
> binutils: Add a new function to initialise DWARF register name state
> binutils: Make some functions static in dwarf.c
> binutils: Make DWARF register name lookup be via a function pointer
> binutils/gas/riscv: Add DWARF register numbers for CSRs
> gas: Check for overflow on return column in version 1 CIE DWARF
> gas/riscv: Produce version 3 DWARF CIE by default
>
> binutils/ChangeLog | 59 ++++++
> binutils/dwarf.c | 143 ++++++++++++--
> binutils/dwarf.h | 10 +-
> binutils/objdump.c | 40 +---
> binutils/readelf.c | 2 +-
> gas/ChangeLog | 30 +++
> gas/as.c | 10 +-
> gas/config/tc-riscv.c | 18 +-
> gas/dw2gencfi.c | 7 +-
> gas/dwarf2dbg.c | 11 ++
> gas/testsuite/gas/riscv/cie-rtn-col-1.d | 3 +
> gas/testsuite/gas/riscv/cie-rtn-col-3.d | 17 ++
> gas/testsuite/gas/riscv/cie-rtn-col.s | 3 +
> gas/testsuite/gas/riscv/csr-dw-regnums.d | 265 ++++++++++++++++++++++++++
> gas/testsuite/gas/riscv/csr-dw-regnums.s | 255 +++++++++++++++++++++++++
> gas/testsuite/gas/riscv/default-cie-version.d | 15 ++
> gas/testsuite/gas/riscv/default-cie-version.s | 2 +
> 17 files changed, 815 insertions(+), 75 deletions(-)
> create mode 100644 gas/testsuite/gas/riscv/cie-rtn-col-1.d
> create mode 100644 gas/testsuite/gas/riscv/cie-rtn-col-3.d
> create mode 100644 gas/testsuite/gas/riscv/cie-rtn-col.s
> create mode 100644 gas/testsuite/gas/riscv/csr-dw-regnums.d
> create mode 100644 gas/testsuite/gas/riscv/csr-dw-regnums.s
> create mode 100644 gas/testsuite/gas/riscv/default-cie-version.d
> create mode 100644 gas/testsuite/gas/riscv/default-cie-version.s
More information about the Binutils
mailing list