diff options
Diffstat (limited to 'gdb/arch/i386.c')
-rw-r--r-- | gdb/arch/i386.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/gdb/arch/i386.c b/gdb/arch/i386.c index 835df53..4ec4f10 100644 --- a/gdb/arch/i386.c +++ b/gdb/arch/i386.c @@ -28,11 +28,13 @@ #include "../features/i386/32bit-avx512.c" #include "../features/i386/32bit-segments.c" #include "../features/i386/pkeys.c" +#include "../features/i386/32bit-ssp.c" -/* Create i386 target descriptions according to XCR0. */ +/* See arch/i386.h. */ target_desc * -i386_create_target_description (uint64_t xcr0, bool is_linux, bool segments) +i386_create_target_description (uint64_t xstate_bv, bool is_linux, + bool segments) { target_desc_up tdesc = allocate_target_description (); @@ -44,10 +46,10 @@ i386_create_target_description (uint64_t xcr0, bool is_linux, bool segments) long regnum = 0; - if (xcr0 & X86_XSTATE_X87) + if (xstate_bv & X86_XSTATE_X87) regnum = create_feature_i386_32bit_core (tdesc.get (), regnum); - if (xcr0 & X86_XSTATE_SSE) + if (xstate_bv & X86_XSTATE_SSE) regnum = create_feature_i386_32bit_sse (tdesc.get (), regnum); if (is_linux) @@ -56,14 +58,17 @@ i386_create_target_description (uint64_t xcr0, bool is_linux, bool segments) if (segments) regnum = create_feature_i386_32bit_segments (tdesc.get (), regnum); - if (xcr0 & X86_XSTATE_AVX) + if (xstate_bv & X86_XSTATE_AVX) regnum = create_feature_i386_32bit_avx (tdesc.get (), regnum); - if (xcr0 & X86_XSTATE_AVX512) + if (xstate_bv & X86_XSTATE_AVX512) regnum = create_feature_i386_32bit_avx512 (tdesc.get (), regnum); - if (xcr0 & X86_XSTATE_PKRU) + if (xstate_bv & X86_XSTATE_PKRU) regnum = create_feature_i386_pkeys (tdesc.get (), regnum); + if (xstate_bv & X86_XSTATE_CET_U) + regnum = create_feature_i386_32bit_ssp (tdesc.get (), regnum); + return tdesc.release (); } |