[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-ppc] [PATCH 4/4] spapr: add more details error description of
From: |
Alexander Graf |
Subject: |
Re: [Qemu-ppc] [PATCH 4/4] spapr: add more details error description of why load_elf() failed |
Date: |
Fri, 31 Jan 2014 08:20:56 +0100 |
On 22.01.2014, at 06:20, Alexey Kardashevskiy <address@hidden> wrote:
> This makes use of new error codes which load_elf() can return.
>
> Signed-off-by: Alexey Kardashevskiy <address@hidden>
> ---
> hw/ppc/spapr.c | 17 ++++++++++++++---
> 1 file changed, 14 insertions(+), 3 deletions(-)
>
> diff --git a/hw/ppc/spapr.c b/hw/ppc/spapr.c
> index 851ce4b..18a4872 100644
> --- a/hw/ppc/spapr.c
> +++ b/hw/ppc/spapr.c
> @@ -1306,15 +1306,26 @@ static void ppc_spapr_init(QEMUMachineInitArgs *args)
>
> kernel_size = load_elf(kernel_filename, translate_kernel_address,
> NULL,
> NULL, &lowaddr, NULL, 1, ELF_MACHINE, 0);
> - if (kernel_size < 0) {
> + if (kernel_size == ELF_LOAD_WRONG_ENDIAN) {
> kernel_size = load_elf(kernel_filename,
> translate_kernel_address, NULL,
> NULL, &lowaddr, NULL, 0, ELF_MACHINE, 0);
> kernel_le = kernel_size > 0;
> }
> if (kernel_size < 0) {
> - fprintf(stderr, "qemu: could not load kernel '%s'\n",
> - kernel_filename);
> + switch (kernel_size) {
> + case ELF_LOAD_WRONG_ARCH:
> + fprintf(stderr, "qemu: could not load kernel '%s' from
> incompatible arhitecture\n",
> + kernel_filename);
> + break;
> + case ELF_LOAD_NOT_ELF:
> + fprintf(stderr, "qemu: '%s' is not ELF\n", kernel_filename);
These exit code to string translation should be a common helper, similar to
strerror(). Apart from that I like the patch set.
Alex
> + break;
> + default:
> + fprintf(stderr, "qemu: could not load kernel '%s'\n",
> + kernel_filename);
> + break;
> + }
> exit(1);
> }
>
> --
> 1.8.4.rc4
>