Amusingly Miroslav and myself hit this issue at the same time. Note now that "config-devices.h" exists (commit 6c22ea9d83) I could use #include "config-devices.h" to implement Alex's suggestion to avoid a stub: https://lists.gnu.org/archive/html/qemu-devel/2019-06/msg03607.html
Some know (arch-specific) limitations are: - MIPS ITU is accessed by coprocessor instr (ISA feature) - MIPS timer is accessed by coprocessor instr (ISA feature) - MIPS semihosting (ISA feature?) - ARM semihosting (ISA feature?) - ARMv7 NVIC (device) This series attempt to fix this the most trivial way, adding stubs for unreachable code. Since v1: https://lists.gnu.org/archive/html/qemu-devel/2019-05/msg07267.html - Always enable semihosting on linux-user $ git backport-diff -u v1 Key: [----] : patches are identical [####] : number of functional differences between upstream/downstream patch [down] : patch is downstream-only (new) The flags [FC] indicate (F)unctional and (C)ontextual differences, respectively 001/5:[down] 'target/arm: Always enable CONFIG_SEMIHOSTING' 002/5:[down] 'target/mips: Always enable CONFIG_SEMIHOSTING' 003/5:[down] 'hw/semihosting: Allow this feature to be disabled' 004/5:[0004] [FC] 'target/arm: Add stubs to build with CONFIG_SEMIHOSTING disabled' 005/5:[0005] [FC] 'target/mips: Add stubs to build with CONFIG_SEMIHOSTING disabled' Philippe Mathieu-Daudé (5): target/arm: Always enable CONFIG_SEMIHOSTING target/mips: Always enable CONFIG_SEMIHOSTING hw/semihosting: Allow this feature to be disabled target/arm: Add stubs to build with CONFIG_SEMIHOSTING disabled target/mips: Add stubs to build with CONFIG_SEMIHOSTING disabled default-configs/aarch64-linux-user-common.mak | 4 ++++ default-configs/aarch64-linux-user.mak | 2 ++ default-configs/aarch64_be-linux-user.mak | 2 ++ default-configs/arm-linux-user-common.mak | 4 ++++ default-configs/arm-linux-user.mak | 2 ++ default-configs/arm-softmmu.mak | 4 +++- default-configs/armeb-linux-user.mak | 2 ++ default-configs/mips-linux-user-common.mak | 4 ++++ default-configs/mips-linux-user.mak | 2 ++ default-configs/mips-softmmu-common.mak | 2 +- default-configs/mips64-linux-user.mak | 2 ++ default-configs/mips64el-linux-user.mak | 2 ++ default-configs/mipsel-linux-user.mak | 2 ++ default-configs/mipsn32-linux-user.mak | 2 ++ default-configs/mipsn32el-linux-user.mak | 2 ++ hw/semihosting/Kconfig | 3 ++- target/arm/Makefile.objs | 3 ++- target/arm/arm-semi-stubs.c | 21 ++++++++++++++++++ target/mips/Makefile.objs | 3 ++- target/mips/mips-semi-stubs.c | 22 +++++++++++++++++++ 20 files changed, 85 insertions(+), 5 deletions(-) create mode 100644 default-configs/aarch64-linux-user-common.mak create mode 100644 default-configs/arm-linux-user-common.mak create mode 100644 default-configs/mips-linux-user-common.mak create mode 100644 target/arm/arm-semi-stubs.c create mode 100644 target/mips/mips-semi-stubs.c -- 2.20.1