qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH] osdep: Get environment pointer from global variable


From: Stefan Weil
Subject: [Qemu-devel] [PATCH] osdep: Get environment pointer from global variable
Date: Sat, 7 Dec 2013 14:14:12 +0100

Linux provides a global variable __environ, so it is not necessary to
use envp from main and propagate it via qemu_init_auxval.

Signed-off-by: Stefan Weil <address@hidden>
---
 include/qemu/osdep.h |   12 ------------
 linux-user/main.c    |    3 +--
 util/getauxval.c     |    9 ++++++++-
 vl.c                 |    7 +++----
 4 files changed, 12 insertions(+), 19 deletions(-)

diff --git a/include/qemu/osdep.h b/include/qemu/osdep.h
index b3e2b6d..6191d5a 100644
--- a/include/qemu/osdep.h
+++ b/include/qemu/osdep.h
@@ -228,16 +228,4 @@ unsigned long qemu_getauxval(unsigned long type);
 static inline unsigned long qemu_getauxval(unsigned long type) { return 0; }
 #endif
 
-/**
- * qemu_init_auxval:
- * @envp: the third argument to main
- *
- * If supported and required, locate the auxiliary vector at program startup.
- */
-#if defined(CONFIG_GETAUXVAL) || !defined(__linux__)
-static inline void qemu_init_auxval(char **envp) { }
-#else
-void qemu_init_auxval(char **envp);
-#endif
-
 #endif
diff --git a/linux-user/main.c b/linux-user/main.c
index 54f71fe..7b8912d 100644
--- a/linux-user/main.c
+++ b/linux-user/main.c
@@ -3663,7 +3663,7 @@ static int parse_args(int argc, char **argv)
     return optind;
 }
 
-int main(int argc, char **argv, char **envp)
+int main(int argc, char **argv)
 {
     struct target_pt_regs regs1, *regs = &regs1;
     struct image_info info1, *info = &info1;
@@ -3681,7 +3681,6 @@ int main(int argc, char **argv, char **envp)
 
     module_call_init(MODULE_INIT_QOM);
 
-    qemu_init_auxval(envp);
     qemu_cache_utils_init();
 
     if ((envlist = envlist_create()) == NULL) {
diff --git a/util/getauxval.c b/util/getauxval.c
index 476c883..f1d84af 100644
--- a/util/getauxval.c
+++ b/util/getauxval.c
@@ -48,8 +48,10 @@ typedef struct {
 
 static const ElfW_auxv_t *auxv;
 
-void qemu_init_auxval(char **envp)
+static void qemu_init_auxval(void)
 {
+    char **envp = __environ;
+
     /* The auxiliary vector is located just beyond the initial environment.  */
     while (*envp++ != NULL) {
         continue;
@@ -59,6 +61,11 @@ void qemu_init_auxval(char **envp)
 
 unsigned long qemu_getauxval(unsigned long type)
 {
+    if (!auxv) {
+        /* Try to find the auxiliary vector. */
+        qemu_init_auxval();
+    }
+
     /* If we were able to find the auxiliary vector, use it.  */
     if (auxv) {
         const ElfW_auxv_t *a;
diff --git a/vl.c b/vl.c
index e2c94bf..b17fa2e 100644
--- a/vl.c
+++ b/vl.c
@@ -96,10 +96,10 @@
 #ifdef CONFIG_SDL
 #if defined(__APPLE__) || defined(main)
 #include <SDL.h>
-int qemu_main(int argc, char **argv, char **envp);
+int qemu_main(int argc, char **argv);
 int main(int argc, char **argv)
 {
-    return qemu_main(argc, argv, NULL);
+    return qemu_main(argc, argv);
 }
 #undef main
 #define main qemu_main
@@ -2816,7 +2816,7 @@ static int object_create(QemuOpts *opts, void *opaque)
     return 0;
 }
 
-int main(int argc, char **argv, char **envp)
+int main(int argc, char **argv)
 {
     int i;
     int snapshot, linux_boot;
@@ -2894,7 +2894,6 @@ int main(int argc, char **argv, char **envp)
     init_clocks();
     rtc_clock = QEMU_CLOCK_HOST;
 
-    qemu_init_auxval(envp);
     qemu_cache_utils_init();
 
     QLIST_INIT (&vm_change_state_head);
-- 
1.7.10.4




reply via email to

[Prev in Thread] Current Thread [Next in Thread]