From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:34701) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VWpWv-0000Zs-Hf for qemu-devel@nongnu.org; Thu, 17 Oct 2013 11:30:35 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VWpWp-0002DW-JY for qemu-devel@nongnu.org; Thu, 17 Oct 2013 11:30:29 -0400 Received: from mail-qe0-x22f.google.com ([2607:f8b0:400d:c02::22f]:46094) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VWpWp-0002DP-FV for qemu-devel@nongnu.org; Thu, 17 Oct 2013 11:30:23 -0400 Received: by mail-qe0-f47.google.com with SMTP id b4so710178qen.6 for ; Thu, 17 Oct 2013 08:30:23 -0700 (PDT) Sender: Richard Henderson From: Richard Henderson Date: Thu, 17 Oct 2013 08:29:41 -0700 Message-Id: <1382023781-26323-7-git-send-email-rth@twiddle.net> In-Reply-To: <1382023781-26323-1-git-send-email-rth@twiddle.net> References: <1382023781-26323-1-git-send-email-rth@twiddle.net> Subject: [Qemu-devel] [PATCH v3 6/6] linux-user: Use qemu_getauxval for AT_EXECFD List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: peter.maydell@linaro.org Signed-off-by: Richard Henderson --- linux-user/main.c | 32 ++++++-------------------------- 1 file changed, 6 insertions(+), 26 deletions(-) diff --git a/linux-user/main.c b/linux-user/main.c index 50db755..54f71fe 100644 --- a/linux-user/main.c +++ b/linux-user/main.c @@ -3663,26 +3663,6 @@ static int parse_args(int argc, char **argv) return optind; } -static int get_execfd(char **envp) -{ - typedef struct { - long a_type; - long a_val; - } auxv_t; - auxv_t *auxv; - - while (*envp++ != NULL) { - ; - } - - for (auxv = (auxv_t *)envp; auxv->a_type != AT_NULL; auxv++) { - if (auxv->a_type == AT_EXECFD) { - return auxv->a_val; - } - } - return -1; -} - int main(int argc, char **argv, char **envp) { struct target_pt_regs regs1, *regs = ®s1; @@ -3876,13 +3856,13 @@ int main(int argc, char **argv, char **envp) env->opaque = ts; task_settid(ts); - execfd = get_execfd(envp); - if (execfd < 0) { + execfd = qemu_getauxval(AT_EXECFD); + if (execfd == 0) { execfd = open(filename, O_RDONLY); - } - if (execfd < 0) { - printf("Error while loading %s: %s\n", filename, strerror(-execfd)); - _exit(1); + if (execfd < 0) { + printf("Error while loading %s: %s\n", filename, strerror(errno)); + _exit(1); + } } ret = loader_exec(execfd, filename, target_argv, target_environ, regs, -- 1.8.3.1