This patchset implements support in QEMU for v2.0 of the Arm semihosting specification: https://developer.arm.com/docs/100863/latest/preface
Specifically, v2.0 has: * a mechanism for detection of optional extra features, which works by allowing the guest to open a magic file named ":semihosting-features" and read some feature flags from it * two defined extensions: - STDOUT_STDERR lets the guest separately open stdout and stderr via the ":tt" magic filename (v1.0 only allowed access to stdout) - EXIT_EXTENDED lets A32/T32 guests exit with a specified exit status (otherwise only available to A64 guests). This is something that people have been complaining about for a long time. (Technically some of the things we already support, like having an A64 semihosting interface at all, are also part of the v2.0 spec.) This patchset: * fixes some bugs relating to errnos in some cases * makes semihosting hand out its own filedescriptors rather than just passing out host fd numbers * abstracts out the fd-related semihosting calls so they indirect via a function table based on the type of the fd * adds a new type of fd representing the magic file ":semihosting-features" which is used for feature-detection * implements both of the extensions defined by the v2.0 spec I've tested this by improving my semihosting test suite: https://git.linaro.org/people/peter.maydell/semihosting-tests.git/ (if people have other guest binaries that make much use of semihosting then testing would certainly be welcome.) thanks -- PMM Peter Maydell (13): target/arm/arm-semi: Capture errno in softmmu version of set_swi_errno() target/arm/arm-semi: Always set some kind of errno for failed calls target/arm/arm-semi: Make semihosting code hand out its own file descriptors target/arm/arm-semi: clean up TaskState* usage in non-user-only code target/arm/arm-semi: Factor out implementation of SYS_CLOSE target/arm/arm-semi: Factor out implementation of SYS_WRITE target/arm/arm-semi: Factor out implementation of SYS_READ target/arm/arm-semi: Factor out implementation of SYS_ISTTY target/arm/arm-semi: Factor out implementation of SYS_SEEK target/arm/arm-semi: Factor out implementation of SYS_FLEN target/arm/arm-semi: Implement support for semihosting feature detection target/arm/arm-semi: Implement SH_EXT_STDOUT_STDERR extension target/arm/arm-semi: Implement SH_EXT_EXIT_EXTENDED extension target/arm/arm-semi.c | 613 +++++++++++++++++++++++++++++++++++------- 1 file changed, 513 insertions(+), 100 deletions(-) -- 2.20.1