From: Mark Wielaard Date: Tue, 10 Jun 2014 13:09:23 +0000 (+0200) Subject: libdwfl: dwfl_standard_argp should not fail when not able to attach Dwfl. X-Git-Tag: elfutils-0.160~20 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=824f393411acc4596ab557b6e7bff9e48c61f951;p=thirdparty%2Felfutils.git libdwfl: dwfl_standard_argp should not fail when not able to attach Dwfl. As pointed out in https://bugzilla.redhat.com/show_bug.cgi?id=1107654 commit 191080 introduced a thinko that caused dwfl_standard_argp to fail if the Dwfl couldn't be attached. Instead of generating a warning as the comment intended, the failure would be fatal. But even warning about dwfl_core_file_attach () or dwfl_linux_proc_attach () failing would be a mistake. The caller/user might not be interested in such a non-fatal issue. So just ignore if the call failed for whatever reason. If the caller is interested in warning up front about this issue, then dwfl_pid () should be called to check the Dwfl is attached. Things should work just fine for anything that doesn't call any of the dwfl_state related functions. Signed-off-by: Mark Wielaard --- diff --git a/libdwfl/ChangeLog b/libdwfl/ChangeLog index 2fd2a1a35..c13e01fed 100644 --- a/libdwfl/ChangeLog +++ b/libdwfl/ChangeLog @@ -1,3 +1,8 @@ +2014-06-10 Mark Wielaard + + * argp-std.c (parse_opt): Ignore errors from dwfl_core_file_attach + or dwfl_linux_proc_attach. + 2014-05-15 Mark Wielaard * linux-proc-maps.c (grovel_auxv): Close fd on error. diff --git a/libdwfl/argp-std.c b/libdwfl/argp-std.c index 8d2bc6aab..42b7e7838 100644 --- a/libdwfl/argp-std.c +++ b/libdwfl/argp-std.c @@ -171,10 +171,9 @@ parse_opt (int key, char *arg, struct argp_state *state) if (result != 0) return fail (dwfl, result, arg); - result = INTUSE(dwfl_linux_proc_attach) (dwfl, atoi (arg), false); - if (result != 0) - /* Non-fatal to not be able to attach to process. */ - failure (dwfl, result, _("cannot attach to process")); + /* Non-fatal to not be able to attach to process, ignore error. */ + INTUSE(dwfl_linux_proc_attach) (dwfl, atoi (arg), false); + opt->dwfl = dwfl; } else @@ -301,10 +300,8 @@ parse_opt (int key, char *arg, struct argp_state *state) return fail (dwfl, result, opt->core); } - result = INTUSE(dwfl_core_file_attach) (dwfl, core); - if (result < 0) - /* Non-fatal to not be able to attach to core. */ - failure (dwfl, result, _("cannot attach to core")); + /* Non-fatal to not be able to attach to core, ignore error. */ + INTUSE(dwfl_core_file_attach) (dwfl, core); /* From now we leak FD and CORE. */