Closed 709924470 closed 1 year ago
Yep, that's definitely a bug. Thanks for catching it + sending in the PR!
I'll cut a new gdbstub
release shortly includes this fix (hopefully today, and def in the next day or two).
Seems it's been around from the initial implementation in #82, oops 😅
gdbstub 0.6.4 is now published on crates.io, and includes this fix
Description
Hi, I noticed my binary file isn't fully loaded into the target and I could not find anything went wrong with my side of code.
So I investigated alittle on how the X command packets are treated, and discovered the no. of parts supposed to be splited into was unspecified(as you can see in the original code).
The bug:(
val = 104
is the length of the variableval
, thetrace!
was removed before commit)This PR fixes that by adding the no. of parts should be splitted into, as you can see in the commit.
After fix:
API Stability
Checklist
rustdoc
formatting looks good (viacargo doc
)examples/armv4t
withRUST_LOG=trace
+ any relevant GDB output under the "Validation" section below./example_no_std/check_size.sh
before/after changes under the "Validation" section belowValidation
GDB output
``` (gdb) info mem Using memory regions provided by the target. Num Enb Low Addr High Addr Attrs 0 y 0x00000000 0x100000000 rw nocache ```armv4t output
``` Finished dev [unoptimized + debuginfo] target(s) in 0.02s Running `target/debug/examples/armv4t` loading section ".text" into memory from [0x55550000..0x55550078] Setting PC to 0x55550000 Waiting for a GDB connection on "127.0.0.1:9001"... Debugger connected from 127.0.0.1:45720 TRACE gdbstub::protocol::recv_packet > <-- + TRACE gdbstub::protocol::recv_packet > <-- $qSupported:multiprocess+;swbreak+;hwbreak+;qRelocInsn+;fork-events+;vfork-events+;exec-events+;vContSupported+;QThreadEvents+;no-resumed+;xmlRegisters=i386#6a TRACE gdbstub::protocol::response_writer > --> $PacketSize=1000;vContSupported+;multiprocess+;QStartNoAckMode+;ReverseContinue+;ReverseStep+;QDisableRandomization+;QEnvironmentHexEncoded+;QEnvironmentUnset+;QEnvironmentReset+;QStartupWithShell+;QSetWorkingDir+;swbreak+;hwbreak+;QCatchSyscalls+;qXfer:features:read+;qXfer:memory-map:read+;qXfer:exec-file:read+;qXfer:auxv:read+#fa TRACE gdbstub::protocol::recv_packet > <-- + TRACE gdbstub::protocol::recv_packet > <-- $vMustReplyEmpty#3a INFO gdbstub::stub::core_impl > Unknown command: Ok("vMustReplyEmpty") TRACE gdbstub::protocol::response_writer > --> $#00 TRACE gdbstub::protocol::recv_packet > <-- + TRACE gdbstub::protocol::recv_packet > <-- $QStartNoAckMode#b0 TRACE gdbstub::protocol::response_writer > --> $OK#9a TRACE gdbstub::protocol::recv_packet > <-- + TRACE gdbstub::protocol::recv_packet > <-- $Hgp0.0#ad TRACE gdbstub::protocol::response_writer > --> $OK#9a TRACE gdbstub::protocol::recv_packet > <-- $qXfer:features:read:target.xml:0,ffb#79 TRACE gdbstub::protocol::response_writer > --> $mBefore/After `./example_no_std/check_size.sh` output
### Before ``` target/release/gdbstub-nostd : section size addr .interp 28 792 .note.gnu.property 32 824 .note.gnu.build-id 36 856 .note.ABI-tag 32 892 .gnu.hash 36 928 .dynsym 360 968 .dynstr 204 1328 .gnu.version 30 1532 .gnu.version_r 64 1568 .rela.dyn 408 1632 .init 23 4096 .plt 16 4128 .plt.got 8 4144 .text 14714 4160 .fini 9 18876 .rodata 946 20480 .eh_frame_hdr 260 21428 .eh_frame 1340 21688 .init_array 8 28072 .fini_array 8 28080 .dynamic 448 28088 .got 136 28536 .data 8 28672 .bss 8 28680 .comment 39 0 Total 19201 ``` ### After ``` target/release/gdbstub-nostd : section size addr .interp 28 792 .note.gnu.property 32 824 .note.gnu.build-id 36 856 .note.ABI-tag 32 892 .gnu.hash 36 928 .dynsym 360 968 .dynstr 204 1328 .gnu.version 30 1532 .gnu.version_r 64 1568 .rela.dyn 408 1632 .init 23 4096 .plt 16 4128 .plt.got 8 4144 .text 14714 4160 .fini 9 18876 .rodata 946 20480 .eh_frame_hdr 260 21428 .eh_frame 1340 21688 .init_array 8 28072 .fini_array 8 28080 .dynamic 448 28088 .got 136 28536 .data 8 28672 .bss 8 28680 .comment 39 0 Total 19201 ```