semihosting: move stubs out of stubs/
authorPaolo Bonzini <pbonzini@redhat.com>
Mon, 8 Apr 2024 15:53:24 +0000 (17:53 +0200)
committerPaolo Bonzini <pbonzini@redhat.com>
Thu, 18 Apr 2024 09:17:27 +0000 (11:17 +0200)
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 <pbonzini@redhat.com>
Message-ID: <20240408155330.522792-13-pbonzini@redhat.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
semihosting/meson.build
semihosting/stubs-all.c [new file with mode: 0644]
semihosting/stubs-system.c [new file with mode: 0644]
stubs/meson.build
stubs/semihost-all.c [deleted file]
stubs/semihost.c [deleted file]

index b07cbd980f2d87dafa92c311c9f4897aac801a90..34933e5a195bacb0c84e0294c95264b8cc66cd1e 100644 (file)
@@ -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 (file)
index 0000000..a2a1fc9
--- /dev/null
@@ -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 (file)
index 0000000..f26cbb7
--- /dev/null
@@ -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)
+{
+}
index 60e32d363fa49b7608aa610a8c0acf8ebd09c00b..84ecaa4daa1bdb653d50b87e9ef941568155b24b 100644 (file)
@@ -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 (file)
index a2a1fc9..0000000
+++ /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 (file)
index f26cbb7..0000000
+++ /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)
-{
-}