]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: debug: copy debug symbols from /usr/lib/debug when present
authorWilly Tarreau <w@1wt.eu>
Wed, 18 Mar 2026 12:39:23 +0000 (13:39 +0100)
committerWilly Tarreau <w@1wt.eu>
Wed, 18 Mar 2026 14:30:39 +0000 (15:30 +0100)
When set-dumpable=libs, let's also pick the debug symbols for the libs
we're loading. For now we only try /usr/lib/debug/<path>, which is quite
common and easy to guess. Build IDs could also be used but are more
complex to deal with, so let's stay simple for now.

src/tools.c

index 390f5f3d5a5d92c61571067e5260de9f93fe5a62..879879c472e504134538d6b6677206bfdf3217c0 100644 (file)
@@ -6057,6 +6057,15 @@ static int dl_collect_libs_cb(struct dl_phdr_info *info, size_t size, void *data
                goto leave;
 
        load_file_into_tar(&ctx->storage, &ctx->size, ctx->prefix, fname, NULL, "haproxy-libs-dump");
+
+       /* try to load equivalent debug symbols for absolute paths  */
+       if (*fname == '/') {
+               char dbg[PATH_MAX];
+
+               snprintf(dbg, sizeof(dbg), "/usr/lib/debug%s", fname);
+               load_file_into_tar(&ctx->storage, &ctx->size, ctx->prefix, dbg, NULL, "haproxy-libs-dump");
+       }
+
  leave:
        /* increment the object's number */
        ctx->pos++;