+2019-12-05 Mark Wielaard <mark@klomp.org>
+
+ * linux-kernel-modules.c (find_kernel_elf): Also try to find
+ vmlinux image.
+
2019-10-28 Aaron Merey <amerey@redhat.com>
* dwfl_build_id_find_elf.c (dwfl_build_id_find_elf): Call debuginfod
static int
find_kernel_elf (Dwfl *dwfl, const char *release, char **fname)
{
+ /* First try to find an uncompressed vmlinux image. Possibly
+ including debuginfo. */
if ((release[0] == '/'
? asprintf (fname, "%s/vmlinux", release)
: asprintf (fname, "/boot/vmlinux-%s", release)) < 0)
fd = try_kernel_name (dwfl, fname, true);
}
+ /* There might be a compressed vmlinuz image. Probably without
+ debuginfo, but try to find it under the debug path also, just in
+ case. */
+ if (fd < 0)
+ {
+ free (*fname);
+ if ((release[0] == '/'
+ ? asprintf (fname, "%s/vmlinuz", release)
+ : asprintf (fname, "/boot/vmlinuz-%s", release)) < 0)
+ return -1;
+
+ fd = try_kernel_name (dwfl, fname, true);
+ if (fd < 0 && release[0] != '/')
+ {
+ free (*fname);
+ if (asprintf (fname, MODULEDIRFMT "/vmlinuz", release) < 0)
+ return -1;
+ fd = try_kernel_name (dwfl, fname, true);
+ }
+ }
+
return fd;
}