[COMMITTED PATCH] gdb: LoongArch: Implement the iterate_over_regset_sections gdbarch method
John Baldwin
jhb@FreeBSD.org
Mon May 23 17:09:14 GMT 2022
On 5/23/22 7:37 AM, Tiezhu Yang wrote:
> When execute the following command on LoongArch:
>
> make check-gdb TESTS="gdb.base/auxv.exp"
>
> there exist the following unsupported and failed testcases:
>
> UNSUPPORTED: gdb.base/auxv.exp: gcore
> FAIL: gdb.base/auxv.exp: load core file for info auxv on native core dump
> FAIL: gdb.base/auxv.exp: info auxv on native core dump
> FAIL: gdb.base/auxv.exp: matching auxv data from live and core
> UNSUPPORTED: gdb.base/auxv.exp: info auxv on gcore-created dump
> UNSUPPORTED: gdb.base/auxv.exp: matching auxv data from live and gcore
>
> we can see the following messages in gdb/testsuite/gdb.log:
>
> gcore /home/loongson/build.git/gdb/testsuite/outputs/gdb.base/auxv/auxv.gcore
> Target does not support core file generation.
> (gdb) UNSUPPORTED: gdb.base/auxv.exp: gcore
>
> In order to fix the above issues, implement the iterate_over_regset_sections
> gdbarch method to iterate over core file register note sections on LoongArch.
>
> By the way, with this patch, the failed testcases in gdb.base/corefile.exp
> and gdb.base/gcore.exp can also be fixed.
>
> Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn>
> ---
> gdb/loongarch-linux-tdep.c | 16 ++++++++++++++++
> 1 file changed, 16 insertions(+)
>
> diff --git a/gdb/loongarch-linux-tdep.c b/gdb/loongarch-linux-tdep.c
> index 7e219c4b9a0..f13756dd003 100644
> --- a/gdb/loongarch-linux-tdep.c
> +++ b/gdb/loongarch-linux-tdep.c
> @@ -20,6 +20,7 @@
>
> #include "defs.h"
> #include "glibc-tdep.h"
> +#include "gregset.h"
> #include "inferior.h"
> #include "linux-tdep.h"
> #include "loongarch-tdep.h"
> @@ -163,6 +164,18 @@ static const struct tramp_frame loongarch_linux_rt_sigframe =
> NULL
> };
>
> +/* Implement the "iterate_over_regset_sections" gdbarch method. */
> +
> +static void
> +loongarch_iterate_over_regset_sections (struct gdbarch *gdbarch,
> + iterate_over_regset_sections_cb *cb,
> + void *cb_data,
> + const struct regcache *regcache)
> +{
> + cb (".reg", sizeof (elf_gregset_t), sizeof (elf_gregset_t),
> + &loongarch_gregset, NULL, cb_data);
> +}
This is wrong. elf_gregset_t is arch-specific and is a native type, but this is a tdep.c
file. Other architectures instead use a #define based on the number of registers and the
native register size, etc.
--
John Baldwin
More information about the Gdb-patches
mailing list