scripts/gdb: fix usage of MOD_TEXT not defined when CONFIG_MODULES=n

Message ID 20231031134848.119391-1-da.gomez@samsung.com
State New
Headers
Series scripts/gdb: fix usage of MOD_TEXT not defined when CONFIG_MODULES=n |

Commit Message

Daniel Gomez Oct. 31, 2023, 1:49 p.m. UTC
  From: Clément Léger <cleger@rivosinc.com>

MOD_TEXT is only defined if CONFIG_MODULES=y which lead to loading failure
of the gdb scripts when kernel is built without CONFIG_MODULES=y:

Reading symbols from vmlinux...
Traceback (most recent call last):
  File "/foo/vmlinux-gdb.py", line 25, in <module>
    import linux.constants
  File "/foo/scripts/gdb/linux/constants.py", line 14, in <module>
    LX_MOD_TEXT = gdb.parse_and_eval("MOD_TEXT")
                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
gdb.error: No symbol "MOD_TEXT" in current context.

Add a conditional check on CONFIG_MODULES to fix this error.

Fixes: b4aff7513df3 ("scripts/gdb: use mem instead of core_layout to get the module address")
Signed-off-by: Clément Léger <cleger@rivosinc.com>
Tested-by: Daniel Gomez <da.gomez@samsung.com>
Signed-off-by: Daniel Gomez <da.gomez@samsung.com>
---
Hi,

I'm resending the patch [1] from Clement Leger with required changes to
make it work with latest linux-next.

[1] https://lore.kernel.org/all/20230801125715.139721-1-cleger@rivosinc.com/

I hope it's acceptable that I've included my own Signed-of-by in
addition to the Tested-by due to the (minor) changes.

Daniel

 scripts/gdb/linux/constants.py.in | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

--
2.39.2
  

Comments

Clément Léger Nov. 2, 2023, 8:05 a.m. UTC | #1
On 31/10/2023 14:49, Daniel Gomez wrote:
> From: Clément Léger <cleger@rivosinc.com>
> 
> MOD_TEXT is only defined if CONFIG_MODULES=y which lead to loading failure
> of the gdb scripts when kernel is built without CONFIG_MODULES=y:
> 
> Reading symbols from vmlinux...
> Traceback (most recent call last):
>   File "/foo/vmlinux-gdb.py", line 25, in <module>
>     import linux.constants
>   File "/foo/scripts/gdb/linux/constants.py", line 14, in <module>
>     LX_MOD_TEXT = gdb.parse_and_eval("MOD_TEXT")
>                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
> gdb.error: No symbol "MOD_TEXT" in current context.
> 
> Add a conditional check on CONFIG_MODULES to fix this error.
> 
> Fixes: b4aff7513df3 ("scripts/gdb: use mem instead of core_layout to get the module address")
> Signed-off-by: Clément Léger <cleger@rivosinc.com>
> Tested-by: Daniel Gomez <da.gomez@samsung.com>
> Signed-off-by: Daniel Gomez <da.gomez@samsung.com>
> ---
> Hi,
> 
> I'm resending the patch [1] from Clement Leger with required changes to
> make it work with latest linux-next.
> 
> [1] https://lore.kernel.org/all/20230801125715.139721-1-cleger@rivosinc.com/
> 
> I hope it's acceptable that I've included my own Signed-of-by in
> addition to the Tested-by due to the (minor) changes.

Hi Daniel,

And thanks for re-submitting it ! Totally ok for me that you added your SoB.

Clément

> 
> Daniel
> 
>  scripts/gdb/linux/constants.py.in | 9 +++++----
>  1 file changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/scripts/gdb/linux/constants.py.in b/scripts/gdb/linux/constants.py.in
> index e3517d4ab8ec..04c87b570aab 100644
> --- a/scripts/gdb/linux/constants.py.in
> +++ b/scripts/gdb/linux/constants.py.in
> @@ -66,10 +66,11 @@ LX_GDBPARSED(IRQD_LEVEL)
>  LX_GDBPARSED(IRQ_HIDDEN)
> 
>  /* linux/module.h */
> -LX_GDBPARSED(MOD_TEXT)
> -LX_GDBPARSED(MOD_DATA)
> -LX_GDBPARSED(MOD_RODATA)
> -LX_GDBPARSED(MOD_RO_AFTER_INIT)
> +if IS_BUILTIN(CONFIG_MODULES):
> +    LX_GDBPARSED(MOD_TEXT)
> +    LX_GDBPARSED(MOD_DATA)
> +    LX_GDBPARSED(MOD_RODATA)
> +    LX_GDBPARSED(MOD_RO_AFTER_INIT)
> 
>  /* linux/mount.h */
>  LX_VALUE(MNT_NOSUID)
> --
> 2.39.2
  

Patch

diff --git a/scripts/gdb/linux/constants.py.in b/scripts/gdb/linux/constants.py.in
index e3517d4ab8ec..04c87b570aab 100644
--- a/scripts/gdb/linux/constants.py.in
+++ b/scripts/gdb/linux/constants.py.in
@@ -66,10 +66,11 @@  LX_GDBPARSED(IRQD_LEVEL)
 LX_GDBPARSED(IRQ_HIDDEN)

 /* linux/module.h */
-LX_GDBPARSED(MOD_TEXT)
-LX_GDBPARSED(MOD_DATA)
-LX_GDBPARSED(MOD_RODATA)
-LX_GDBPARSED(MOD_RO_AFTER_INIT)
+if IS_BUILTIN(CONFIG_MODULES):
+    LX_GDBPARSED(MOD_TEXT)
+    LX_GDBPARSED(MOD_DATA)
+    LX_GDBPARSED(MOD_RODATA)
+    LX_GDBPARSED(MOD_RO_AFTER_INIT)

 /* linux/mount.h */
 LX_VALUE(MNT_NOSUID)