From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: multipart/mixed; boundary="===============6827595246191065287==" MIME-Version: 1.0 From: Mark Wielaard To: elfutils-devel@lists.fedorahosted.org Subject: [PATCH] libdwfl: dwfl_standard_argp should not fail when not able to attach Dwfl. Date: Tue, 10 Jun 2014 15:21:20 +0200 Message-ID: <1402406480-18420-1-git-send-email-mjw@redhat.com> --===============6827595246191065287== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable As pointed out in https://bugzilla.redhat.com/show_bug.cgi?id=3D1107654 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 --- libdwfl/ChangeLog | 5 +++++ libdwfl/argp-std.c | 13 +++++-------- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/libdwfl/ChangeLog b/libdwfl/ChangeLog index 2fd2a1a..c13e01f 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 8d2bc6a..42b7e78 100644 --- a/libdwfl/argp-std.c +++ b/libdwfl/argp-std.c @@ -171,10 +171,9 @@ parse_opt (int key, char *arg, struct argp_state *stat= e) if (result !=3D 0) return fail (dwfl, result, arg); = - result =3D INTUSE(dwfl_linux_proc_attach) (dwfl, atoi (arg), false); - if (result !=3D 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 =3D dwfl; } else @@ -301,10 +300,8 @@ parse_opt (int key, char *arg, struct argp_state *stat= e) return fail (dwfl, result, opt->core); } = - result =3D 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. */ = -- = 1.7.1 --===============6827595246191065287==--