X-Git-Url: http://drtracing.org/?a=blobdiff_plain;ds=sidebyside;f=gdb%2Famd64-linux-tdep.c;h=98224c3d34b7f8c3810e8ddf83fe2ed5e89d85ad;hb=0154d99053a95392380cd4629a89b0ac46df3737;hp=b0950f2806790f6779870b9c7f46a44aef42d4dd;hpb=d9b19c4992e7384f12441bc13c0e22d4054b0487;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/amd64-linux-tdep.c b/gdb/amd64-linux-tdep.c index b0950f2806..98224c3d34 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-2015 Free Software Foundation, Inc. + Copyright (C) 2001-2016 Free Software Foundation, Inc. Contributed by Jiri Smid, SuSE Labs. This file is part of GDB. @@ -43,6 +43,7 @@ #include "features/i386/amd64-linux.c" #include "features/i386/amd64-avx-linux.c" #include "features/i386/amd64-mpx-linux.c" +#include "features/i386/amd64-avx-mpx-linux.c" #include "features/i386/amd64-avx512-linux.c" #include "features/i386/x32-linux.c" @@ -1590,6 +1591,11 @@ amd64_linux_core_read_description (struct gdbarch *gdbarch, return tdesc_x32_avx_linux; /* No x32 MPX falling back to AVX. */ else return tdesc_amd64_mpx_linux; + case X86_XSTATE_AVX_MPX_MASK: + if (gdbarch_ptr_bit (gdbarch) == 32) + return tdesc_x32_avx_linux; /* No x32 MPX falling back to AVX. */ + else + return tdesc_amd64_avx_mpx_linux; case X86_XSTATE_AVX_MASK: if (gdbarch_ptr_bit (gdbarch) == 32) return tdesc_x32_avx_linux; @@ -1838,6 +1844,10 @@ amd64_linux_init_abi_common(struct gdbarch_info info, struct gdbarch *gdbarch) set_gdbarch_process_record (gdbarch, i386_process_record); set_gdbarch_process_record_signal (gdbarch, amd64_linux_record_signal); + + set_gdbarch_get_siginfo_type (gdbarch, x86_linux_get_siginfo_type); + set_gdbarch_handle_segmentation_fault (gdbarch, + i386_linux_handle_segmentation_fault); } static void @@ -2133,7 +2143,7 @@ amd64_x32_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) = gdbarch_long_bit (gdbarch) / TARGET_CHAR_BIT; amd64_x32_linux_record_tdep.size_ulong = gdbarch_long_bit (gdbarch) / TARGET_CHAR_BIT; - amd64_x32_linux_record_tdep.size_msghdr = 56; + amd64_x32_linux_record_tdep.size_msghdr = 28; amd64_x32_linux_record_tdep.size_itimerval = 32; amd64_x32_linux_record_tdep.size_stat = 144; amd64_x32_linux_record_tdep.size_old_utsname = 325; @@ -2154,7 +2164,7 @@ amd64_x32_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) amd64_x32_linux_record_tdep.size_sigset_t = 8; amd64_x32_linux_record_tdep.size_siginfo_t = 128; amd64_x32_linux_record_tdep.size_cap_user_data_t = 8; - amd64_x32_linux_record_tdep.size_stack_t = 24; + amd64_x32_linux_record_tdep.size_stack_t = 12; amd64_x32_linux_record_tdep.size_off_t = 8; amd64_x32_linux_record_tdep.size_stat64 = 144; amd64_x32_linux_record_tdep.size_gid_t = 4; @@ -2174,8 +2184,8 @@ amd64_x32_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch) amd64_x32_linux_record_tdep.size_serial_struct = 72; amd64_x32_linux_record_tdep.size_serial_icounter_struct = 80; amd64_x32_linux_record_tdep.size_hayes_esp_config = 12; - amd64_x32_linux_record_tdep.size_size_t = 8; - amd64_x32_linux_record_tdep.size_iovec = 16; + amd64_x32_linux_record_tdep.size_size_t = 4; + amd64_x32_linux_record_tdep.size_iovec = 8; amd64_x32_linux_record_tdep.size_time_t = 8; /* These values are the second argument of system call "sys_fcntl" @@ -2283,6 +2293,7 @@ _initialize_amd64_linux_tdep (void) initialize_tdesc_amd64_linux (); initialize_tdesc_amd64_avx_linux (); initialize_tdesc_amd64_mpx_linux (); + initialize_tdesc_amd64_avx_mpx_linux (); initialize_tdesc_amd64_avx512_linux (); initialize_tdesc_x32_linux ();