MINOR: debug: copy debug symbols from /usr/lib/debug when present

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.
This commit is contained in:
Willy Tarreau 2026-03-18 13:39:23 +01:00
parent de4f7eaeed
commit e07c9ee575

View 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++;