public inbox for elfutils@sourceware.org
 help / color / mirror / Atom feed
* patch PR25722: /path/name based debuginfod-find & API lookups
@ 2020-03-26  1:39 Frank Ch. Eigler
  2020-03-27 14:44 ` Mark Wielaard
  0 siblings, 1 reply; 4+ messages in thread
From: Frank Ch. Eigler @ 2020-03-26  1:39 UTC (permalink / raw)
  To: elfutils-devel

Hi -

commit b27d38f7eed6d99715fd1cc8a70b0a6a2b04f0ce (HEAD -> fche/pr25722)
Author: Frank Ch. Eigler <fche@redhat.com>
Date:   Wed Mar 25 21:36:51 2020 -0400

    PR25722: debuginfod client api: accept /path/names in place of buildid hex
    
    As a convenience, this extends the debuginfod find functions (and thus
    debuginfod-find) to accept a /path/name to an ELF binary as an
    alternative to a hexadecimal string for buildid.  Doc & testing incl.
    
    Signed-off-by: Frank Ch. Eigler <fche@redhat.com>

diff --git a/debuginfod/ChangeLog b/debuginfod/ChangeLog
index b34b4d2938dd..032a670fd2d0 100644
--- a/debuginfod/ChangeLog
+++ b/debuginfod/ChangeLog
@@ -1,3 +1,12 @@
+2020-03-25  Frank Ch. Eigler  <fche@redhat.com>
+
+	* debuginfod-client.c (lookup_elf_buildid): Quick dwelf based
+	filename-to-buildid lookup function.
+	(debuginfod_query_server): Use it for non-hexstring buildids.
+	* debuginfod-find.c (main): Call elf_version().
+	* Makefile.am: Add elfutils library prereqs for libdebuginfod.so
+	and debuginfod-find.
+
 2020-03-24  Frank Ch. Eigler  <fche@redhat.com>
 
 	* debuginfod-client.c (debuginfod_query_server): Print the
diff --git a/debuginfod/Makefile.am b/debuginfod/Makefile.am
index 52ead30aebf8..1a57d287f9a1 100644
--- a/debuginfod/Makefile.am
+++ b/debuginfod/Makefile.am
@@ -62,7 +62,7 @@ debuginfod_SOURCES = debuginfod.cxx
 debuginfod_LDADD = $(libdw) $(libelf) $(libeu) $(libdebuginfod) $(libmicrohttpd_LIBS) $(libcurl_LIBS) $(sqlite3_LIBS) $(libarchive_LIBS) -lpthread -ldl
 
 debuginfod_find_SOURCES = debuginfod-find.c
-debuginfod_find_LDADD = $(libeu) $(libdebuginfod)
+debuginfod_find_LDADD = $(libeu) $(libdebuginfod) $(libelf)
 
 noinst_LIBRARIES = libdebuginfod.a
 noinst_LIBRARIES += libdebuginfod_pic.a
@@ -74,7 +74,7 @@ am_libdebuginfod_pic_a_OBJECTS = $(libdebuginfod_a_SOURCES:.c=.os)
 pkginclude_HEADERS = debuginfod.h
 
 libdebuginfod_so_LIBS = libdebuginfod_pic.a
-libdebuginfod_so_LDLIBS = $(libcurl_LIBS)
+libdebuginfod_so_LDLIBS = $(libcurl_LIBS) $(libdw) $(libelf) $(libeu)
 libdebuginfod.so$(EXEEXT): $(srcdir)/libdebuginfod.map $(libdebuginfod_so_LIBS)
 	$(AM_V_CCLD)$(LINK) $(dso_LDFLAGS) -o $@ \
 		-Wl,--soname,$@.$(VERSION) \
diff --git a/debuginfod/debuginfod-client.c b/debuginfod/debuginfod-client.c
index ea2d16249a31..a0ca95cb1dc8 100644
--- a/debuginfod/debuginfod-client.c
+++ b/debuginfod/debuginfod-client.c
@@ -61,6 +61,8 @@
 #include <sys/stat.h>
 #include <sys/utsname.h>
 #include <curl/curl.h>
+#include <gelf.h>
+#include <libdwelf.h>
 
 /* If fts.h is included before config.h, its indirect inclusions may not
    give us the right LFS aliases of these functions, so map them manually.  */
@@ -436,6 +438,43 @@ default_progressfn (debuginfod_client *c, long a, long b)
 }
 
 
+static int
+lookup_elf_buildid(const char* path,
+                   char *build_id_hex,
+                   ssize_t max_build_id_bytes)
+{
+  int rc = -ENOENT;
+  int fd = open (path, O_RDONLY);
+  if (fd < 0)
+    goto out;
+  Elf *elf =  elf_begin (fd, ELF_C_READ_MMAP_PRIVATE, NULL);
+  if (elf == NULL)
+    goto out1;
+  const unsigned char *build_id;
+  ssize_t s = dwelf_elf_gnu_build_id(elf, (const void**) &build_id);
+  if (s < 0 || s > max_build_id_bytes) {
+    rc = -EINVAL;
+    goto out2;
+  }
+  ssize_t i;
+  for (i=0; i<s; i++)
+    {
+      build_id_hex[2*i+0] = "0123456789abcdef"[(build_id[i]&0xF0) >> 4];
+      build_id_hex[2*i+1] = "0123456789abcdef"[(build_id[i]&0x0F) >> 0];
+    }
+  build_id_hex[2*i] = '\0';
+  rc = 0;
+
+ out2:
+  elf_end (elf);
+ out1:
+  close (fd);
+ out:
+  return rc;
+}
+
+
+
 /* Query each of the server URLs found in $DEBUGINFOD_URLS for the file
    with the specified build-id, type (debuginfo, executable or source)
    and filename. filename may be NULL. If found, return a file
@@ -474,16 +513,43 @@ debuginfod_query_server (debuginfod_client *c,
       goto out;
     }
 
-  /* Copy lowercase hex representation of build_id into buf.  */
-  if ((build_id_len >= MAX_BUILD_ID_BYTES) ||
-      (build_id_len == 0 &&
-       sizeof(build_id_bytes) > MAX_BUILD_ID_BYTES*2 + 1))
-    return -EINVAL;
-  if (build_id_len == 0) /* expect clean hexadecimal */
-    strcpy (build_id_bytes, (const char *) build_id);
-  else
-    for (int i = 0; i < build_id_len; i++)
-      sprintf(build_id_bytes + (i * 2), "%02x", build_id[i]);
+  if (build_id_len > 0) /* raw bytes */
+    {
+      if (build_id_len > MAX_BUILD_ID_BYTES) /* too man raw bytes */
+        return -EINVAL;
+      int i;
+      for (i = 0; i < build_id_len; i++)
+        {
+          build_id_bytes[2*i+0] = "0123456789abcdef"[(build_id[i]&0xF0) >> 4];
+          build_id_bytes[2*i+1] = "0123456789abcdef"[(build_id[i]&0x0F) >> 0];
+        }
+       build_id_bytes[2*i] = '\0';
+    }
+  else if (build_id_len == 0) /* \0-terminated string */
+    {
+      int any_non_hex = 0;
+      for (int i = 0; build_id[i] != '\0'; i++)
+        if ((build_id[i] >= '0' && build_id[i] <= '9') ||
+            (build_id[i] >= 'a' && build_id[i] <= 'f'))
+          ;
+        else
+          any_non_hex = 1;
+
+      if (any_non_hex) /* a path name --- try to fetch its buildid */
+        {
+          rc = lookup_elf_buildid ((const char*) build_id,
+                                   build_id_bytes,
+                                   MAX_BUILD_ID_BYTES);
+          if (rc != 0)
+            return rc;
+        }
+      else /* hexadecimal string */
+        {
+          if (strlen((const char*) build_id) >= sizeof(build_id_bytes))
+            return -EINVAL;
+          strcpy (build_id_bytes, (const char*)build_id);
+        }
+    }
 
   if (filename != NULL)
     {
diff --git a/debuginfod/debuginfod-find.c b/debuginfod/debuginfod-find.c
index 400c268224fb..440b93247569 100644
--- a/debuginfod/debuginfod-find.c
+++ b/debuginfod/debuginfod-find.c
@@ -26,6 +26,7 @@
 #include <string.h>
 #include <argp.h>
 
+#include <gelf.h>
 
 /* Name and version of program.  */
 ARGP_PROGRAM_VERSION_HOOK_DEF = print_version;
@@ -86,6 +87,8 @@ static struct argp argp =
 int
 main(int argc, char** argv)
 {
+  elf_version (EV_CURRENT);
+
   client = debuginfod_begin ();
   if (client == NULL)
     {
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 59809ea8a1e2..0c996ab234f4 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,8 @@
+2020-03-25  Frank Ch. Eigler  <fche@redhat.com>
+
+	* debuginfod-find.1, debuginfod_find_debuginfo.3: Document
+	acceptance of /path/names in place of buildids.
+
 2020-03-22  Frank Ch. Eigler  <fche@redhat.com>
 
 	* debuginfod_get_url.3: New function, documented ...
diff --git a/doc/debuginfod-find.1 b/doc/debuginfod-find.1
index e71ca29be96e..8a4abd9e525e 100644
--- a/doc/debuginfod-find.1
+++ b/doc/debuginfod-find.1
@@ -52,6 +52,13 @@ Build ID: 8713b9c3fb8a720137a4a08b325905c7aaf8429d
 8713b9c3fb8a720137a4a08b325905c7aaf8429d
 .ESAMPLE
 
+In place of the hexadecimal buildid, debuginfod-find also accepts a path
+name to to an ELF binary, from which it will then extract the buildid
+and proceed.  In this case, pass the file name in place of the BUILDID
+parameter, and ensure it has some character other than \fB[0-9a-f]\fP.
+Files named \fBdeadbeef\fP can be passed with a \fB./deadbeef\fP extra
+path component.
+
 .SS debuginfo \fIBUILDID\fP
 
 If the given buildid is known to a server, this request will result
diff --git a/doc/debuginfod_find_debuginfo.3 b/doc/debuginfod_find_debuginfo.3
index f7ec6cc134ba..c33da3488a2e 100644
--- a/doc/debuginfod_find_debuginfo.3
+++ b/doc/debuginfod_find_debuginfo.3
@@ -71,11 +71,19 @@ and
 query the debuginfod server URLs contained in
 .BR $DEBUGINFOD_URLS
 (see below) for the debuginfo, executable or source file with the
-given \fIbuild_id\fP. \fIbuild_id\fP should be a pointer to either
-a null-terminated, lowercase hex string or a binary blob. If
-\fIbuild_id\fP is given as a hex string, \fIbuild_id_len\fP should
-be 0. Otherwise \fIbuild_id_len\fP should be the number of bytes in
-the binary blob.
+given \fIbuild_id\fP. \fIbuild_id\fP may be given as:
+.TP
+a binary blob
+pass its address and length in bytes in \fIbuild_id_len\fP.
+.TP
+a null-terminated hexadecimal string
+pass its address and 0 as \fIbuild_id_len\fP.  Ensure the
+string contains only \fB[0-9a-f]\fP characters.
+.TP
+an file name of an ELF binary containing the build-id
+pass its name and 0 as \fIbuild_id_len\fP.  Ensure the name
+contains some non-\fB[0-9a-f]\fP characters.
+.P
 
 .BR debuginfod_find_source ()
 also requries a \fIfilename\fP in order to specify a particular
diff --git a/tests/ChangeLog b/tests/ChangeLog
index d0d32a87315a..73ac1a7ec6b5 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,3 +1,7 @@
+2020-03-25  Frank Ch. Eigler <fche@redhat.com>
+
+	* run-debuginfod-find.sh: Test /path/-based debuginfod-find.
+
 2020-03-23  Mark Wielaard  <mark@klomp.org>
 
 	* getphdrnum.c: Include config.h.
diff --git a/tests/run-debuginfod-find.sh b/tests/run-debuginfod-find.sh
index b64130282d86..16785a46a782 100755
--- a/tests/run-debuginfod-find.sh
+++ b/tests/run-debuginfod-find.sh
@@ -139,7 +139,7 @@ rm -rf $DEBUGINFOD_CACHE_PATH # clean it from previous tests
 filename=`testrun ${abs_top_builddir}/debuginfod/debuginfod-find debuginfo $BUILDID`
 cmp $filename F/prog.debug
 
-filename=`testrun ${abs_top_builddir}/debuginfod/debuginfod-find executable $BUILDID`
+filename=`testrun ${abs_top_builddir}/debuginfod/debuginfod-find executable F/prog`
 cmp $filename F/prog
 
 filename=`testrun ${abs_top_builddir}/debuginfod/debuginfod-find source $BUILDID ${PWD}/prog.c`


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: patch PR25722: /path/name based debuginfod-find & API lookups
  2020-03-26  1:39 patch PR25722: /path/name based debuginfod-find & API lookups Frank Ch. Eigler
@ 2020-03-27 14:44 ` Mark Wielaard
  2020-03-28  0:52   ` Frank Ch. Eigler
  0 siblings, 1 reply; 4+ messages in thread
From: Mark Wielaard @ 2020-03-27 14:44 UTC (permalink / raw)
  To: Frank Ch. Eigler, elfutils-devel

Hi Frank,

On Wed, 2020-03-25 at 21:39 -0400, Frank Ch. Eigler via Elfutils-devel wrote:
> commit b27d38f7eed6d99715fd1cc8a70b0a6a2b04f0ce (HEAD -> fche/pr25722)
> Author: Frank Ch. Eigler <fche@redhat.com>
> Date:   Wed Mar 25 21:36:51 2020 -0400
> 
>     PR25722: debuginfod client api: accept /path/names in place of buildid hex
>     
>     As a convenience, this extends the debuginfod find functions (and thus
>     debuginfod-find) to accept a /path/name to an ELF binary as an
>     alternative to a hexadecimal string for buildid.  Doc & testing incl.

I like the functionality for debuginfod-find, but think it is not
really appropriate for the debuginfod client API. It is a little hacky.
The user code has to know that it has to call elf_version () first. The
interface using path names is somewhat awkward since users probably
already have an file descriptor or ELF handle open for the file. It
adds a dependency on libelf and libdw for two convenience function
calls that the user could do themselves. And it only handles the main
build-id in the file, e.g. you cannot easily use it for fetching the
multi/alt-file.

I think we should move the functionality as is just into debuginfo-find 
and experiment a bit with it before adding it as a public API to the
debuginfod-client API.

In debuginfod-find the code would also be slightly simpler since it
doesn't have to convert to a hex-string first, it can just pass the
build-id bytes as is.

Cheers,

Mark

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: patch PR25722: /path/name based debuginfod-find & API lookups
  2020-03-27 14:44 ` Mark Wielaard
@ 2020-03-28  0:52   ` Frank Ch. Eigler
  2020-03-29 23:11     ` Mark Wielaard
  0 siblings, 1 reply; 4+ messages in thread
From: Frank Ch. Eigler @ 2020-03-28  0:52 UTC (permalink / raw)
  To: Mark Wielaard; +Cc: elfutils-devel

Hi -

Like this?


Author: Frank Ch. Eigler <fche@redhat.com>
Date:   Fri Mar 27 20:47:45 2020 -0400

    PR25722: debuginfod-find: accept /path/names in place of buildid hex
    
    Extend the debuginfod-find command line interface to permit
    /file/names instead of only buildid hexadecimal strings.
    
    v2: move code into debuginfod-find; client API remains buildid only.
    
    Signed-off-by: Frank Ch. Eigler <fche@redhat.com>

diff --git a/debuginfod/ChangeLog b/debuginfod/ChangeLog
index 3329be3510d2..6fc4c0981687 100644
--- a/debuginfod/ChangeLog
+++ b/debuginfod/ChangeLog
@@ -1,3 +1,9 @@
+2020-03-27  Frank Ch. Eigler  <fche@redhat.com>
+
+	* debuginfod-find.c (main): Extract buildid from /binary/ if
+	given instead of hex string.
+	* Makefile.am: Add elfutils library prereqs for debuginfod-find.
+
 2020-03-24  Frank Ch. Eigler  <fche@redhat.com>
 
 	* debuginfod.h, libdebuginfod.map: New functions for _add_url_header.
diff --git a/debuginfod/Makefile.am b/debuginfod/Makefile.am
index 52ead30aebf8..51965f65dbb7 100644
--- a/debuginfod/Makefile.am
+++ b/debuginfod/Makefile.am
@@ -62,7 +62,7 @@ debuginfod_SOURCES = debuginfod.cxx
 debuginfod_LDADD = $(libdw) $(libelf) $(libeu) $(libdebuginfod) $(libmicrohttpd_LIBS) $(libcurl_LIBS) $(sqlite3_LIBS) $(libarchive_LIBS) -lpthread -ldl
 
 debuginfod_find_SOURCES = debuginfod-find.c
-debuginfod_find_LDADD = $(libeu) $(libdebuginfod)
+debuginfod_find_LDADD = $(libdw) $(libelf) $(libeu) $(libdebuginfod)
 
 noinst_LIBRARIES = libdebuginfod.a
 noinst_LIBRARIES += libdebuginfod_pic.a
diff --git a/debuginfod/debuginfod-find.c b/debuginfod/debuginfod-find.c
index 400c268224fb..83a43ce4be2e 100644
--- a/debuginfod/debuginfod-find.c
+++ b/debuginfod/debuginfod-find.c
@@ -25,6 +25,10 @@
 #include <stdlib.h>
 #include <string.h>
 #include <argp.h>
+#include <unistd.h>
+#include <fcntl.h>
+#include <gelf.h>
+#include <libdwelf.h>
 
 
 /* Name and version of program.  */
@@ -39,8 +43,12 @@ static const char doc[] = N_("Request debuginfo-related content "
 
 /* Strings for arguments in help texts.  */
 static const char args_doc[] = N_("debuginfo BUILDID\n"
+                                  "debuginfo PATH\n"
                                   "executable BUILDID\n"
-                                  "source BUILDID /FILENAME");
+                                  "executable PATH\n"
+                                  "source BUILDID /FILENAME\n"
+                                  "source PATH /FILENAME\n");
+
 
 /* Definitions of arguments for argp functions.  */
 static const struct argp_option options[] =
@@ -86,6 +94,8 @@ static struct argp argp =
 int
 main(int argc, char** argv)
 {
+  elf_version (EV_CURRENT);
+
   client = debuginfod_begin ();
   if (client == NULL)
     {
@@ -105,19 +115,61 @@ main(int argc, char** argv)
       return 1;
     }
 
-  int rc;
+  /* If we were passed an ELF file name in the BUILDID slot, look in there. */
+  unsigned char* build_id = (unsigned char*) argv[remaining+1];
+  int build_id_len = 0; /* assume text */
+
+  int any_non_hex = 0;
+  int i;
+  for (i = 0; build_id[i] != '\0'; i++)
+    if ((build_id[i] >= '0' && build_id[i] <= '9') ||
+        (build_id[i] >= 'a' && build_id[i] <= 'f'))
+      ;
+    else
+      any_non_hex = 1;
+
+  int fd = -1;
+  Elf* elf = NULL;
+  if (any_non_hex) /* raw build-id */
+    {
+      fd = open ((char*) build_id, O_RDONLY);
+      if (fd < 0)
+        fprintf (stderr, "Cannot open %s: %s\n", build_id, strerror(errno));
+    }
+  if (fd >= 0)
+    {
+      elf = elf_begin (fd, ELF_C_READ_MMAP_PRIVATE, NULL);
+      if (elf == NULL)
+        fprintf (stderr, "Cannot elf_begin %s: %s\n", build_id, elf_errmsg(-1));
+    }
+  if (elf != NULL)
+    {
+      const void *extracted_build_id;
+      ssize_t s = dwelf_elf_gnu_build_id(elf, &extracted_build_id);
+      if (s > 0)
+        {
+          /* Success: replace the build_id pointer/len with the binary blob
+             that elfutils is keeping for us.  It'll remain valid until elf_end(). */
+          build_id = (unsigned char*) extracted_build_id;
+          build_id_len = s;
+        }
+      else
+        fprintf (stderr, "Cannot extract build-id from %s: %s\n", build_id, elf_errmsg(-1));
+    }
+
   char *cache_name;
+  int rc = 0;
 
   /* Check whether FILETYPE is valid and call the appropriate
      debuginfod_find_* function. If FILETYPE is "source"
      then ensure a FILENAME was also supplied as an argument.  */
   if (strcmp(argv[remaining], "debuginfo") == 0)
     rc = debuginfod_find_debuginfo(client,
-				   (unsigned char *)argv[remaining+1], 0,
+				   build_id, build_id_len,
 				   &cache_name);
   else if (strcmp(argv[remaining], "executable") == 0)
     rc = debuginfod_find_executable(client,
-				    (unsigned char *)argv[remaining+1], 0,
+                                    build_id, build_id_len,
 				    &cache_name);
   else if (strcmp(argv[remaining], "source") == 0)
     {
@@ -126,8 +178,9 @@ main(int argc, char** argv)
           fprintf(stderr, "If FILETYPE is \"source\" then absolute /FILENAME must be given\n");
           return 1;
         }
-      rc = debuginfod_find_source(client, (unsigned char *)argv[remaining+1],
-				  0, argv[remaining+2], &cache_name);
+      rc = debuginfod_find_source(client,
+                                  build_id, build_id_len,
+				  argv[remaining+2], &cache_name);
     }
   else
     {
@@ -143,6 +196,10 @@ main(int argc, char** argv)
     }
 
   debuginfod_end (client);
+  if (elf)
+    elf_end(elf);
+  if (fd >= 0)
+    close (fd);
 
   if (rc < 0)
     {
diff --git a/doc/ChangeLog b/doc/ChangeLog
index 38ce441c4076..25404e5876ba 100644
--- a/doc/ChangeLog
+++ b/doc/ChangeLog
@@ -1,3 +1,7 @@
+2020-03-27  Frank Ch. Eigler  <fche@redhat.com>
+
+	* debuginfod-find.1: Document /path/-based buildid passing.
+
 2020-03-24  Frank Ch. Eigler  <fche@redhat.com>
 
 	* debuginfod_add_http_header.3: New function, documented ...
diff --git a/doc/debuginfod-find.1 b/doc/debuginfod-find.1
index a861a48ed1d1..aeb1cb120918 100644
--- a/doc/debuginfod-find.1
+++ b/doc/debuginfod-find.1
@@ -19,10 +19,11 @@ debuginfod-find \- request debuginfo-related data
 
 .SH SYNOPSIS
 .B debuginfod-find [\fIOPTION\fP]... debuginfo \fIBUILDID\fP
-
+.B debuginfod-find [\fIOPTION\fP]... debuginfo \fIPATH\fP
 .B debuginfod-find [\fIOPTION\fP]... executable \fIBUILDID\fP
-
+.B debuginfod-find [\fIOPTION\fP]... executable \fIPATH\fP
 .B debuginfod-find [\fIOPTION\fP]... source \fIBUILDID\fP \fI/FILENAME\fP
+.B debuginfod-find [\fIOPTION\fP]... source \fIPATH\fP \fI/FILENAME\fP
 
 .SH DESCRIPTION
 \fBdebuginfod-find\fP queries one or more \fBdebuginfod\fP servers for
@@ -52,6 +53,14 @@ Build ID: 8713b9c3fb8a720137a4a08b325905c7aaf8429d
 8713b9c3fb8a720137a4a08b325905c7aaf8429d
 .ESAMPLE
 
+In place of the hexadecimal \fIBUILDID\fP, debuginfod-find also
+accepts a path name to to an ELF binary, from which it extracts the
+buildid.  In this case, ensure the file name has some character other
+than \fB[0-9a-f]\fP.  Files ambiguously named files like
+"\fBdeadbeef\fP" can be passed with a \fB./deadbeef\fP extra path
+component.
+
+
 .SS debuginfo \fIBUILDID\fP
 
 If the given buildid is known to a server, this request will result
diff --git a/tests/ChangeLog b/tests/ChangeLog
index d1c9e952870a..66df34ced63c 100644
--- a/tests/ChangeLog
+++ b/tests/ChangeLog
@@ -1,3 +1,7 @@
+2020-03-27  Frank Ch. Eigler  <fche@redhat.com>
+
+	* run-debuginfod-find.sh: Test /path/-based debuginfod-find.
+
 2020-03-24  Frank Ch. Eigler  <fche@redhat.com>
 
 	* run-debuginfod-find.sh: Test relay of UA and XFF headers across
diff --git a/tests/run-debuginfod-find.sh b/tests/run-debuginfod-find.sh
index 799b7005a26e..bba04c1fe20a 100755
--- a/tests/run-debuginfod-find.sh
+++ b/tests/run-debuginfod-find.sh
@@ -144,7 +144,7 @@ rm -rf $DEBUGINFOD_CACHE_PATH # clean it from previous tests
 filename=`testrun ${abs_top_builddir}/debuginfod/debuginfod-find debuginfo $BUILDID`
 cmp $filename F/prog.debug
 
-filename=`testrun ${abs_top_builddir}/debuginfod/debuginfod-find executable $BUILDID`
+filename=`testrun ${abs_top_builddir}/debuginfod/debuginfod-find executable F/prog`
 cmp $filename F/prog
 
 # raw source filename


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: patch PR25722: /path/name based debuginfod-find & API lookups
  2020-03-28  0:52   ` Frank Ch. Eigler
@ 2020-03-29 23:11     ` Mark Wielaard
  0 siblings, 0 replies; 4+ messages in thread
From: Mark Wielaard @ 2020-03-29 23:11 UTC (permalink / raw)
  To: Frank Ch. Eigler; +Cc: elfutils-devel

Hi Frank,

On Fri, 2020-03-27 at 20:52 -0400, Frank Ch. Eigler wrote:
> Like this?
> 
> 
> Author: Frank Ch. Eigler <fche@redhat.com>
> Date:   Fri Mar 27 20:47:45 2020 -0400
> 
>     PR25722: debuginfod-find: accept /path/names in place of buildid hex
>     
>     Extend the debuginfod-find command line interface to permit
>     /file/names instead of only buildid hexadecimal strings.
>     
>     v2: move code into debuginfod-find; client API remains buildid only.
>     
>     Signed-off-by: Frank Ch. Eigler <fche@redhat.com>

Looks good.

I like the suggestion in the documentation to disambiguate files by
using ./

Thanks,

Mark

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2020-03-29 23:11 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-03-26  1:39 patch PR25722: /path/name based debuginfod-find & API lookups Frank Ch. Eigler
2020-03-27 14:44 ` Mark Wielaard
2020-03-28  0:52   ` Frank Ch. Eigler
2020-03-29 23:11     ` Mark Wielaard

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).