These fixes are to mitigate the issue(s) reported by Coverity and Peter
Maydell.
In v2:
- HEX_SYS_OPEN switched to lock_user() from lock_user_string()
- pulled in {open,read,close}dir from the a prev patch, changes since that v2:
* Replaces POSIX DIR, opendir(), readdir(), and closedir() with portable GLib
GDir APIs.
{un,}lock_user
* Replaces the fixed BUFSIZ path buffer and byte-by-byte guest reads with
lock_user_string()/unlock_user().
* Adds SemihostingDir, which stores the GDir plus enumeration state
* Synthesizes . and .., omitted by glib
* Writes inode zero instead of host d_ino, which GLib does not expose
portably.
* Limits returned names to 254 characters plus NUL, rather than depending on
host struct dirent::d_name size.
Prev opendir v2:
https://lore.kernel.org/qemu-devel/[email protected]/
v1:
https://lore.kernel.org/qemu-devel/[email protected]/
Brian Cain (3):
target/hexagon: fix semihosting OPEN filename handling
target/hexagon: fix semihosting STAT filename handling
target/hexagon: fix semihosting ACCESS filename handling
Matheus Tavares Bernardino (1):
target/hexagon: add directory semihosting operations
include/hw/hexagon/hexagon.h | 14 +-
hw/hexagon/hex-subsys.c | 32 ++--
target/hexagon/hexswi.c | 177 +++++++++++++++++-----
tests/functional/hexagon/test_systests.py | 11 ++
4 files changed, 186 insertions(+), 48 deletions(-)
--
2.34.1