55 lines
2.1 KiB
Diff
55 lines
2.1 KiB
Diff
From ff7918646e3c696d13732fb22f032d7d78c34fe1 Mon Sep 17 00:00:00 2001
|
|
From: tangbinzy <tangbin_yewu@cmss.chinamobile.com>
|
|
Date: Mon, 6 Nov 2023 08:15:13 +0000
|
|
Subject: [PATCH] semihosting/config: Merge --semihosting-config option groups
|
|
mainline inclusion commit 90c072e063737e9e8f431489bbd334452f89056e category:
|
|
bugfix
|
|
|
|
---------------------------------------------------------------
|
|
|
|
Currently we mishandle the --semihosting-config option if the
|
|
user specifies it on the command line more than once. For
|
|
example with:
|
|
--semihosting-config target=gdb --semihosting-config arg=foo,arg=bar
|
|
|
|
the function qemu_semihosting_config_options() is called twice, once
|
|
for each argument. But that function expects to be called only once,
|
|
and it always unconditionally sets the semihosting.enabled,
|
|
semihost_chardev and semihosting.target variables. This means that
|
|
if any of those options were set anywhere except the last
|
|
--semihosting-config option on the command line, those settings are
|
|
ignored. In the example above, 'target=gdb' in the first option is
|
|
overridden by an implied default 'target=auto' in the second.
|
|
|
|
The QemuOptsList machinery has a flag for handling this kind of
|
|
"option group is setting global state": by setting
|
|
.merge_lists = true;
|
|
we make the machinery merge all the --semihosting-config arguments
|
|
the user passes into a single set of options and call our
|
|
qemu_semihosting_config_options() just once.
|
|
|
|
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
|
|
Reviewed-by: Luc Michel <luc@lmichel.fr>
|
|
Message-id: 20220526190053.521505-3-peter.maydell@linaro.org
|
|
|
|
Signed-off-by: tangbinzy <tangbin_yewu@cmss.chinamobile.com>
|
|
---
|
|
semihosting/config.c | 1 +
|
|
1 file changed, 1 insertion(+)
|
|
|
|
diff --git a/semihosting/config.c b/semihosting/config.c
|
|
index 137171b717..ba3e310a61 100644
|
|
--- a/semihosting/config.c
|
|
+++ b/semihosting/config.c
|
|
@@ -27,6 +27,7 @@
|
|
|
|
QemuOptsList qemu_semihosting_config_opts = {
|
|
.name = "semihosting-config",
|
|
+ .merge_lists = true,
|
|
.implied_opt_name = "enable",
|
|
.head = QTAILQ_HEAD_INITIALIZER(qemu_semihosting_config_opts.head),
|
|
.desc = {
|
|
--
|
|
2.27.0
|
|
|