blob: bb43227f0aca69da214873b426aa070192224f80 [file] [log] [blame] [view]
# Renode TLib Workflow (Placeholder)
Commands here are subject to change.
* [Building](#building)
* [Running Qemu without debugging](#running-qemu-without-debugging)
* [Running Qemu with debugging](#running-qemu-with-debugging)
* [Running gdb for Qemu](#running-gdb-for-qemu)
* [Run gdb on the target elf](#run-gdb-on-the-target-elf)
* [Running gdb for Renode](#running-gdb-for-renode)
* [Setup .gdbinit file](#setup-.gdbinit-file)
* [Running Renode](#running-renode)
## Building
```
m springbok
m qemu_clean qemu
m renode_clean renode
```
Note: as we continually make changes to renode, will have to `m renode_clean renode` to apply updates:
`m renode_clean renode`
## Running Qemu without debugging
```
qemu_sim_springbok ./out/springbok/test_vsetvl/test_vsetvl.elf
```
## Running Qemu with debugging
```
qemu_sim_springbok ./out/springbok/test_vsetvl/test_vsetvl.elf -s -S
```
## Running gdb for Qemu
### Run gdb on the target elf
Note, same as for Renode but with `target remote :1234`
```sh
riscv32-unknown-elf-gdb out/springbok/test_vsetvl/test_vsetvl.elf \
-ex "target remote :1234" \
-ex "layout split" \
-ex "b main" \
-ex "c"
```
## Running gdb for Renode
```sh
riscv32-unknown-elf-gdb out/springbok/test_vsetvl/test_vsetvl.elf \
-ex "target remote :3333" \
-ex "monitor start" \
-ex "sysbus.cpu2 IsHalted False" \
-ex "layout split" \
-ex "b main" \
-ex "c"
```
### Setup .gdbinit file
Save the following to `${HOME}/.gdbinit`:
```
set auto-load safe-path /
handle SIGXCPU SIG33 SIG35 SIG36 SIG37 SIG38 SIGPWR nostop noprint
define mono_backtrace
select-frame 0
set $i = 0
while ($i < $arg0)
set $foo = (char*) mono_pmip ($pc)
if ($foo)
printf "#%d %p in %s\n", $i, $pc, $foo
else
frame
end
up-silently
set $i = $i + 1
end
end
define mono_stack
set $mono_thread = mono_thread_current ()
if ($mono_thread == 0x00)
printf "No mono thread associated with this thread\n"
else
set $ucp = malloc (sizeof (ucontext_t))
call (void) getcontext ($ucp)
call (void) mono_print_thread_dump ($ucp)
call (void) free ($ucp)
end
end
```
## Running Renode
```sh
gdb -ex "set breakpoint pending on" \
-ex "set pagination off" \
-ex "b helper_vsetvl" \
-ex "layout split" \
-ex "r" \
--args mono \
--debug out/host/renode/Renode.exe \
-e "\$bin=@out/springbok/test_vsetvl/test_vsetvl.elf; i @sim/config/springbok.resc;" \
--disable-xwt \
--console
```