[PATCH 0/2][PR GDB/32956] gdb: fix GDB failing to find build-id debug files in linux mount namespaces

Fabian Kilger
2025-05-11T15:02:27Z

GDB can no longer find build-id debug files in docker containers.
The cause is the new algorithm to look for a build-id-based debug file
(introduced by commit 22836ca88591ac7efacf06d5b6db191763fd8aba).
It makes use of fileio_stat. As fileio_stat is not supported by
gdb/nat/linux-namespace.c, all stat calls would be performed on the
host and not inside the mount namespace. Furthermore, gdb/build-id.c
calls target_fileio_stat with inferior none, thus stat will always be
performed on the host mount namespace instead of the target's mount
namespace.

The patch is split into two parts: First, add support for fileio_stat
querying the linux mount namespace and second, adjust gdb/build-id.c
to call target_fileio_stat with current_inferior () instead of nullptr.

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

Fabian Kilger (2):
gdb: implement linux namespace support for fileio_stat
gdb: query inferior's filesystem for build-id debug files

gdb/build-id.c | 6 ++--
gdb/linux-nat.c | 14 ++++++++
gdb/linux-nat.h | 3 ++
gdb/nat/linux-namespaces.c | 71 ++++++++++++++++++++++++++++++++++++++
gdb/nat/linux-namespaces.h | 6 ++++
5 files changed, 98 insertions(+), 2 deletions(-)

--
2.49.0