@@ -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
@@ -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 = ®s1;
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) {
@@ -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;
@@ -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);
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 <sw@weilnetz.de> --- include/qemu/osdep.h | 12 ------------ linux-user/main.c | 3 +-- util/getauxval.c | 9 ++++++++- vl.c | 7 +++---- 4 files changed, 12 insertions(+), 19 deletions(-)