X-Git-Url: http://git.efficios.com/?a=blobdiff_plain;f=gdb%2Famd64-linux-tdep.c;h=07820a05597053668baa001d97e2fe8a7c142067;hb=b0eb7e3ea662525545e60fcb092272afaa1cddb2;hp=ef9248d708d35724a97500aacf04e0a07830fff3;hpb=00431a78b28f913a9d5c912c49680e39cfd20847;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/amd64-linux-tdep.c b/gdb/amd64-linux-tdep.c index ef9248d708..07820a0559 100644 --- a/gdb/amd64-linux-tdep.c +++ b/gdb/amd64-linux-tdep.c @@ -1,6 +1,6 @@ /* Target-dependent code for GNU/Linux x86-64. - Copyright (C) 2001-2018 Free Software Foundation, Inc. + Copyright (C) 2001-2020 Free Software Foundation, Inc. Contributed by Jiri Smid, SuSE Labs. This file is part of GDB. @@ -33,7 +33,7 @@ #include "amd64-linux-tdep.h" #include "i386-linux-tdep.h" #include "linux-tdep.h" -#include "x86-xstate.h" +#include "gdbsupport/x86-xstate.h" #include "amd64-tdep.h" #include "solib-svr4.h" @@ -1594,7 +1594,8 @@ amd64_linux_read_description (uint64_t xcr0_features_bit, bool is_x32) } if (*tdesc == NULL) - *tdesc = amd64_create_target_description (xcr0_features_bit, is_x32, true); + *tdesc = amd64_create_target_description (xcr0_features_bit, is_x32, + true, true); return *tdesc; } @@ -1650,9 +1651,9 @@ amd64_linux_iterate_over_regset_sections (struct gdbarch *gdbarch, { struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch); - cb (".reg", 27 * 8, &i386_gregset, NULL, cb_data); - cb (".reg2", 512, &amd64_fpregset, NULL, cb_data); - cb (".reg-xstate", X86_XSTATE_SIZE (tdep->xcr0), + cb (".reg", 27 * 8, 27 * 8, &i386_gregset, NULL, cb_data); + cb (".reg2", 512, 512, &amd64_fpregset, NULL, cb_data); + cb (".reg-xstate", X86_XSTATE_SIZE (tdep->xcr0), X86_XSTATE_SIZE (tdep->xcr0), &amd64_linux_xstateregset, "XSAVE extended state", cb_data); } @@ -1734,7 +1735,7 @@ amd64_dtrace_disable_probe (struct gdbarch *gdbarch, CORE_ADDR addr) static void amd64_dtrace_parse_probe_argument (struct gdbarch *gdbarch, - struct parser_state *pstate, + struct expr_builder *builder, int narg) { struct stoken str; @@ -1757,11 +1758,11 @@ amd64_dtrace_parse_probe_argument (struct gdbarch *gdbarch, int regno = arg_reg_map[narg]; const char *regname = user_reg_map_regnum_to_name (gdbarch, regno); - write_exp_elt_opcode (pstate, OP_REGISTER); + write_exp_elt_opcode (builder, OP_REGISTER); str.ptr = regname; str.length = strlen (regname); - write_exp_string (pstate, str); - write_exp_elt_opcode (pstate, OP_REGISTER); + write_exp_string (builder, str); + write_exp_elt_opcode (builder, OP_REGISTER); } else { @@ -1769,27 +1770,27 @@ amd64_dtrace_parse_probe_argument (struct gdbarch *gdbarch, const char *regname = user_reg_map_regnum_to_name (gdbarch, AMD64_RSP_REGNUM); /* Displacement. */ - write_exp_elt_opcode (pstate, OP_LONG); - write_exp_elt_type (pstate, builtin_type (gdbarch)->builtin_long); - write_exp_elt_longcst (pstate, narg - 6); - write_exp_elt_opcode (pstate, OP_LONG); + write_exp_elt_opcode (builder, OP_LONG); + write_exp_elt_type (builder, builtin_type (gdbarch)->builtin_long); + write_exp_elt_longcst (builder, narg - 6); + write_exp_elt_opcode (builder, OP_LONG); /* Register: SP. */ - write_exp_elt_opcode (pstate, OP_REGISTER); + write_exp_elt_opcode (builder, OP_REGISTER); str.ptr = regname; str.length = strlen (regname); - write_exp_string (pstate, str); - write_exp_elt_opcode (pstate, OP_REGISTER); + write_exp_string (builder, str); + write_exp_elt_opcode (builder, OP_REGISTER); - write_exp_elt_opcode (pstate, BINOP_ADD); + write_exp_elt_opcode (builder, BINOP_ADD); /* Cast to long. */ - write_exp_elt_opcode (pstate, UNOP_CAST); - write_exp_elt_type (pstate, + write_exp_elt_opcode (builder, UNOP_CAST); + write_exp_elt_type (builder, lookup_pointer_type (builtin_type (gdbarch)->builtin_long)); - write_exp_elt_opcode (pstate, UNOP_CAST); + write_exp_elt_opcode (builder, UNOP_CAST); - write_exp_elt_opcode (pstate, UNOP_IND); + write_exp_elt_opcode (builder, UNOP_IND); } } @@ -2278,32 +2279,4 @@ _initialize_amd64_linux_tdep (void) GDB_OSABI_LINUX, amd64_linux_init_abi); gdbarch_register_osabi (bfd_arch_i386, bfd_mach_x64_32, GDB_OSABI_LINUX, amd64_x32_linux_init_abi); - -#if GDB_SELF_TEST - struct - { - const char *xml; - uint64_t mask; - } xml_masks[] = { - { "i386/amd64-linux.xml", X86_XSTATE_SSE_MASK }, - { "i386/amd64-avx-linux.xml", X86_XSTATE_AVX_MASK }, - { "i386/amd64-mpx-linux.xml", X86_XSTATE_MPX_MASK }, - { "i386/amd64-avx-mpx-linux.xml", X86_XSTATE_AVX_MPX_MASK }, - { "i386/amd64-avx-avx512-linux.xml", X86_XSTATE_AVX_AVX512_MASK }, - { "i386/amd64-avx-mpx-avx512-pku-linux.xml", - X86_XSTATE_AVX_MPX_AVX512_PKU_MASK }, - { "i386/x32-linux.xml", X86_XSTATE_SSE_MASK }, - { "i386/x32-avx-linux.xml", X86_XSTATE_AVX_MASK }, - { "i386/x32-avx-avx512-linux.xml", X86_XSTATE_AVX_AVX512_MASK }, - }; - - for (auto &a : xml_masks) - { - auto tdesc = amd64_linux_read_description (a.mask, - startswith (a.xml, - "i386/x32")); - - selftests::record_xml_tdesc (a.xml, tdesc); - } -#endif /* GDB_SELF_TEST */ }