Just because the kernel I'm using is not new enough.
[!MERGE] because this is specific to my environment and
would break others.
Signed-off-by: YAMAMOTO Takashi <yamamoto@midokura.com>
---
linux-user/main.c | 31 +++++++++++++++++++++++++++++++
1 file changed, 31 insertions(+)
diff --git a/linux-user/main.c b/linux-user/main.c
index be604a84f9..a3d8b7788f 100644
--- a/linux-user/main.c
+++ b/linux-user/main.c
@@ -726,7 +726,38 @@ int main(int argc, char **argv, char **envp)
/*
* get binfmt_misc flags
*/
+#if 0
preserve_argv0 = !!(qemu_getauxval(AT_FLAGS) & AT_FLAGS_PRESERVE_ARGV0);
+#else
+/*
+ * my kernel doesn't have the following commit. this is a crude workaroud.
+
+commit 2347961b11d4079deace3c81dceed460c08a8fc1
+Author: Laurent Vivier <laurent@vivier.eu>
+Date: Tue Jan 28 14:25:39 2020 +0100
+
+ binfmt_misc: pass binfmt_misc flags to the interpreter
+
+ It can be useful to the interpreter to know which flags are in use.
+
+ For instance, knowing if the preserve-argv[0] is in use would
+ allow to skip the pathname argument.
+
+ This patch uses an unused auxiliary vector, AT_FLAGS, to add a
+ flag to inform interpreter if the preserve-argv[0] is enabled.
+
+ Note by Helge Deller:
+ The real-world user of this patch is qemu-user, which needs to know
+ if it has to preserve the argv[0]. See Debian bug #970460.
+
+ Signed-off-by: Laurent Vivier <laurent@vivier.eu>
+ Reviewed-by: YunQiang Su <ysu@wavecomp.com>
+ URL: http://bugs.debian.org/970460
+ Signed-off-by: Helge Deller <deller@gmx.de>
+
+ */
+ preserve_argv0 = true;
+#endif
/*
* Manage binfmt-misc preserve-arg[0] flag
--
2.21.1 (Apple Git-122.3)