mirror of https://github.com/xqemu/xqemu.git
linux-user: If loading fails, print error as string, not number
If the attempt to load the guest executable fails, print the error message as a string, not a number. This requires us to fix a couple of places in loader_exec() where we were returning -1 instead of a valid negative errno. The change allows us to drop the "Unknown binary format" message because the strerror-enhanced message is now a more self-explanatory "Error while loading $guest-binary: Exec format error". Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Riku Voipio <riku.voipio@linaro.org>
This commit is contained in:
parent
a05c640915
commit
885c1d10b8
|
@ -140,8 +140,9 @@ int loader_exec(const char * filename, char ** argv, char ** envp,
|
||||||
bprm->p = TARGET_PAGE_SIZE*MAX_ARG_PAGES-sizeof(unsigned int);
|
bprm->p = TARGET_PAGE_SIZE*MAX_ARG_PAGES-sizeof(unsigned int);
|
||||||
memset(bprm->page, 0, sizeof(bprm->page));
|
memset(bprm->page, 0, sizeof(bprm->page));
|
||||||
retval = open(filename, O_RDONLY);
|
retval = open(filename, O_RDONLY);
|
||||||
if (retval < 0)
|
if (retval < 0) {
|
||||||
return retval;
|
return -errno;
|
||||||
|
}
|
||||||
bprm->fd = retval;
|
bprm->fd = retval;
|
||||||
bprm->filename = (char *)filename;
|
bprm->filename = (char *)filename;
|
||||||
bprm->argc = count(argv);
|
bprm->argc = count(argv);
|
||||||
|
@ -165,8 +166,7 @@ int loader_exec(const char * filename, char ** argv, char ** envp,
|
||||||
retval = load_flt_binary(bprm,regs,infop);
|
retval = load_flt_binary(bprm,regs,infop);
|
||||||
#endif
|
#endif
|
||||||
} else {
|
} else {
|
||||||
fprintf(stderr, "Unknown binary format\n");
|
return -ENOEXEC;
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -3569,7 +3569,7 @@ int main(int argc, char **argv, char **envp)
|
||||||
ret = loader_exec(filename, target_argv, target_environ, regs,
|
ret = loader_exec(filename, target_argv, target_environ, regs,
|
||||||
info, &bprm);
|
info, &bprm);
|
||||||
if (ret != 0) {
|
if (ret != 0) {
|
||||||
printf("Error %d while loading %s\n", ret, filename);
|
printf("Error while loading %s: %s\n", filename, strerror(-ret));
|
||||||
_exit(1);
|
_exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue