From 4054a688fad80a6cfad787c78b4731aa4e2d0a63 Mon Sep 17 00:00:00 2001 From: Petr Tesarik Date: Fri, 10 Nov 2023 16:13:46 +0100 Subject: [PATCH] libdrgn: better error reporting of unsupported libkdumpfile format Return DRGN_ERROR_INVALID_ARGUMENT with a reasonable error message if libkdumpfile cannot open a file. The error output currently looks something like: Traceback (most recent call last): File "/research/bin/drgn", line 33, in sys.exit(load_entry_point('drgn', 'console_scripts', 'drgn')()) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/research/src/drgn/drgn/cli.py", line 264, in _main prog.set_core_dump(args.core) Exception: kdump_set_number_attr(KDUMP_ATTR_FILE_FD): File #0: Unknown file format Replace it with this: error: file #0: Unknown file format This is similar to the error message when trying to open a file that is neither KDUMP nor ELF: error: not an ELF core file Signed-off-by: Petr Tesarik --- libdrgn/kdump.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/libdrgn/kdump.c b/libdrgn/kdump.c index 5e822b7ef..46ab9cacb 100644 --- a/libdrgn/kdump.c +++ b/libdrgn/kdump.c @@ -94,6 +94,11 @@ struct drgn_error *drgn_program_set_kdump(struct drgn_program *prog) } ks = kdump_set_number_attr(ctx, KDUMP_ATTR_FILE_FD, prog->core_fd); + if (ks == KDUMP_ERR_NOTIMPL) { + err = drgn_error_format(DRGN_ERROR_INVALID_ARGUMENT, + "%s", kdump_get_err(ctx)); + goto err; + } if (ks != KDUMP_OK) { err = drgn_error_format(DRGN_ERROR_OTHER, "kdump_set_number_attr(KDUMP_ATTR_FILE_FD): %s",