Loading a module using 'lx-symbols' in GDB would result in a gdb.MemoryError when parsing the section names and addresses because of the way GDB handles flexible array members. This patch fixes that issue by converting the 'struct module_sect_attr[]' into a pointer before accessing it.
Signed-off-by: Julian Blaauboer <julian.blaaub...@gmail.com> --- scripts/gdb/linux/symbols.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/gdb/linux/symbols.py b/scripts/gdb/linux/symbols.py index 1be9763cf8bb..6d3a33a00189 100644 --- a/scripts/gdb/linux/symbols.py +++ b/scripts/gdb/linux/symbols.py @@ -94,7 +94,8 @@ lx-symbols command.""" sect_attrs = module['sect_attrs'].dereference() except gdb.error: return "" - attrs = sect_attrs['attrs'] + # Convert from struct module_sect_attr[] to struct module_sect_attr* + attrs = sect_attrs['attrs'].dereference().address section_name_to_address = { attrs[n]['battr']['attr']['name'].string(): attrs[n]['address'] for n in range(int(sect_attrs['nsections']))} -- 2.30.1