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

Andrew Burgess
2025-06-10T09:11:03Z

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

> Thanks for approving, I'll add the link to the commit message.
>
> If I merge this ahead of #1, can I leave it out in the v2 patch
> submission, or should it be included for completeness' sake - not sure
> what is desired.

Sorry, have been side tracked on other tasks.

I think you should merge this, and any new iteration would not include
this patch as this would now be part of GDB.

Thanks,
Andrew

>
> Best,
> Fabian
>
> On 5/23/25 20:20, Andrew Burgess wrote:
>> 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
>>
>
> --
> Fabian Kilger, M.Sc.
> Wissenschaftlicher Mitarbeiter
>
> Technische Universität München
> TUM School of Computation, Information and Technology
> Chair of IT Security
>
> Boltzmannstraße 3
> 85748 Garching (bei München)
>
> Tel. +49 (0)89 289-18587
> Fax +49 (0)89 289-18579
>
> kilger@sec.in.tum.de
> www.sec.in.tum.de
> -----BEGIN PGP PUBLIC KEY BLOCK-----
>
> xjMEYHltfxYJKwYBBAHaRw8BAQdA7mzpLUfZIcIiMjdx+GBa8RuqZdMp/MUEpu4P
> DTb2YwXNJEZhYmlhbiBLaWxnZXIgPGtpbGdlckBzZWMuaW4udHVtLmRlPsKLBBMW
> CAAzFiEETPRi+vRLaNymGJvYr2lqRpshfmkFAmB5bX8CGwMFCwkIBwIGFQgJCgsC
> BRYCAwEAAAoJEK9pakabIX5pCzcA/ivCFRRbxJfpiwOzV5CvflcHPNN2LmCxSBlc
> rBpliBhWAP43PcAtWheftijoLpcwy3nD0TVTDRrJY/hRkKDbvmrWCM44BGB5bX8S
> CisGAQQBl1UBBQEBB0BtYlZed2qkwQWmV+MaUhC78XgZI0ezLuU2nr8bocqXCAMB
> CAfCeAQYFggAIBYhBEz0Yvr0S2jcphib2K9pakabIX5pBQJgeW1/AhsMAAoJEK9p
> akabIX5pUNQA/juajzwCYdtbo+sXQUlZufPiPwLiPr6LuJBNZwL6OlbmAQDvyu6h
> +X9K2gzgLviiNEmcCAddwynvjXiLt3c+oir7AA==
> =VdeZ
> -----END PGP PUBLIC KEY BLOCK-----