gdb: pass inferior to check_pid_namespace_match
[deliverable/binutils-gdb.git] / gdb / arch / amd64.c
index bd3df8b91d2598c30762051c1625d264ef32d6d7..60d997dbee67d1fbc4993992c2fcaac4e88cb0e4 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2017-2018 Free Software Foundation, Inc.
+/* Copyright (C) 2017-2020 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
@@ -15,8 +15,9 @@
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
+#include "gdbsupport/common-defs.h"
 #include "amd64.h"
-#include "x86-xstate.h"
+#include "gdbsupport/x86-xstate.h"
 #include <stdlib.h>
 
 #include "../features/i386/64bit-avx.c"
 
 /* Create amd64 target descriptions according to XCR0.  If IS_X32 is
    true, create the x32 ones.  If IS_LINUX is true, create target
-   descriptions for Linux.  */
+   descriptions for Linux.  If SEGMENTS is true, then include
+   the "org.gnu.gdb.i386.segments" feature registers.  */
 
 target_desc *
-amd64_create_target_description (uint64_t xcr0, bool is_x32, bool is_linux)
+amd64_create_target_description (uint64_t xcr0, bool is_x32, bool is_linux,
+                                bool segments)
 {
-  target_desc *tdesc = allocate_target_description ();
+  target_desc_up tdesc = allocate_target_description ();
 
 #ifndef IN_PROCESS_AGENT
-  set_tdesc_architecture (tdesc, is_x32 ? "i386:x64-32" : "i386:x86-64");
+  set_tdesc_architecture (tdesc.get (),
+                         is_x32 ? "i386:x64-32" : "i386:x86-64");
 
   if (is_linux)
-    set_tdesc_osabi (tdesc, "GNU/Linux");
+    set_tdesc_osabi (tdesc.get (), "GNU/Linux");
 #endif
 
   long regnum = 0;
 
   if (is_x32)
-    regnum = create_feature_i386_x32_core (tdesc, regnum);
+    regnum = create_feature_i386_x32_core (tdesc.get (), regnum);
   else
-    regnum = create_feature_i386_64bit_core (tdesc, regnum);
+    regnum = create_feature_i386_64bit_core (tdesc.get (), regnum);
 
-  regnum = create_feature_i386_64bit_sse (tdesc, regnum);
+  regnum = create_feature_i386_64bit_sse (tdesc.get (), regnum);
   if (is_linux)
-    regnum = create_feature_i386_64bit_linux (tdesc, regnum);
-  regnum = create_feature_i386_64bit_segments (tdesc, regnum);
+    regnum = create_feature_i386_64bit_linux (tdesc.get (), regnum);
+  if (segments)
+    regnum = create_feature_i386_64bit_segments (tdesc.get (), regnum);
 
   if (xcr0 & X86_XSTATE_AVX)
-    regnum = create_feature_i386_64bit_avx (tdesc, regnum);
+    regnum = create_feature_i386_64bit_avx (tdesc.get (), regnum);
 
   if ((xcr0 & X86_XSTATE_MPX) && !is_x32)
-    regnum = create_feature_i386_64bit_mpx (tdesc, regnum);
+    regnum = create_feature_i386_64bit_mpx (tdesc.get (), regnum);
 
   if (xcr0 & X86_XSTATE_AVX512)
-    regnum = create_feature_i386_64bit_avx512 (tdesc, regnum);
+    regnum = create_feature_i386_64bit_avx512 (tdesc.get (), regnum);
 
   if ((xcr0 & X86_XSTATE_PKRU) && !is_x32)
-    regnum = create_feature_i386_64bit_pkeys (tdesc, regnum);
+    regnum = create_feature_i386_64bit_pkeys (tdesc.get (), regnum);
 
-  return tdesc;
+  return tdesc.release ();
 }
This page took 0.024598 seconds and 4 git commands to generate.