On 2/9/24 21:55, Philippe Mathieu-Daudé wrote:
Hi Changbin,

On 30/8/24 12:53, Changbin Du via wrote:
Print errors before exit. Do not exit silently.

Signed-off-by: Changbin Du <changbin...@huawei.com>

---
v2: remove msg for arm_load_dtb.
---
  hw/arm/boot.c | 1 +
  1 file changed, 1 insertion(+)

diff --git a/hw/arm/boot.c b/hw/arm/boot.c
index d480a7da02cf..e15bf097a559 100644
--- a/hw/arm/boot.c
+++ b/hw/arm/boot.c
@@ -839,6 +839,7 @@ static ssize_t arm_load_elf(struct arm_boot_info

Note that header error is also silently ignored and could be logged:

    load_elf_hdr(info->kernel_filename, &elf_header, &elf_is64, &err);
    if (err) {
-        error_free(err);
+        error_report_err(err);
        return ret;
    }

(untested)

      if (ret <= 0) {
          /* The header loaded but the image didn't */
+        error_report("could not load elf '%s'", info->kernel_filename);

"Could ..." (caps)

"hw/loader.h" is not well documented, but it seems load_elf*() returns:

   #define ELF_LOAD_FAILED       -1
   #define ELF_LOAD_NOT_ELF      -2
   #define ELF_LOAD_WRONG_ARCH   -3
   #define ELF_LOAD_WRONG_ENDIAN -4
   #define ELF_LOAD_TOO_BIG      -5

And we can display this error calling:

   const char *load_elf_strerror(ssize_t error);

So we can be more precise here using:

   error_report("Could not load elf '%s'", info->kernel_filename,
                load_elf_strerror(ret));

          exit(1);
      }

Better (but out of scope of this patch) could be to pass an Error *errp
argument to the load_elf*() family of functions, and fill it with the
appropriate error message.

Regards,

Phil.


Reply via email to