We fake initialization of notes with an empty asm statement. But it is simpler and less confusing to just initialize notes just before the fopen.
Signed-off-by: Mark Wielaard <m...@klomp.org> --- libdwfl/ChangeLog | 6 ++++++ libdwfl/linux-kernel-modules.c | 7 ++----- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/libdwfl/ChangeLog b/libdwfl/ChangeLog index 04cadb43c..95dc426b6 100644 --- a/libdwfl/ChangeLog +++ b/libdwfl/ChangeLog @@ -1,3 +1,9 @@ +2019-02-24 Mark Wielaard <m...@klomp.org> + + * linux-kernel-modules.c (intuit_kernel_bounds): Init *notes before + fopen. + (dwfl_linux_kernel_report_kernel): Remove fake note init empty asm. + 2019-01-25 Yonghong Song <y...@fb.com> * linux-proc-maps.c (proc_maps_report): Use PRIu64, not PRIi64, to diff --git a/libdwfl/linux-kernel-modules.c b/libdwfl/linux-kernel-modules.c index 360e4ee93..d46ab5aa1 100644 --- a/libdwfl/linux-kernel-modules.c +++ b/libdwfl/linux-kernel-modules.c @@ -493,14 +493,14 @@ intuit_kernel_bounds (Dwarf_Addr *start, Dwarf_Addr *end, Dwarf_Addr *notes) { struct read_address_state state = { NULL, NULL, 0, 0, NULL, NULL }; + *notes = 0; + state.f = fopen (KSYMSFILE, "r"); if (state.f == NULL) return errno; (void) __fsetlocking (state.f, FSETLOCKING_BYCALLER); - *notes = 0; - int result; do result = read_address (&state, start) ? 0 : -1; @@ -695,9 +695,6 @@ dwfl_linux_kernel_report_kernel (Dwfl *dwfl) /* Try to figure out the bounds of the kernel image without looking for any vmlinux file. */ Dwarf_Addr notes; - /* The compiler cannot deduce that if intuit_kernel_bounds returns - zero NOTES will be initialized. Fake the initialization. */ - asm ("" : "=m" (notes)); int result = intuit_kernel_bounds (&start, &end, ¬es); if (result == 0) { -- 2.20.1