Comments (8)
We don't have an official gdb port yet, so these numbers probably aren't finalized yet.
GCC uses 0-31 for the integer registers, 32-63 for the FP registers, and then 64 is the alternate return address column used for the return address in signal handlers. GCC does not support CSRs. GDB uses 0-31 for the integer registers, 32 for the pc, 33-64 for the FP registers, and 65+ are CSRs, e.g. ustatus is 65.
That leads to the obvious question of how can this work if gcc and gdb are using different numbers for FP registers. I don't know if it does, but I don't have any easy way to check. The gdb port I'm looking at is not the one that was just submitted upstream a couple of days ago though, so it is possible that gdb may have been changed already, and this might have been fixed already. If gdb isn't already fixed, and if this isn't already working some how, then at some point we will have to change gcc and/or gdb to make this work.
So you should not make any assumptions at this time as to what the dwarf register mapping is.
from riscv-elf-psabi-doc.
Isn't the DWARF register mapping already baked into the ABI because of C++ exception handling?
from riscv-elf-psabi-doc.
Yes, changing gcc would cause a lot more trouble than changing gdb, because changing gcc would break stuff like C++ exception handling.
from riscv-elf-psabi-doc.
OK, so given that the register mapping in GCC is already part of the C++ ABI, using that in Mono sounds reasonable enough, at least until things stabilize.
By the way, could you point me to the relevant GCC/GDB sources that define those register mappings for RISC-V?
from riscv-elf-psabi-doc.
from riscv-elf-psabi-doc.
Perfect, thank you!
from riscv-elf-psabi-doc.
GDB defines an enum in riscv-tdep.h.
/* RiscV DWARF register numbers. */
enum
{
RISCV_DWARF_REGNUM_X0 = 0,
RISCV_DWARF_REGNUM_X31 = 31,
RISCV_DWARF_REGNUM_F0 = 32,
RISCV_DWARF_REGNUM_F31 = 63,
};
and in riscv-tdep.c has a function riscv_dwarf_reg_to_regnum that does the conversion from dwarf register numbers to gdb internal register numbers, though for now these happen to be the same numbers.
from riscv-elf-psabi-doc.
Fixed.
from riscv-elf-psabi-doc.
Related Issues (20)
- Specify relocation overflow checks HOT 1
- Specify a platform reserved register HOT 20
- Should calling convention also define ptrdiff_t? HOT 1
- Should we use lw/sw in push pop when we used ILP32, whether it's RV32 or RV64 HOT 3
- Operation semantics of __bf16 datatype HOT 2
- representation of GNU C fixed-size vectors HOT 4
- Deprecate R_RISCV_RVC_LUI? HOT 4
- Define GOT-Relative data relocation HOT 8
- Embedding R_RISCV_RELAX to another relocations HOT 7
- Define gp(x3) as global VLENB HOT 4
- Bitfield integer calling convention garbled
- Calling convention uses RV64GQ without definition or reference HOT 3
- Calling convention description of va_list et al. are unclear HOT 2
- Interpretation of floating-point types
- Linux ABI for Pointer Masking HOT 19
- New ABI for stack layout and frame pointer scheme HOT 4
- Change branch from "master" to "main" HOT 1
- Add CREL support HOT 3
- Add RELR support HOT 6
- Question about medlow's single 2 GiB address range HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from riscv-elf-psabi-doc.