From: Hui Li Date: Thu, 21 Mar 2024 01:41:30 +0000 (+0800) Subject: gdb: LoongArch: Silence warning about core file of lsx and lasx X-Git-Tag: gdb-15-branchpoint~664 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=006efc27dc52e4093ccee2dd5d4867c6a7f13fd6;p=thirdparty%2Fbinutils-gdb.git gdb: LoongArch: Silence warning about core file of lsx and lasx In loongarch_iterate_over_regset_sections(), the second and third arguments of the iterate_over_regset_sections_cb callback function should be the regset size which is regsize * regnum. Otherwise when execute: make check-gdb TESTS="gdb.base/corefile.exp" there exists the following failed log: (gdb) core-file /home/fedora/community/gdb/build/gdb/testsuite/outputs/gdb.base/corefile/corefile.core [New LWP 531099] warning: Unexpected size of section `.reg-loongarch-lsx/531099' in core file. warning: Unexpected size of section `.reg-loongarch-lasx/531099' in core file. Core was generated by `/home/fedora/community/gdb/build/gdb/testsuite/outputs/gdb.base/corefile/corefile'. Program terminated with signal SIGABRT, Aborted. warning: Unexpected size of section `.reg-loongarch-lsx/531099' in core file. warning: Unexpected size of section `.reg-loongarch-lasx/531099' in core file. #0 0x00007ffff3081600 in __pthread_kill_implementation.constprop.0 () from /lib64/libc.so.6 (gdb) FAIL: gdb.base/corefile.exp: core-file warning-free Signed-off-by: Hui Li Signed-off-by: Tiezhu Yang --- diff --git a/gdb/loongarch-linux-tdep.c b/gdb/loongarch-linux-tdep.c index 1c7a7cf222c..db6371eb556 100644 --- a/gdb/loongarch-linux-tdep.c +++ b/gdb/loongarch-linux-tdep.c @@ -498,7 +498,9 @@ loongarch_iterate_over_regset_sections (struct gdbarch *gdbarch, int fpsize = fprsize * LOONGARCH_LINUX_NUM_FPREGSET + fccsize * LOONGARCH_LINUX_NUM_FCC + fcsrsize; int lsxrsize = register_size (gdbarch, LOONGARCH_FIRST_LSX_REGNUM); + int lsxsize = lsxrsize * LOONGARCH_LINUX_NUM_LSXREGSET; int lasxrsize = register_size (gdbarch, LOONGARCH_FIRST_LASX_REGNUM); + int lasxsize = lasxrsize * LOONGARCH_LINUX_NUM_LASXREGSET; int scrsize = register_size (gdbarch, LOONGARCH_FIRST_SCR_REGNUM); int eflagssize = register_size (gdbarch, LOONGARCH_EFLAGS_REGNUM); int ftopsize = register_size (gdbarch, LOONGARCH_FTOP_REGNUM); @@ -507,9 +509,9 @@ loongarch_iterate_over_regset_sections (struct gdbarch *gdbarch, cb (".reg", LOONGARCH_LINUX_NUM_GREGSET * gprsize, LOONGARCH_LINUX_NUM_GREGSET * gprsize, &loongarch_gregset, nullptr, cb_data); cb (".reg2", fpsize, fpsize, &loongarch_fpregset, nullptr, cb_data); - cb (".reg-loongarch-lsx", lsxrsize, lsxrsize, + cb (".reg-loongarch-lsx", lsxsize, lsxsize, &loongarch_lsxregset, nullptr, cb_data); - cb (".reg-loongarch-lasx", lasxrsize, lasxrsize, + cb (".reg-loongarch-lasx", lasxsize, lasxsize, &loongarch_lasxregset, nullptr, cb_data); cb (".reg-loongarch-lbt", lbtsize, lbtsize, &loongarch_lbtregset, nullptr, cb_data);