Code Monkey home page Code Monkey logo

Comments (8)

jim-wilson avatar jim-wilson commented on July 20, 2024

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.

aswaterman avatar aswaterman commented on July 20, 2024

Isn't the DWARF register mapping already baked into the ABI because of C++ exception handling?

from riscv-elf-psabi-doc.

jim-wilson avatar jim-wilson commented on July 20, 2024

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.

alexrp avatar alexrp commented on July 20, 2024

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.

jim-wilson avatar jim-wilson commented on July 20, 2024

from riscv-elf-psabi-doc.

alexrp avatar alexrp commented on July 20, 2024

Perfect, thank you!

from riscv-elf-psabi-doc.

jim-wilson avatar jim-wilson commented on July 20, 2024

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.

jim-wilson avatar jim-wilson commented on July 20, 2024

Fixed.

from riscv-elf-psabi-doc.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.