Re: [PATCH 2/2][PR GDB/32956] gdb: query inferior's filesystem for build-id debug files

Andrew Burgess
2025-05-23T18:20:48Z

Fabian Kilger <kilger@sec.in.tum.de> writes:

> This fixes a bug related to build-id files with linux namespaces.
> Specifically, we expect the debug files to be present inside the container,
> thus the container filesystem should be queried if the program is running
> inside one.

You should add a bug link to the end of this commit message, like:

Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=32956

With that added, for this patch:

Approved-By: Andrew Burgess <aburgess@redhat.com>

You are welcome to merge this ahead of patch #1 if you want, as they are
related, but don't depend on each other.

Thanks,
Andrew

>
> ---
> gdb/build-id.c | 6 ++++--
> 1 file changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/gdb/build-id.c b/gdb/build-id.c
> index 43a80dd3978..abbd65a7c12 100644
> --- a/gdb/build-id.c
> +++ b/gdb/build-id.c
> @@ -29,6 +29,7 @@
> #include "gdbsupport/scoped_fd.h"
> #include "debuginfod-support.h"
> #include "extension.h"
> +#include "inferior.h"
>
> /* See build-id.h. */
>
> @@ -128,7 +129,8 @@ build_id_to_debug_bfd_1 (const std::string &original_link,
> if (supports_target_stat != TRIBOOL_FALSE)
> {
> struct stat sb;
> - int res = target_fileio_stat (nullptr, link_on_target, &sb,
> + int res = target_fileio_stat (current_inferior (),
> + link_on_target, &sb,
> &target_errno);
>
> if (res != 0 && target_errno != FILEIO_ENOSYS)
> @@ -157,7 +159,7 @@ build_id_to_debug_bfd_1 (const std::string &original_link,
> the path doesn't exist, but we just assume that anything
> other than EINVAL indicates the path doesn't exist. */
> std::optional<std::string> link_target
> - = target_fileio_readlink (nullptr, link_on_target,
> + = target_fileio_readlink (current_inferior (), link_on_target,
> &target_errno);
> if (link_target.has_value ()
> || target_errno == FILEIO_EINVAL)
> --
> 2.49.0