From: Paolo Bonzini Date: Mon, 8 Apr 2024 15:53:24 +0000 (+0200) Subject: semihosting: move stubs out of stubs/ X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=5837db465053f57414f671448b370a4b29250bae;p=qemu.git semihosting: move stubs out of stubs/ Since the semihosting stubs are needed exactly when the Kconfig symbols are not needed, move them to semihosting/ and conditionalize them on CONFIG_SEMIHOSTING and/or CONFIG_SYSTEM_ONLY. Signed-off-by: Paolo Bonzini Message-ID: <20240408155330.522792-13-pbonzini@redhat.com> Signed-off-by: Paolo Bonzini --- diff --git a/semihosting/meson.build b/semihosting/meson.build index b07cbd980f..34933e5a19 100644 --- a/semihosting/meson.build +++ b/semihosting/meson.build @@ -9,5 +9,8 @@ specific_ss.add(when: ['CONFIG_SEMIHOSTING', 'CONFIG_SYSTEM_ONLY'], if_true: fil 'uaccess.c', )) +common_ss.add(when: ['CONFIG_SEMIHOSTING', 'CONFIG_SYSTEM_ONLY'], if_false: files('stubs-all.c')) +system_ss.add(when: ['CONFIG_SEMIHOSTING'], if_false: files('stubs-system.c')) + specific_ss.add(when: ['CONFIG_ARM_COMPATIBLE_SEMIHOSTING'], if_true: files('arm-compat-semi.c')) diff --git a/semihosting/stubs-all.c b/semihosting/stubs-all.c new file mode 100644 index 0000000000..a2a1fc9c6f --- /dev/null +++ b/semihosting/stubs-all.c @@ -0,0 +1,17 @@ +/* + * Semihosting Stubs for all targets + * + * Copyright (c) 2023 Linaro Ltd + * + * Stubs for all targets that don't actually do semihosting. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "semihosting/semihost.h" + +SemihostingTarget semihosting_get_target(void) +{ + return SEMIHOSTING_TARGET_AUTO; +} diff --git a/semihosting/stubs-system.c b/semihosting/stubs-system.c new file mode 100644 index 0000000000..f26cbb7c25 --- /dev/null +++ b/semihosting/stubs-system.c @@ -0,0 +1,65 @@ +/* + * Semihosting Stubs for system emulation + * + * Copyright (c) 2019 Linaro Ltd + * + * Stubs for system targets that don't actually do semihosting. + * + * SPDX-License-Identifier: GPL-2.0-or-later + */ + +#include "qemu/osdep.h" +#include "qemu/option.h" +#include "qemu/error-report.h" +#include "semihosting/semihost.h" + +/* Empty config */ +QemuOptsList qemu_semihosting_config_opts = { + .name = "", + .head = QTAILQ_HEAD_INITIALIZER(qemu_semihosting_config_opts.head), + .desc = { + { /* end of list */ } + }, +}; + +/* Queries to config status default to off */ +bool semihosting_enabled(bool is_user) +{ + return false; +} + +/* + * All the rest are empty subs. We could g_assert_not_reached() but + * that adds extra weight to the final binary. Waste not want not. + */ +void qemu_semihosting_enable(void) +{ +} + +int qemu_semihosting_config_options(const char *optstr) +{ + return 1; +} + +const char *semihosting_get_arg(int i) +{ + return NULL; +} + +int semihosting_get_argc(void) +{ + return 0; +} + +const char *semihosting_get_cmdline(void) +{ + return NULL; +} + +void semihosting_arg_fallback(const char *file, const char *cmd) +{ +} + +void qemu_semihosting_chardev_init(void) +{ +} diff --git a/stubs/meson.build b/stubs/meson.build index 60e32d363f..84ecaa4daa 100644 --- a/stubs/meson.build +++ b/stubs/meson.build @@ -55,9 +55,7 @@ if have_block or have_ga endif if have_system stub_ss.add(files('fw_cfg.c')) - stub_ss.add(files('semihost.c')) stub_ss.add(files('xen-hw-stub.c')) else stub_ss.add(files('qdev.c')) endif -stub_ss.add(files('semihost-all.c')) diff --git a/stubs/semihost-all.c b/stubs/semihost-all.c deleted file mode 100644 index a2a1fc9c6f..0000000000 --- a/stubs/semihost-all.c +++ /dev/null @@ -1,17 +0,0 @@ -/* - * Semihosting Stubs for all targets - * - * Copyright (c) 2023 Linaro Ltd - * - * Stubs for all targets that don't actually do semihosting. - * - * SPDX-License-Identifier: GPL-2.0-or-later - */ - -#include "qemu/osdep.h" -#include "semihosting/semihost.h" - -SemihostingTarget semihosting_get_target(void) -{ - return SEMIHOSTING_TARGET_AUTO; -} diff --git a/stubs/semihost.c b/stubs/semihost.c deleted file mode 100644 index f26cbb7c25..0000000000 --- a/stubs/semihost.c +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Semihosting Stubs for system emulation - * - * Copyright (c) 2019 Linaro Ltd - * - * Stubs for system targets that don't actually do semihosting. - * - * SPDX-License-Identifier: GPL-2.0-or-later - */ - -#include "qemu/osdep.h" -#include "qemu/option.h" -#include "qemu/error-report.h" -#include "semihosting/semihost.h" - -/* Empty config */ -QemuOptsList qemu_semihosting_config_opts = { - .name = "", - .head = QTAILQ_HEAD_INITIALIZER(qemu_semihosting_config_opts.head), - .desc = { - { /* end of list */ } - }, -}; - -/* Queries to config status default to off */ -bool semihosting_enabled(bool is_user) -{ - return false; -} - -/* - * All the rest are empty subs. We could g_assert_not_reached() but - * that adds extra weight to the final binary. Waste not want not. - */ -void qemu_semihosting_enable(void) -{ -} - -int qemu_semihosting_config_options(const char *optstr) -{ - return 1; -} - -const char *semihosting_get_arg(int i) -{ - return NULL; -} - -int semihosting_get_argc(void) -{ - return 0; -} - -const char *semihosting_get_cmdline(void) -{ - return NULL; -} - -void semihosting_arg_fallback(const char *file, const char *cmd) -{ -} - -void qemu_semihosting_chardev_init(void) -{ -}