Re: [PATCH v1] scripts/gdb: fix parsing of MNT_* constants

From: Stephen Brennan
Date: Tue Jun 03 2025 - 00:42:39 EST


On 5/31/25 22:50, Tony Ambardar wrote:
> Recently, constants in linux/mount.h were changed from integer macros
> parsable by LX_VALUE() to enums which are not, thus breaking gdb python
> scripts:
>
> Reading symbols from vmlinux...
> Traceback (most recent call last):
> File ".../linux/vmlinux-gdb.py", line 25, in <module>
> import linux.constants
> File ".../linux/scripts/gdb/linux/constants.py", line 19, in <module>
> LX_MNT_NOSUID = MNT_NOSUID
> NameError: name 'MNT_NOSUID' is not defined
>
> Update to parse with LX_GDBPARSED(), which correctly handles enums.
>
> Fixes: 101f2bbab541 ("fs: convert mount flags to enum")
> Signed-off-by: Tony Ambardar <tony.ambardar@xxxxxxxxx>

Hi Tony,

I was totally unaware that these constants were being consumed by
another debugger, and having fixed them for one, I broke them for another!

Thanks for the fix. Having read through the preprocessor magic and this
change, they make sense to me. In the future, I'll be sure to make an
extra check for GDB users when updating enums.

Reviewed-by: Stephen Brennan <stephen.s.brennan@xxxxxxxxxx>

> ---
> scripts/gdb/linux/constants.py.in | 12 ++++++------
> 1 file changed, 6 insertions(+), 6 deletions(-)
>
> diff --git a/scripts/gdb/linux/constants.py.in b/scripts/gdb/linux/constants.py.in
> index fd6bd69c5096..d5e3069f42a7 100644
> --- a/scripts/gdb/linux/constants.py.in
> +++ b/scripts/gdb/linux/constants.py.in
> @@ -73,12 +73,12 @@ if IS_BUILTIN(CONFIG_MODULES):
> LX_GDBPARSED(MOD_RO_AFTER_INIT)
>
> /* linux/mount.h */
> -LX_VALUE(MNT_NOSUID)
> -LX_VALUE(MNT_NODEV)
> -LX_VALUE(MNT_NOEXEC)
> -LX_VALUE(MNT_NOATIME)
> -LX_VALUE(MNT_NODIRATIME)
> -LX_VALUE(MNT_RELATIME)
> +LX_GDBPARSED(MNT_NOSUID)
> +LX_GDBPARSED(MNT_NODEV)
> +LX_GDBPARSED(MNT_NOEXEC)
> +LX_GDBPARSED(MNT_NOATIME)
> +LX_GDBPARSED(MNT_NODIRATIME)
> +LX_GDBPARSED(MNT_RELATIME)
>
> /* linux/threads.h */
> LX_VALUE(NR_CPUS)