aboutsummaryrefslogtreecommitdiff
path: root/gdb/i386-linux-tdep.c
diff options
context:
space:
mode:
authorYao Qi <yao.qi@linaro.org>2017-07-26 14:55:31 +0100
committerYao Qi <yao.qi@linaro.org>2017-07-26 14:55:31 +0100
commit27d41eac62a6a1aa803dfcfba2be61431e7b3d13 (patch)
treecaab5f884290aaeda3202b0795abdc7d0ed6f158 /gdb/i386-linux-tdep.c
parentea03d0d3c32b22aeddfeb139a4a515f7e5961347 (diff)
downloadfsf-binutils-gdb-27d41eac62a6a1aa803dfcfba2be61431e7b3d13.zip
fsf-binutils-gdb-27d41eac62a6a1aa803dfcfba2be61431e7b3d13.tar.gz
fsf-binutils-gdb-27d41eac62a6a1aa803dfcfba2be61431e7b3d13.tar.bz2
Add "maint check xml-descriptions" to test builtin xml target descriptions
Now, GDB is able to dynamically create i386-linux target descriptions from features, instead of using pre-generated target descriptions. These pre-generated target descriptions are no longer used by GDB (note that they are still used by GDBserver). This patch add a new maint command "maint check xml-descriptions" to test dynamically generated tdesc are identical to these generated from xml files. gdb: 2017-07-26 Yao Qi <yao.qi@linaro.org> * cli/cli-cmds.c (maintenancechecklist): New variable. * gdbcmd.h (maintenancechecklist): Declare it. * i386-linux-tdep.c (_initialize_i386_linux_tdep) [GDB_SELF_TEST]: Call i386_linux_read_description with different masks. * maint.c (maintenance_check_command): New function. (_initialize_maint_cmds): Call add_prefix_cmd. * target-descriptions.c (tdesc_reg): override operator != and ==. (tdesc_type): Likewise. (tdesc_feature): Likewise. (target_desc): Likewise. [GDB_SELF_TEST] (selftests::record_xml_tdesc): New function. (maintenance_check_xml_descriptions): New function. (_initialize_target_descriptions) Add command "xml-descriptions". * target-descriptions.h (selftests::record_xml_tdesc): Declare. gdb/testsuite: 2017-07-26 Yao Qi <yao.qi@linaro.org> * gdb.gdb/unittest.exp: Invoke command "maintenance check xml-descriptions". gdb/doc: 2017-07-26 Yao Qi <yao.qi@linaro.org> * gdb.texinfo (Maintenance Commands): Document command "maint check xml-descriptions".
Diffstat (limited to 'gdb/i386-linux-tdep.c')
-rw-r--r--gdb/i386-linux-tdep.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/gdb/i386-linux-tdep.c b/gdb/i386-linux-tdep.c
index 4c0f597..708de97 100644
--- a/gdb/i386-linux-tdep.c
+++ b/gdb/i386-linux-tdep.c
@@ -1116,4 +1116,28 @@ _initialize_i386_linux_tdep (void)
{
gdbarch_register_osabi (bfd_arch_i386, 0, GDB_OSABI_LINUX,
i386_linux_init_abi);
+
+#if GDB_SELF_TEST
+ struct
+ {
+ const char *xml;
+ uint64_t mask;
+ } xml_masks[] = {
+ { "i386/i386-linux.xml", X86_XSTATE_SSE_MASK },
+ { "i386/i386-mmx-linux.xml", X86_XSTATE_X87_MASK },
+ { "i386/i386-avx-linux.xml", X86_XSTATE_AVX_MASK },
+ { "i386/i386-mpx-linux.xml", X86_XSTATE_MPX_MASK },
+ { "i386/i386-avx-mpx-linux.xml", X86_XSTATE_AVX_MPX_MASK },
+ { "i386/i386-avx-avx512-linux.xml", X86_XSTATE_AVX_AVX512_MASK },
+ { "i386/i386-avx-mpx-avx512-pku-linux.xml",
+ X86_XSTATE_AVX_MPX_AVX512_PKU_MASK },
+ };
+
+ for (auto &a : xml_masks)
+ {
+ auto tdesc = i386_linux_read_description (a.mask);
+
+ selftests::record_xml_tdesc (a.xml, tdesc);
+ }
+#endif /* GDB_SELF_TEST */
}