Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Internally the 1-byte transfers are handled in 3 phases: 1. read/write 8-bit chunks from every unaligned addresses until the first aligned address is reached, 2. read/write 32-bit chunks from all aligned addresses, 3. read/write 8-bit chunks from the remaining unaligned addresses. Size of the first unaligned read/write is set to the result of address (4-byte) alignment check and can be either 1, 2, or 3 bytes (the value of `unaligned_count` calculated as `addr & 0x3`). This is incorrect and every transfer with the requested size smaller than `unaligned_count` is terminated with the following error: Unhandled exception in handle_message (b'm'): result size (3) != requested size (1) [gdbserver] Skip the first unaligned transfer if the requested size is smaller than the result of the address alignment check. Handle the whole request in the second, unaligned read/write.
- Loading branch information