2004-02-23 04:29:48 +08:00
|
|
|
|
/* Target-dependent code for GNU/Linux x86-64.
|
2002-02-25 06:14:33 +08:00
|
|
|
|
|
2014-01-01 11:54:24 +08:00
|
|
|
|
Copyright (C) 2001-2014 Free Software Foundation, Inc.
|
2001-09-21 20:19:15 +08:00
|
|
|
|
Contributed by Jiri Smid, SuSE Labs.
|
|
|
|
|
|
|
|
|
|
This file is part of GDB.
|
|
|
|
|
|
|
|
|
|
This program is free software; you can redistribute it and/or modify
|
|
|
|
|
it under the terms of the GNU General Public License as published by
|
2007-08-24 02:08:50 +08:00
|
|
|
|
the Free Software Foundation; either version 3 of the License, or
|
2001-09-21 20:19:15 +08:00
|
|
|
|
(at your option) any later version.
|
|
|
|
|
|
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
|
GNU General Public License for more details.
|
|
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
2007-08-24 02:08:50 +08:00
|
|
|
|
along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
2001-09-21 20:19:15 +08:00
|
|
|
|
|
|
|
|
|
#include "defs.h"
|
* opcode/i386.h: Add multiple inclusion protection.
(EAX_REG_NUM,ECX_REG_NUM,EDX_REGNUM,EBX_REG_NUM,ESI_REG_NUM)
(EDI_REG_NUM): New macros.
(MODRM_MOD_FIELD,MODRM_REG_FIELD,MODRM_RM_FIELD): New macros.
(SIB_SCALE_FIELD,SIB_INDEX_FIELD,SIB_BASE_FIELD): New macros.
(REG_PREFIX_P): New macro.
* amd64-tdep.h (amd64_displaced_step_copy_insn): Declare.
(amd64_displaced_step_fixup): Declare.
* amd64-tdep.c: #include opcode/i386.h, dis-asm.h.
(amd64_arch_regmap): Move out of amd64_analyze_stack_align
and make static global.
(amd64_arch_regmap_len): New static global.
(amd64_arch_reg_to_regnum): New function.
(struct amd64_insn): New struct.
(struct displaced_step_closure): New struct.
(onebyte_has_modrm,twobyte_has_modrm): New static globals.
(rex_prefix_p,skip_prefixes)
(amd64_insn_length_fprintf,amd64_insn_length_init_dis)
(amd64_insn_length,amd64_get_unused_input_int_reg)
(amd64_get_insn_details,fixup_riprel,fixup_displaced_copy)
(amd64_displaced_step_copy_insn)
(amd64_absolute_jmp_p,amd64_absolute_call_p,amd64_ret_p)
(amd64_call_p,amd64_breakpoint_p,amd64_syscall_p)
(amd64_displaced_step_fixup): New functions.
* amd64-linux-tdep.c: #include arch-utils.h.
(amd64_linux_init_abi): Install displaced stepping support.
* gdb.arch/amd64-disp-step.S: New file.
* gdb.arch/amd64-disp-step.exp: New file.
* gdb.arch/i386-disp-step.S: New file.
* gdb.arch/i386-disp-step.exp: New file.
2009-01-29 08:29:57 +08:00
|
|
|
|
#include "arch-utils.h"
|
* amd64-linux-tdep.h: Remove file.
* amd64-linux-tdep.c: Don't include "inferior.h" and
"amd64-linux-tdep.h". Include "frame.h" and "solib-svr4.h".
(USER_R15, USER_R14, USER_R13, USER_R12, USER_RBP, USER_RBX)
(USER_R11, USER_R10, USER_R9, USER_R8, USER_RAX, USER_RCX)
(USER_RDX, USER_RSI, USER_RDI, USER_RIP, USER_CS, USER_EFLAGS)
(USER_RSP, USER_SS, USER_DS, USER_ES, USER_FS, USER_GS): Remove
macros.
(user_to_gdb_regmap): Remove variable.
(amd64_linux_gregset_reg_offset): New variable.
(amd64_core_fns): Remove variable.
(fetch_core_registers): Remove function.
(amd64_linux_supply_gregset, amd64_linux_fill_gregset): Remove
functions.
(_initialize_amd64_linux_tdep): Don't set add_core_fns.
* amd64-linux-nat.c: Don't include "amd64-linux-tdep.h".
* Makefile.in (amd64_linux_tdep_h): Remove.
(amd64-linux-nat.o): Update dependencies.
(amd64-linux-tdep.o): Update dependencies.
2004-03-15 06:39:26 +08:00
|
|
|
|
#include "frame.h"
|
2001-09-21 20:19:15 +08:00
|
|
|
|
#include "gdbcore.h"
|
|
|
|
|
#include "regcache.h"
|
2003-01-07 04:45:30 +08:00
|
|
|
|
#include "osabi.h"
|
* amd64-tdep.c (amd64_sigtramp_frame_sniffer): Rewrite to use new
sigtramp_p member of `struct gdbarch_tdep'. Also check whether
the program counter is in the range specified by `struct
gdbarch_tdep'.
* amd64-linux-tdep.c: Include "symtab.h".
(amd64_linux_pc_in_sigtramp): Remove function.
(amd64_linux_sigtramp_p): New function.
(amd64_linux_init_abi): Initialize TDEP->sigtramp_p. Don't set
deprecated_pc_in_sigtramp.
* amd64nbsd-tdep.c: Include "symtab.h".
(amd64nbsd_sigtramp_p): New function.
(amd64nbsd_init_abi): Initialize TDEP->sigtramp_p. Don't set
deprecated_pc_in_sigtramp.
* amd64obsd-tdep.c: Include "symtab.h" and "objfiles.h". Add a
few comments.
(amd64obsd_pc_in_sigtramp): Remove function.
(amd64obsd_sigtramp_p): New function.
(amd64obsd_init_abi): Initialize TDEP->sigtramp_p. Don't set
deprecated_pc_in_sigtramp.
* i386-tdep.h (struct gdbarch_tdep): Add sigtramp_p member.
(i386bsd_pc_ins_sigtramp): Remove prototype.
(i386bsd_sigtramp_start, i386bsd_sigtramp_end): Remove prototypes.
* i386-tdep.c (i386_sigtramp_frame_sniffer): Rewrite to use new
sigtramp_p member of `struct gdbarch_tdep'. Also check whether
the program counter is in the range specified by `struct
gdbarch_tdep'.
(i386_pc_in_sigtramp, i386_svr4_pc_in_sigtramp): Remove functions.
(i386_sigtramp_p, i386_svr4_sigtramp_p): New functions.
(i386_go32_pc_in_sigtramp): Remove function.
(i386_svr4_init_abi): Don't set deprecated_pc_in_sigtramp.
Initialize TDEP->sigtramp_p.
(i386_go32_init_abi): Initialize TDEP->sigtramp_p to NULL.
(i386_gdbarch_init): Initialize TDEP->sigtramp_p. Don't set
deprecated_pc_in_sigtramp.
* i386-linux-tdep.c: Adjust comments.
(i386_linux_pc_in_sigtramp): Remove function.
(i386_linux_sigtramp_p): New function.
(i386_linux_init_abi): Initialize TDEP->sigtramp_p. Don't set
deprecated_pc_in_sigtramp.
* i386-nto-tdep.c: Update copyright year.
(i386nto_pc_in_sigtramp): Remove function.
(i386nto_sigtramp_p): New function.
(i386nto_sigcontext_addr): Use I386_ESP_REGNUM instead of
SP_REGNUM.
(i386nto_init_abi): Initialize TDEP->sigtramp_p. Don't set
deprecated_pc_in_sigtramp.
* i386-sol2-tdep.c: Update copyright year.
(i386_sol2_pc_in_sigtramp): Remove function.
(i386_sol2_sigtramp_p): New function.
(i386_sol2_init_abi): Initialize TDEP->sigtramp_p. Don't set
deprecated_pc_in_sigtramp.
* i386bsd-tdep.c (i386bsd_pc_in_sigtramp): Remove function.
(i386bsd_sigtramp_start, i386bsd_sigtramp_end): Remove functions.
(i386bsd_init_abi): Don't set deprecated_pc_in_sigtramp,
deprecated_sigtramp_start and deprecated_sigtramp_end.
* i386nbsd-tdep.c: Include "frame.h" and "symtab.h".
(i386nbsd_pc_in_sigtramp): Remove function.
(i386nbsd_sigtramp_p): New function.
(i386nbsd_init_abi): Don't set deprecated_pc_in_sigtramp,
deprecated_sigtramp_start, deprecated_sigtramp_end. Initialize
TDEP->sigtramp_start, TDEP->sigtramp_end and TDEP->sigtramp_p.
* i386obsd-tdep.c: Include "frame.h", "symtab.h" and "objfiles.h".
(i386obsd_pc_in_sigtramp): Remove function.
(i386obsd_sigtramp_p): New function.
(i386obsd_sigtramp_start, i386obsd_sigtramp_end): Remove
functions.
(i386bsd_init_abi): Don't set deprecated_pc_in_sigtramp,
deprecated_sigtramp_start, deprecated_sigtramp_end. Initialize
TDEP->sigtramp_p.
* Makefile.in (amd64-linux-tdep.o, amd64nbsd-tdep.o,
amd64obsd-tdep.o, i386nbsd-tdep.o, i386obsd-tdep.o): Update
dependencies.
2004-04-10 00:28:50 +08:00
|
|
|
|
#include "symtab.h"
|
2006-08-19 23:15:18 +08:00
|
|
|
|
#include "gdbtypes.h"
|
|
|
|
|
#include "reggroups.h"
|
2010-04-08 02:46:50 +08:00
|
|
|
|
#include "regset.h"
|
2006-08-19 23:15:18 +08:00
|
|
|
|
#include "amd64-linux-tdep.h"
|
2010-04-08 02:46:50 +08:00
|
|
|
|
#include "i386-linux-tdep.h"
|
2009-02-07 06:59:01 +08:00
|
|
|
|
#include "linux-tdep.h"
|
Rename 32- and 64-bit Intel files from "i386" to "x86"
This commit renames nine files that contain code used by both 32- and
64-bit Intel ports such that their names are prefixed with "x86"
rather than "i386". All types, functions and variables within these
files are likewise renamed such that their names are prefixed with
"x86" rather than "i386". This makes GDB follow the convention used
by gdbserver such that 32-bit Intel code lives in files called
"i386-*", 64-bit Intel code lives in files called "amd64-*", and code
for both 32- and 64-bit Intel lives in files called "x86-*".
This commit only renames OS-independent files. The Linux ports of
both GDB and gdbserver now follow the i386/amd64/x86 convention fully.
Some ports still use the old convention where "i386" in file/function/
type/variable names can mean "32-bit only" or "32- and 64-bit" but I
don't want to touch ports I can't fully test except where absolutely
necessary.
gdb/ChangeLog:
* i386-nat.h: Renamed as...
* x86-nat.h: New file. All type, function and variable name
prefixes changed from "i386_" to "x86_". All references updated.
* i386-nat.c: Renamed as...
* x86-nat.c: New file. All type, function and variable name
prefixes changed from "i386_" to "x86_". All references updated.
* common/i386-xstate.h: Renamed as...
* common/x86-xstate.h: New file. All type, function and variable
name prefixes changed from "i386_" to "x86_". All references
updated.
* nat/i386-cpuid.h: Renamed as...
* nat/x86-cpuid.h: New file. All type, function and variable name
prefixes changed from "i386_" to "x86_". All references updated.
* nat/i386-gcc-cpuid.h: Renamed as...
* nat/x86-gcc-cpuid.h: New file. All type, function and variable
name prefixes changed from "i386_" to "x86_". All references
updated.
* nat/i386-dregs.h: Renamed as...
* nat/x86-dregs.h: New file. All type, function and variable name
prefixes changed from "i386_" to "x86_". All references updated.
* nat/i386-dregs.c: Renamed as...
* nat/x86-dregs.c: New file. All type, function and variable name
prefixes changed from "i386_" to "x86_". All references updated.
gdb/gdbserver/ChangeLog:
* i386-low.h: Renamed as...
* x86-low.h: New file. All type, function and variable name
prefixes changed from "i386_" to "x86_". All references updated.
* i386-low.c: Renamed as...
* x86-low.c: New file. All type, function and variable name
prefixes changed from "i386_" to "x86_". All references updated.
2014-08-19 22:16:11 +08:00
|
|
|
|
#include "x86-xstate.h"
|
2001-09-21 20:19:15 +08:00
|
|
|
|
|
* amd64-tdep.h: Renamed from x86-64-tdep.h.
* amd64-tdep.c: Renamed from x86-64-tdep.c. Include
"amd64-tdep.h" instead of "x86-64-tdep.h".
* amd64-nat.c: Include "amd64-tdep.h" instead of "x86-64-tdep.h".
* amd64-linux-tdep.h: Renamed from x86-64-linux.h.
* amd64-linux-tdep.c: Renamed from x86-64-linux-tdep.c. Include
"amd64-tdep.h" and "amd64-linux-tdep.h" instead of "x86-64-tdep.h"
and "x86-64-tdep.c".
* amd64-linux-nat.c: Renamed from x86-64-linux-nat.c. Include
"amd64-tdep.h" and "amd64-linux-tdep.h" instead of "x86-64-tdep.h"
and "x86-64-tdep.c".
* amd64bsd-nat.c: Update copyright year.
Include "amd64-tdep.h" instead of "x86-64-tdep.h".
* amd64fbsd-tdep.c: Include "amd64-tdep.h" instead of
"x86-64-tdep.h".
* amd64fbsd-nat.c: Include "amd64-tdep.h" instead of
"x86-64-tdep.h".
* amd64nbsd-tdep.c: Include "amd64-tdep.h" instead of
"x86-64-tdep.h".
* amd64nbsd-nat.c: Include "amd64-tdep.h" instead of
"x86-64-tdep.h".
* amd64obsd-tdep.c: Include "amd64-tdep.h" instead of
"x86-64-tdep.h".
* amd64obsd-nat.c: Include "amd64-tdep.h" instead of
"x86-64-tdep.h".
* configure.host: (x86_64-*-linux*): Set gdb_target to linux64.
* configure.tgt (x86_64-*-linux*): Set gdb_target to linux64.
* Makefile.in (amd64_linux_tdep_h): Renamed from
x86_64_linux_tdep_h.
(amd64_tdep_h): Renamed from x86_64_tdep_h.
(amd64bsd-nat.o, amd64fbsd-nat.o, amd64fbsd-tdep.o, amd64-nat.o)
(amd64nbsd-nat.o, amd64nbsd-tdep.o, amd64obsd-nat.o)
(amd64obsd-tdep.o): Update dependencies.
(amd64-tdep.o, amd64-linux-nat.o, amd64-linux-tdep.o): New
dependencies.
(x86-64-linux-nat.o, x86-64-linux-tdep.o, x86-64-tdep.o): Remove
dependencies.
(ALLDEPFILES): Add amd64-tdep.c, amd64obsd-nat.c, amd64obsd-nat.c,
amd64-linux-nat.c amd64-linux-tdep.c.
* config/i386/tm-linux64.h: Renamed from tm-x86-64linux.h
* config/i386/nm-linux64.h: Renamed from nm-x86-64linux.h.
* config/i386/linux64.mt: Renamed from x86-64linux.mt.
(TDEPFILES): Replace x86-64-tdep.o and x86-64-linux-tdep.o with
amd64-tdep.o and amd64-linux-tdep.o.
(TM_FILE): Set to tm-linux64.h.
* config/i386/linux64.mh: Renamed from x86-64linux.mh.
(NAT_FILE): Set to nm-linux64.h.
(NATDEPFILES): Replace x86-64-linux-nat.o with amd64-linux-nat.o.
* config/i386/fbsd64.mt (TDEPFILES): Replace x86-64-tdep.o with
amd64-tdep.o.
* config/i386/nbsd64.mt (TDEPFILES): Replace x86-64-tdep.o with
amd64-tdep.o.
* config/i386/obsd64.mt (TDEPFILES): Replace x86-64-tdep.o with
amd64-tdep.o.
2004-02-26 04:45:31 +08:00
|
|
|
|
#include "amd64-tdep.h"
|
* amd64-linux-tdep.h: Remove file.
* amd64-linux-tdep.c: Don't include "inferior.h" and
"amd64-linux-tdep.h". Include "frame.h" and "solib-svr4.h".
(USER_R15, USER_R14, USER_R13, USER_R12, USER_RBP, USER_RBX)
(USER_R11, USER_R10, USER_R9, USER_R8, USER_RAX, USER_RCX)
(USER_RDX, USER_RSI, USER_RDI, USER_RIP, USER_CS, USER_EFLAGS)
(USER_RSP, USER_SS, USER_DS, USER_ES, USER_FS, USER_GS): Remove
macros.
(user_to_gdb_regmap): Remove variable.
(amd64_linux_gregset_reg_offset): New variable.
(amd64_core_fns): Remove variable.
(fetch_core_registers): Remove function.
(amd64_linux_supply_gregset, amd64_linux_fill_gregset): Remove
functions.
(_initialize_amd64_linux_tdep): Don't set add_core_fns.
* amd64-linux-nat.c: Don't include "amd64-linux-tdep.h".
* Makefile.in (amd64_linux_tdep_h): Remove.
(amd64-linux-nat.o): Update dependencies.
(amd64-linux-tdep.o): Update dependencies.
2004-03-15 06:39:26 +08:00
|
|
|
|
#include "solib-svr4.h"
|
2009-09-15 11:30:08 +08:00
|
|
|
|
#include "xml-syscall.h"
|
2012-05-07 18:47:22 +08:00
|
|
|
|
#include "glibc-tdep.h"
|
2009-09-15 11:30:08 +08:00
|
|
|
|
|
2010-03-01 23:33:32 +08:00
|
|
|
|
#include "features/i386/amd64-linux.c"
|
2010-04-08 02:46:50 +08:00
|
|
|
|
#include "features/i386/amd64-avx-linux.c"
|
2013-11-20 20:02:37 +08:00
|
|
|
|
#include "features/i386/amd64-mpx-linux.c"
|
Add AVX512 registers support to GDB and GDBserver.
This patch adds support for the Intel(R) Advanced Vector
Extensions 512 (Intel(R) AVX-512) registers. Native and remote
debugging are covered by this patch.
Intel(R) AVX-512 is an extension to AVX to support 512-bit wide
SIMD registers in 64-bit mode (XMM0-XMM31, YMM0-YMM31, ZMM0-ZMM31).
The number of available registers in 32-bit mode is still 8
(XMM0-7, YMM0-7, ZMM0-7). The lower 256-bits of the ZMM registers
are aliased to the respective 256-bit YMM registers. The lower
128-bits are aliased to the respective 128-bit XMM registers.
There are also 8 new, dedicated mask registers (K0-K7) in both 32-bit
mode and 64-bit mode.
For more information please see
Intel(R) Developer Zone: Intel(R) AVX
http://software.intel.com/en-us/intel-isa-extensions#pid-16007-1495
Intel(R) Architecture Instruction Set Extensions Programming Reference:
http://software.intel.com/en-us/file/319433-017pdf
2014-04-24 Michael Sturm <michael.sturm@mintel.com>
Walfred Tedeschi <walfred.tedeschi@intel.com>
* amd64-linux-nat.c (amd64_linux_gregset32_reg_offset): Add
AVX512 registers.
(amd64_linux_read_description): Add code to handle AVX512 xstate
mask and return respective tdesc.
* amd64-linux-tdep.c: Include features/i386/amd64-avx512-linux.c
and features/i386/x32-avx512-linux.c.
(amd64_linux_gregset_reg_offset): Add AVX512 registers.
(amd64_linux_core_read_description): Add code to handle AVX512
xstate mask and return respective tdesc.
(_initialize_amd64_linux_tdep): Initialize AVX512 tdesc.
* amd64-linux-tdep.h (AMD64_LINUX_ORIG_RAX_REGNUM): Adjust regnum
calculation.
(AMD64_LINUX_NUM_REGS): Adjust to new number of registers.
(tdesc_amd64_avx512_linux): New prototype.
(tdesc_x32_avx512_linux): Likewise.
* amd64-tdep.c: Include features/i386/amd64-avx512.c and
features/i386/x32-avx512.c.
(amd64_ymm_avx512_names): New register names for pseudo
registers YMM16-31.
(amd64_ymmh_avx512_names): New register names for raw registers
YMMH16-31.
(amd64_k_names): New register names for K registers.
(amd64_zmmh_names): New register names for ZMM raw registers.
(amd64_zmm_names): New registers names for ZMM pseudo registers.
(amd64_xmm_avx512_names): New register names for XMM16-31
registers.
(amd64_pseudo_register_name): Add code to return AVX512 pseudo
registers.
(amd64_init_abi): Add code to intitialize AVX512 tdep variables
if feature is present.
(_initialize_amd64_tdep): Call AVX512 tdesc initializers.
* amd64-tdep.h (enum amd64_regnum): Add AVX512 registers.
(AMD64_NUM_REGS): Adjust to new number of registers.
* i386-linux-nat.c (GETXSTATEREGS_SUPPLIES): Extend range of
registers supplied via XSTATE by AVX512 registers.
(i386_linux_read_description): Add case for AVX512.
* i386-linux-tdep.c: Include i386-avx512-linux.c.
(i386_linux_gregset_reg_offset): Add AVX512 registers.
(i386_linux_core_read_description): Add case for AVX512.
(i386_linux_init_abi): Install supported register note section
for AVX512.
(_initialize_i386_linux_tdep): Add call to tdesc init function for
AVX512.
* i386-linux-tdep.h (I386_LINUX_NUM_REGS): Set number of
registers to be number of zmm7h + 1.
(tdesc_i386_avx512_linux): Add tdesc for AVX512 registers.
* i386-tdep.c: Include features/i386/i386-avx512.c.
(i386_zmm_names): Add ZMM pseudo register names array.
(i386_zmmh_names): Add ZMM raw register names array.
(i386_k_names): Add K raw register names array.
(num_lower_zmm_regs): Add constant for the number of lower ZMM
registers. AVX512 has 16 more ZMM registers than there are YMM
registers.
(i386_zmmh_regnum_p): Add function to look up register number of
ZMM raw registers.
(i386_zmm_regnum_p): Likewise for ZMM pseudo registers.
(i386_k_regnum_p): Likewise for K raw registers.
(i386_ymmh_avx512_regnum_p): Likewise for additional YMM raw
registers added by AVX512.
(i386_ymm_avx512_regnum_p): Likewise for additional YMM pseudo
registers added by AVX512.
(i386_xmm_avx512_regnum_p): Likewise for additional XMM registers
added by AVX512.
(i386_register_name): Add code to hide YMMH16-31 and ZMMH0-31.
(i386_pseudo_register_name): Add ZMM pseudo registers.
(i386_zmm_type): Construct and return vector registers type for ZMM
registers.
(i386_pseudo_register_type): Return appropriate type for YMM16-31,
ZMM0-31 pseudo registers and K registers.
(i386_pseudo_register_read_into_value): Add code to read K, ZMM
and YMM16-31 registers from register cache.
(i386_pseudo_register_write): Add code to write K, ZMM and
YMM16-31 registers.
(i386_register_reggroup_p): Add code to include/exclude AVX512
registers in/from respective register groups.
(i386_validate_tdesc_p): Handle AVX512 feature, add AVX512
registers if feature is present in xcr0.
(i386_gdbarch_init): Add code to initialize AVX512 feature
variables in tdep structure, wire in pseudo registers and call
initialize_tdesc_i386_avx512.
* i386-tdep.h (struct gdbarch_tdep): Add AVX512 related
variables.
(i386_regnum): Add AVX512 registers.
(I386_SSE_NUM_REGS): New define for number of SSE registers.
(I386_AVX_NUM_REGS): Likewise for AVX registers.
(I386_AVX512_NUM_REGS): Likewise for AVX512 registers.
(I386_MAX_REGISTER_SIZE): Change to 64 bytes, ZMM registers are
512 bits wide.
(i386_xmm_avx512_regnum_p): New prototype for register look up.
(i386_ymm_avx512_regnum_p): Likewise.
(i386_k_regnum_p): Likewise.
(i386_zmm_regnum_p): Likewise.
(i386_zmmh_regnum_p): Likewise.
* i387-tdep.c : Update year in copyright notice.
(xsave_ymm_avx512_offset): New table for YMM16-31 offsets in
XSAVE buffer.
(XSAVE_YMM_AVX512_ADDR): New macro.
(xsave_xmm_avx512_offset): New table for XMM16-31 offsets in
XSAVE buffer.
(XSAVE_XMM_AVX512_ADDR): New macro.
(xsave_avx512_k_offset): New table for K register offsets in
XSAVE buffer.
(XSAVE_AVX512_K_ADDR): New macro.
(xsave_avx512_zmm_h_offset): New table for ZMM register offsets
in XSAVE buffer.
(XSAVE_AVX512_ZMM_H_ADDR): New macro.
(i387_supply_xsave): Add code to supply AVX512 registers to XSAVE
buffer.
(i387_collect_xsave): Add code to collect AVX512 registers from
XSAVE buffer.
* i387-tdep.h (I387_NUM_XMM_AVX512_REGS): New define for number
of XMM16-31 registers.
(I387_NUM_K_REGS): New define for number of K registers.
(I387_K0_REGNUM): New define for K0 register number.
(I387_NUM_ZMMH_REGS): New define for number of ZMMH registers.
(I387_ZMM0H_REGNUM): New define for ZMM0H register number.
(I387_NUM_YMM_AVX512_REGS): New define for number of YMM16-31
registers.
(I387_YMM16H_REGNUM): New define for YMM16H register number.
(I387_XMM16_REGNUM): New define for XMM16 register number.
(I387_YMM0_REGNUM): New define for YMM0 register number.
(I387_KEND_REGNUM): New define for last K register number.
(I387_ZMMENDH_REGNUM): New define for last ZMMH register number.
(I387_YMMH_AVX512_END_REGNUM): New define for YMM31 register
number.
(I387_XMM_AVX512_END_REGNUM): New define for XMM31 register
number.
* common/i386-xstate.h: Add AVX 3.1 feature bits, mask and XSTATE
size.
* features/Makefile: Add AVX512 related files.
* features/i386/32bit-avx512.xml: New file.
* features/i386/64bit-avx512.xml: Likewise.
* features/i386/amd64-avx512-linux.c: Likewise.
* features/i386/amd64-avx512-linux.xml: Likewise.
* features/i386/amd64-avx512.c: Likewise.
* features/i386/amd64-avx512.xml: Likewise.
* features/i386/i386-avx512-linux.c: Likewise.
* features/i386/i386-avx512-linux.xml: Likewise.
* features/i386/i386-avx512.c: Likewise.
* features/i386/i386-avx512.xml: Likewise.
* features/i386/x32-avx512-linux.c: Likewise.
* features/i386/x32-avx512-linux.xml: Likewise.
* features/i386/x32-avx512.c: Likewise.
* features/i386/x32-avx512.xml: Likewise.
* regformats/i386/amd64-avx512-linux.dat: New file.
* regformats/i386/amd64-avx512.dat: Likewise.
* regformats/i386/i386-avx512-linux.dat: Likewise.
* regformats/i386/i386-avx512.dat: Likewise.
* regformats/i386/x32-avx512-linux.dat: Likewise.
* regformats/i386/x32-avx512.dat: Likewise.
* NEWS: Add note about new support for AVX512.
testsuite/
* Makefile.in (EXECUTABLES): Added i386-avx512.
* gdb.arch/i386-avx512.c: New file.
* gdb.arch/i386-avx512.exp: Likewise.
gdbserver/
* Makefile.in: Added rules to handle new files
i386-avx512.c i386-avx512-linux.c amd64-avx512.c
amd64-avx512-linux.c x32-avx512.c x32-avx512-linux.c.
* configure.srv (srv_i386_regobj): Add i386-avx512.o.
(srv_i386_linux_regobj): Add i386-avx512-linux.o.
(srv_amd64_regobj): Add amd64-avx512.o and x32-avx512.o.
(srv_amd64_linux_regobj): Add amd64-avx512-linux.o and
x32-avx512-linux.o.
(srv_i386_32bit_xmlfiles): Add i386/32bit-avx512.xml.
(srv_i386_64bit_xmlfiles): Add i386/64bit-avx512.xml.
(srv_amd64_xmlfiles): Add i386/amd64-avx512.xml and
i386/x32-avx512.xml.
(srv_i386_linux_xmlfiles): Add i386/i386-avx512-linux.xml.
(srv_amd64_linux_xmlfiles): Add i386/amd64-avx512-linux.xml and
i386/x32-avx512-linux.xml.
* i387-fp.c (num_avx512_k_registers): New constant for number
of K registers.
(num_avx512_zmmh_low_registers): New constant for number of
lower ZMM registers (0-15).
(num_avx512_zmmh_high_registers): New constant for number of
higher ZMM registers (16-31).
(num_avx512_ymmh_registers): New contant for number of higher
YMM registers (ymm16-31 added by avx521 on x86_64).
(num_avx512_xmm_registers): New constant for number of higher
XMM registers (xmm16-31 added by AVX512 on x86_64).
(struct i387_xsave): Add space for AVX512 registers.
(i387_cache_to_xsave): Change raw buffer size to 64 characters.
Add code to handle AVX512 registers.
(i387_xsave_to_cache): Add code to handle AVX512 registers.
* linux-x86-low.c (init_registers_amd64_avx512_linux): New
prototypei from generated file.
(tdesc_amd64_avx512_linux): Likewise.
(init_registers_x32_avx512_linux): Likewise.
(tdesc_x32_avx512_linux): Likewise.
(init_registers_i386_avx512_linux): Likewise.
(tdesc_i386_avx512_linux): Likewise.
(x86_64_regmap): Add AVX512 registers.
(x86_linux_read_description): Add code to handle AVX512 XSTATE
mask.
(initialize_low_arch): Add code to initialize AVX512 registers.
doc/
* gdb.texinfo (i386 Features): Add description of AVX512
registers.
Change-Id: Ifc4c08c76b85dbec18d02efdbe6182e851584438
Signed-off-by: Michael Sturm <michael.sturm@intel.com>
2013-12-16 23:43:05 +08:00
|
|
|
|
#include "features/i386/amd64-avx512-linux.c"
|
|
|
|
|
|
2012-05-12 06:31:27 +08:00
|
|
|
|
#include "features/i386/x32-linux.c"
|
|
|
|
|
#include "features/i386/x32-avx-linux.c"
|
Add AVX512 registers support to GDB and GDBserver.
This patch adds support for the Intel(R) Advanced Vector
Extensions 512 (Intel(R) AVX-512) registers. Native and remote
debugging are covered by this patch.
Intel(R) AVX-512 is an extension to AVX to support 512-bit wide
SIMD registers in 64-bit mode (XMM0-XMM31, YMM0-YMM31, ZMM0-ZMM31).
The number of available registers in 32-bit mode is still 8
(XMM0-7, YMM0-7, ZMM0-7). The lower 256-bits of the ZMM registers
are aliased to the respective 256-bit YMM registers. The lower
128-bits are aliased to the respective 128-bit XMM registers.
There are also 8 new, dedicated mask registers (K0-K7) in both 32-bit
mode and 64-bit mode.
For more information please see
Intel(R) Developer Zone: Intel(R) AVX
http://software.intel.com/en-us/intel-isa-extensions#pid-16007-1495
Intel(R) Architecture Instruction Set Extensions Programming Reference:
http://software.intel.com/en-us/file/319433-017pdf
2014-04-24 Michael Sturm <michael.sturm@mintel.com>
Walfred Tedeschi <walfred.tedeschi@intel.com>
* amd64-linux-nat.c (amd64_linux_gregset32_reg_offset): Add
AVX512 registers.
(amd64_linux_read_description): Add code to handle AVX512 xstate
mask and return respective tdesc.
* amd64-linux-tdep.c: Include features/i386/amd64-avx512-linux.c
and features/i386/x32-avx512-linux.c.
(amd64_linux_gregset_reg_offset): Add AVX512 registers.
(amd64_linux_core_read_description): Add code to handle AVX512
xstate mask and return respective tdesc.
(_initialize_amd64_linux_tdep): Initialize AVX512 tdesc.
* amd64-linux-tdep.h (AMD64_LINUX_ORIG_RAX_REGNUM): Adjust regnum
calculation.
(AMD64_LINUX_NUM_REGS): Adjust to new number of registers.
(tdesc_amd64_avx512_linux): New prototype.
(tdesc_x32_avx512_linux): Likewise.
* amd64-tdep.c: Include features/i386/amd64-avx512.c and
features/i386/x32-avx512.c.
(amd64_ymm_avx512_names): New register names for pseudo
registers YMM16-31.
(amd64_ymmh_avx512_names): New register names for raw registers
YMMH16-31.
(amd64_k_names): New register names for K registers.
(amd64_zmmh_names): New register names for ZMM raw registers.
(amd64_zmm_names): New registers names for ZMM pseudo registers.
(amd64_xmm_avx512_names): New register names for XMM16-31
registers.
(amd64_pseudo_register_name): Add code to return AVX512 pseudo
registers.
(amd64_init_abi): Add code to intitialize AVX512 tdep variables
if feature is present.
(_initialize_amd64_tdep): Call AVX512 tdesc initializers.
* amd64-tdep.h (enum amd64_regnum): Add AVX512 registers.
(AMD64_NUM_REGS): Adjust to new number of registers.
* i386-linux-nat.c (GETXSTATEREGS_SUPPLIES): Extend range of
registers supplied via XSTATE by AVX512 registers.
(i386_linux_read_description): Add case for AVX512.
* i386-linux-tdep.c: Include i386-avx512-linux.c.
(i386_linux_gregset_reg_offset): Add AVX512 registers.
(i386_linux_core_read_description): Add case for AVX512.
(i386_linux_init_abi): Install supported register note section
for AVX512.
(_initialize_i386_linux_tdep): Add call to tdesc init function for
AVX512.
* i386-linux-tdep.h (I386_LINUX_NUM_REGS): Set number of
registers to be number of zmm7h + 1.
(tdesc_i386_avx512_linux): Add tdesc for AVX512 registers.
* i386-tdep.c: Include features/i386/i386-avx512.c.
(i386_zmm_names): Add ZMM pseudo register names array.
(i386_zmmh_names): Add ZMM raw register names array.
(i386_k_names): Add K raw register names array.
(num_lower_zmm_regs): Add constant for the number of lower ZMM
registers. AVX512 has 16 more ZMM registers than there are YMM
registers.
(i386_zmmh_regnum_p): Add function to look up register number of
ZMM raw registers.
(i386_zmm_regnum_p): Likewise for ZMM pseudo registers.
(i386_k_regnum_p): Likewise for K raw registers.
(i386_ymmh_avx512_regnum_p): Likewise for additional YMM raw
registers added by AVX512.
(i386_ymm_avx512_regnum_p): Likewise for additional YMM pseudo
registers added by AVX512.
(i386_xmm_avx512_regnum_p): Likewise for additional XMM registers
added by AVX512.
(i386_register_name): Add code to hide YMMH16-31 and ZMMH0-31.
(i386_pseudo_register_name): Add ZMM pseudo registers.
(i386_zmm_type): Construct and return vector registers type for ZMM
registers.
(i386_pseudo_register_type): Return appropriate type for YMM16-31,
ZMM0-31 pseudo registers and K registers.
(i386_pseudo_register_read_into_value): Add code to read K, ZMM
and YMM16-31 registers from register cache.
(i386_pseudo_register_write): Add code to write K, ZMM and
YMM16-31 registers.
(i386_register_reggroup_p): Add code to include/exclude AVX512
registers in/from respective register groups.
(i386_validate_tdesc_p): Handle AVX512 feature, add AVX512
registers if feature is present in xcr0.
(i386_gdbarch_init): Add code to initialize AVX512 feature
variables in tdep structure, wire in pseudo registers and call
initialize_tdesc_i386_avx512.
* i386-tdep.h (struct gdbarch_tdep): Add AVX512 related
variables.
(i386_regnum): Add AVX512 registers.
(I386_SSE_NUM_REGS): New define for number of SSE registers.
(I386_AVX_NUM_REGS): Likewise for AVX registers.
(I386_AVX512_NUM_REGS): Likewise for AVX512 registers.
(I386_MAX_REGISTER_SIZE): Change to 64 bytes, ZMM registers are
512 bits wide.
(i386_xmm_avx512_regnum_p): New prototype for register look up.
(i386_ymm_avx512_regnum_p): Likewise.
(i386_k_regnum_p): Likewise.
(i386_zmm_regnum_p): Likewise.
(i386_zmmh_regnum_p): Likewise.
* i387-tdep.c : Update year in copyright notice.
(xsave_ymm_avx512_offset): New table for YMM16-31 offsets in
XSAVE buffer.
(XSAVE_YMM_AVX512_ADDR): New macro.
(xsave_xmm_avx512_offset): New table for XMM16-31 offsets in
XSAVE buffer.
(XSAVE_XMM_AVX512_ADDR): New macro.
(xsave_avx512_k_offset): New table for K register offsets in
XSAVE buffer.
(XSAVE_AVX512_K_ADDR): New macro.
(xsave_avx512_zmm_h_offset): New table for ZMM register offsets
in XSAVE buffer.
(XSAVE_AVX512_ZMM_H_ADDR): New macro.
(i387_supply_xsave): Add code to supply AVX512 registers to XSAVE
buffer.
(i387_collect_xsave): Add code to collect AVX512 registers from
XSAVE buffer.
* i387-tdep.h (I387_NUM_XMM_AVX512_REGS): New define for number
of XMM16-31 registers.
(I387_NUM_K_REGS): New define for number of K registers.
(I387_K0_REGNUM): New define for K0 register number.
(I387_NUM_ZMMH_REGS): New define for number of ZMMH registers.
(I387_ZMM0H_REGNUM): New define for ZMM0H register number.
(I387_NUM_YMM_AVX512_REGS): New define for number of YMM16-31
registers.
(I387_YMM16H_REGNUM): New define for YMM16H register number.
(I387_XMM16_REGNUM): New define for XMM16 register number.
(I387_YMM0_REGNUM): New define for YMM0 register number.
(I387_KEND_REGNUM): New define for last K register number.
(I387_ZMMENDH_REGNUM): New define for last ZMMH register number.
(I387_YMMH_AVX512_END_REGNUM): New define for YMM31 register
number.
(I387_XMM_AVX512_END_REGNUM): New define for XMM31 register
number.
* common/i386-xstate.h: Add AVX 3.1 feature bits, mask and XSTATE
size.
* features/Makefile: Add AVX512 related files.
* features/i386/32bit-avx512.xml: New file.
* features/i386/64bit-avx512.xml: Likewise.
* features/i386/amd64-avx512-linux.c: Likewise.
* features/i386/amd64-avx512-linux.xml: Likewise.
* features/i386/amd64-avx512.c: Likewise.
* features/i386/amd64-avx512.xml: Likewise.
* features/i386/i386-avx512-linux.c: Likewise.
* features/i386/i386-avx512-linux.xml: Likewise.
* features/i386/i386-avx512.c: Likewise.
* features/i386/i386-avx512.xml: Likewise.
* features/i386/x32-avx512-linux.c: Likewise.
* features/i386/x32-avx512-linux.xml: Likewise.
* features/i386/x32-avx512.c: Likewise.
* features/i386/x32-avx512.xml: Likewise.
* regformats/i386/amd64-avx512-linux.dat: New file.
* regformats/i386/amd64-avx512.dat: Likewise.
* regformats/i386/i386-avx512-linux.dat: Likewise.
* regformats/i386/i386-avx512.dat: Likewise.
* regformats/i386/x32-avx512-linux.dat: Likewise.
* regformats/i386/x32-avx512.dat: Likewise.
* NEWS: Add note about new support for AVX512.
testsuite/
* Makefile.in (EXECUTABLES): Added i386-avx512.
* gdb.arch/i386-avx512.c: New file.
* gdb.arch/i386-avx512.exp: Likewise.
gdbserver/
* Makefile.in: Added rules to handle new files
i386-avx512.c i386-avx512-linux.c amd64-avx512.c
amd64-avx512-linux.c x32-avx512.c x32-avx512-linux.c.
* configure.srv (srv_i386_regobj): Add i386-avx512.o.
(srv_i386_linux_regobj): Add i386-avx512-linux.o.
(srv_amd64_regobj): Add amd64-avx512.o and x32-avx512.o.
(srv_amd64_linux_regobj): Add amd64-avx512-linux.o and
x32-avx512-linux.o.
(srv_i386_32bit_xmlfiles): Add i386/32bit-avx512.xml.
(srv_i386_64bit_xmlfiles): Add i386/64bit-avx512.xml.
(srv_amd64_xmlfiles): Add i386/amd64-avx512.xml and
i386/x32-avx512.xml.
(srv_i386_linux_xmlfiles): Add i386/i386-avx512-linux.xml.
(srv_amd64_linux_xmlfiles): Add i386/amd64-avx512-linux.xml and
i386/x32-avx512-linux.xml.
* i387-fp.c (num_avx512_k_registers): New constant for number
of K registers.
(num_avx512_zmmh_low_registers): New constant for number of
lower ZMM registers (0-15).
(num_avx512_zmmh_high_registers): New constant for number of
higher ZMM registers (16-31).
(num_avx512_ymmh_registers): New contant for number of higher
YMM registers (ymm16-31 added by avx521 on x86_64).
(num_avx512_xmm_registers): New constant for number of higher
XMM registers (xmm16-31 added by AVX512 on x86_64).
(struct i387_xsave): Add space for AVX512 registers.
(i387_cache_to_xsave): Change raw buffer size to 64 characters.
Add code to handle AVX512 registers.
(i387_xsave_to_cache): Add code to handle AVX512 registers.
* linux-x86-low.c (init_registers_amd64_avx512_linux): New
prototypei from generated file.
(tdesc_amd64_avx512_linux): Likewise.
(init_registers_x32_avx512_linux): Likewise.
(tdesc_x32_avx512_linux): Likewise.
(init_registers_i386_avx512_linux): Likewise.
(tdesc_i386_avx512_linux): Likewise.
(x86_64_regmap): Add AVX512 registers.
(x86_linux_read_description): Add code to handle AVX512 XSTATE
mask.
(initialize_low_arch): Add code to initialize AVX512 registers.
doc/
* gdb.texinfo (i386 Features): Add description of AVX512
registers.
Change-Id: Ifc4c08c76b85dbec18d02efdbe6182e851584438
Signed-off-by: Michael Sturm <michael.sturm@intel.com>
2013-12-16 23:43:05 +08:00
|
|
|
|
#include "features/i386/x32-avx512-linux.c"
|
2010-03-01 23:33:32 +08:00
|
|
|
|
|
2009-09-15 11:30:08 +08:00
|
|
|
|
/* The syscall's XML filename for i386. */
|
|
|
|
|
#define XML_SYSCALL_FILENAME_AMD64 "syscalls/amd64-linux.xml"
|
2003-07-15 19:33:59 +08:00
|
|
|
|
|
Split record.h into record.h and record-full.h.
Split record.c into record.c and record-full.c.
The split leaves the command part in record.c and moves the target part into
record-full.c.
gdb/
* record.h: Split into this and ...
* record-full.h: ... this.
* record.c: Split into this and ...
* record-full.c: ... this.
* target.h (target_ops): Add new fields to_info_record,
to_save_record, to_delete_record, to_record_is_replaying,
to_goto_record_begin, to_goto_record_end, to_goto_record.
(target_info_record): New.
(target_save_record): New.
(target_supports_delete_record): New.
(target_delete_record): New.
(target_record_is_replaying): New.
(target_goto_record_begin): New.
(target_goto_record_end): New.
(target_goto_record): New.
* target.c (target_info_record): New.
(target_save_record): New.
(target_supports_delete_record): New.
(target_delete_record): New.
(target_record_is_replaying): New.
(target_goto_record_begin): New.
(target_goto_record_end): New.
(target_goto_record): New.
* record.h: Declare struct cmd_list_element.
(record_cmdlist): New declaration.
(set_record_cmdlist): New declaration.
(show_record_cmdlist): New declaration.
(info_record_cmdlist): New declaration.
(cmd_record_goto): New declaration.
* record.c: Remove unnecessary includes.
Include inferior.h.
(cmd_record_goto): Remove declaration.
(record_cmdlist): Now extern. Initialize.
(set_record_cmdlist): Now extern. Initialize.
(show_record_cmdlist): Now extern. Initialize.
(info_record_cmdlist): Now extern. Initialize.
(find_record_target): New.
(require_record_target): New.
(cmd_record_start): Update.
(cmd_record_delete): Remove target-specific code.
Call target_delete_record.
(cmd_record_stop): Unpush any record target.
(set_record_insn_max_num): Move to record-full.c
(set_record_command): Add comment.
(show_record_command): Add comment.
(info_record_command): Update comment.
Remove target-specific code.
Call the record target's to_info_record.
(cmd_record_start): New.
(cmd_record_goto): Now extern.
Remove target-specific code.
Call target_goto_begin, target_goto_end, or target_goto.
(_initialize_record): Move record target ops initialization to
record-full.c.
Change "record" command help text.
Move "record restore", "record set", and "record show" commands to
record-full.c.
* Makefile.in (SFILES): Add record-full.c.
(HFILES_NO_SRCDIR): Add record-full.h.
(COMMON_OBS): Add record-full.o.
* amd64-linux-tdep.c: Include record-full.h instead of record.h.
* arm-tdep.c: Include record-full.h.
* i386-linux-tdep.c: Include record-full.h instead of record.h.
* i386-tdep.c: Include record-full.h.
* infrun.c: Include record-full.h.
* linux-record.c: Include record-full.h.
* moxie-tdep.c: Include record-full.h.
* record-full.c: Include record-full.h.
Change module comment.
(set_record_full_cmdlist): New.
(show_record_full_cmdlist): New.
(record_full_cmdlist): New.
(record_goto_insn): New declaration.
(record_save): New declaration.
(record_check_insn_num): Change query string.
(record_info): New.
(record_delete): New.
(record_is_replaying): New.
(record_goto_entry): New.
(record_goto_begin): New.
(record_goto_end): New.
(record_goto): New.
(init_record_ops): Update.
(init_record_core_ops): Update.
(cmd_record_save): Rename to record_save. Remove target and arg checks.
(cmd_record_start): New.
(set_record_insn_max_num): Moved from record.c
(set_record_full_command): New.
(show_record_full_command): New.
(_initialize_record_full): New.
2013-03-11 16:42:55 +08:00
|
|
|
|
#include "record-full.h"
|
2009-08-10 11:06:34 +08:00
|
|
|
|
#include "linux-record.h"
|
|
|
|
|
|
2003-07-15 19:33:59 +08:00
|
|
|
|
/* Mapping between the general-purpose registers in `struct user'
|
* amd64-linux-tdep.h: Remove file.
* amd64-linux-tdep.c: Don't include "inferior.h" and
"amd64-linux-tdep.h". Include "frame.h" and "solib-svr4.h".
(USER_R15, USER_R14, USER_R13, USER_R12, USER_RBP, USER_RBX)
(USER_R11, USER_R10, USER_R9, USER_R8, USER_RAX, USER_RCX)
(USER_RDX, USER_RSI, USER_RDI, USER_RIP, USER_CS, USER_EFLAGS)
(USER_RSP, USER_SS, USER_DS, USER_ES, USER_FS, USER_GS): Remove
macros.
(user_to_gdb_regmap): Remove variable.
(amd64_linux_gregset_reg_offset): New variable.
(amd64_core_fns): Remove variable.
(fetch_core_registers): Remove function.
(amd64_linux_supply_gregset, amd64_linux_fill_gregset): Remove
functions.
(_initialize_amd64_linux_tdep): Don't set add_core_fns.
* amd64-linux-nat.c: Don't include "amd64-linux-tdep.h".
* Makefile.in (amd64_linux_tdep_h): Remove.
(amd64-linux-nat.o): Update dependencies.
(amd64-linux-tdep.o): Update dependencies.
2004-03-15 06:39:26 +08:00
|
|
|
|
format and GDB's register cache layout. */
|
2003-07-15 19:33:59 +08:00
|
|
|
|
|
* amd64-linux-tdep.h: Remove file.
* amd64-linux-tdep.c: Don't include "inferior.h" and
"amd64-linux-tdep.h". Include "frame.h" and "solib-svr4.h".
(USER_R15, USER_R14, USER_R13, USER_R12, USER_RBP, USER_RBX)
(USER_R11, USER_R10, USER_R9, USER_R8, USER_RAX, USER_RCX)
(USER_RDX, USER_RSI, USER_RDI, USER_RIP, USER_CS, USER_EFLAGS)
(USER_RSP, USER_SS, USER_DS, USER_ES, USER_FS, USER_GS): Remove
macros.
(user_to_gdb_regmap): Remove variable.
(amd64_linux_gregset_reg_offset): New variable.
(amd64_core_fns): Remove variable.
(fetch_core_registers): Remove function.
(amd64_linux_supply_gregset, amd64_linux_fill_gregset): Remove
functions.
(_initialize_amd64_linux_tdep): Don't set add_core_fns.
* amd64-linux-nat.c: Don't include "amd64-linux-tdep.h".
* Makefile.in (amd64_linux_tdep_h): Remove.
(amd64-linux-nat.o): Update dependencies.
(amd64-linux-tdep.o): Update dependencies.
2004-03-15 06:39:26 +08:00
|
|
|
|
/* From <sys/reg.h>. */
|
2010-04-23 04:02:55 +08:00
|
|
|
|
int amd64_linux_gregset_reg_offset[] =
|
2003-07-15 19:33:59 +08:00
|
|
|
|
{
|
* amd64-linux-tdep.h: Remove file.
* amd64-linux-tdep.c: Don't include "inferior.h" and
"amd64-linux-tdep.h". Include "frame.h" and "solib-svr4.h".
(USER_R15, USER_R14, USER_R13, USER_R12, USER_RBP, USER_RBX)
(USER_R11, USER_R10, USER_R9, USER_R8, USER_RAX, USER_RCX)
(USER_RDX, USER_RSI, USER_RDI, USER_RIP, USER_CS, USER_EFLAGS)
(USER_RSP, USER_SS, USER_DS, USER_ES, USER_FS, USER_GS): Remove
macros.
(user_to_gdb_regmap): Remove variable.
(amd64_linux_gregset_reg_offset): New variable.
(amd64_core_fns): Remove variable.
(fetch_core_registers): Remove function.
(amd64_linux_supply_gregset, amd64_linux_fill_gregset): Remove
functions.
(_initialize_amd64_linux_tdep): Don't set add_core_fns.
* amd64-linux-nat.c: Don't include "amd64-linux-tdep.h".
* Makefile.in (amd64_linux_tdep_h): Remove.
(amd64-linux-nat.o): Update dependencies.
(amd64-linux-tdep.o): Update dependencies.
2004-03-15 06:39:26 +08:00
|
|
|
|
10 * 8, /* %rax */
|
|
|
|
|
5 * 8, /* %rbx */
|
|
|
|
|
11 * 8, /* %rcx */
|
|
|
|
|
12 * 8, /* %rdx */
|
|
|
|
|
13 * 8, /* %rsi */
|
|
|
|
|
14 * 8, /* %rdi */
|
|
|
|
|
4 * 8, /* %rbp */
|
|
|
|
|
19 * 8, /* %rsp */
|
2011-01-08 03:36:19 +08:00
|
|
|
|
9 * 8, /* %r8 ... */
|
* amd64-linux-tdep.h: Remove file.
* amd64-linux-tdep.c: Don't include "inferior.h" and
"amd64-linux-tdep.h". Include "frame.h" and "solib-svr4.h".
(USER_R15, USER_R14, USER_R13, USER_R12, USER_RBP, USER_RBX)
(USER_R11, USER_R10, USER_R9, USER_R8, USER_RAX, USER_RCX)
(USER_RDX, USER_RSI, USER_RDI, USER_RIP, USER_CS, USER_EFLAGS)
(USER_RSP, USER_SS, USER_DS, USER_ES, USER_FS, USER_GS): Remove
macros.
(user_to_gdb_regmap): Remove variable.
(amd64_linux_gregset_reg_offset): New variable.
(amd64_core_fns): Remove variable.
(fetch_core_registers): Remove function.
(amd64_linux_supply_gregset, amd64_linux_fill_gregset): Remove
functions.
(_initialize_amd64_linux_tdep): Don't set add_core_fns.
* amd64-linux-nat.c: Don't include "amd64-linux-tdep.h".
* Makefile.in (amd64_linux_tdep_h): Remove.
(amd64-linux-nat.o): Update dependencies.
(amd64-linux-tdep.o): Update dependencies.
2004-03-15 06:39:26 +08:00
|
|
|
|
8 * 8,
|
|
|
|
|
7 * 8,
|
|
|
|
|
6 * 8,
|
|
|
|
|
3 * 8,
|
|
|
|
|
2 * 8,
|
|
|
|
|
1 * 8,
|
|
|
|
|
0 * 8, /* ... %r15 */
|
|
|
|
|
16 * 8, /* %rip */
|
|
|
|
|
18 * 8, /* %eflags */
|
|
|
|
|
17 * 8, /* %cs */
|
|
|
|
|
20 * 8, /* %ss */
|
|
|
|
|
23 * 8, /* %ds */
|
|
|
|
|
24 * 8, /* %es */
|
|
|
|
|
25 * 8, /* %fs */
|
2010-04-18 02:53:46 +08:00
|
|
|
|
26 * 8, /* %gs */
|
|
|
|
|
-1, -1, -1, -1, -1, -1, -1, -1,
|
|
|
|
|
-1, -1, -1, -1, -1, -1, -1, -1,
|
|
|
|
|
-1, -1, -1, -1, -1, -1, -1, -1,
|
|
|
|
|
-1, -1, -1, -1, -1, -1, -1, -1, -1,
|
|
|
|
|
-1, -1, -1, -1, -1, -1, -1, -1,
|
|
|
|
|
-1, -1, -1, -1, -1, -1, -1, -1,
|
2013-11-20 20:02:37 +08:00
|
|
|
|
-1, -1, -1, -1, /* MPX registers BND0 ... BND3. */
|
|
|
|
|
-1, -1, /* MPX registers BNDCFGU and BNDSTATUS. */
|
Add AVX512 registers support to GDB and GDBserver.
This patch adds support for the Intel(R) Advanced Vector
Extensions 512 (Intel(R) AVX-512) registers. Native and remote
debugging are covered by this patch.
Intel(R) AVX-512 is an extension to AVX to support 512-bit wide
SIMD registers in 64-bit mode (XMM0-XMM31, YMM0-YMM31, ZMM0-ZMM31).
The number of available registers in 32-bit mode is still 8
(XMM0-7, YMM0-7, ZMM0-7). The lower 256-bits of the ZMM registers
are aliased to the respective 256-bit YMM registers. The lower
128-bits are aliased to the respective 128-bit XMM registers.
There are also 8 new, dedicated mask registers (K0-K7) in both 32-bit
mode and 64-bit mode.
For more information please see
Intel(R) Developer Zone: Intel(R) AVX
http://software.intel.com/en-us/intel-isa-extensions#pid-16007-1495
Intel(R) Architecture Instruction Set Extensions Programming Reference:
http://software.intel.com/en-us/file/319433-017pdf
2014-04-24 Michael Sturm <michael.sturm@mintel.com>
Walfred Tedeschi <walfred.tedeschi@intel.com>
* amd64-linux-nat.c (amd64_linux_gregset32_reg_offset): Add
AVX512 registers.
(amd64_linux_read_description): Add code to handle AVX512 xstate
mask and return respective tdesc.
* amd64-linux-tdep.c: Include features/i386/amd64-avx512-linux.c
and features/i386/x32-avx512-linux.c.
(amd64_linux_gregset_reg_offset): Add AVX512 registers.
(amd64_linux_core_read_description): Add code to handle AVX512
xstate mask and return respective tdesc.
(_initialize_amd64_linux_tdep): Initialize AVX512 tdesc.
* amd64-linux-tdep.h (AMD64_LINUX_ORIG_RAX_REGNUM): Adjust regnum
calculation.
(AMD64_LINUX_NUM_REGS): Adjust to new number of registers.
(tdesc_amd64_avx512_linux): New prototype.
(tdesc_x32_avx512_linux): Likewise.
* amd64-tdep.c: Include features/i386/amd64-avx512.c and
features/i386/x32-avx512.c.
(amd64_ymm_avx512_names): New register names for pseudo
registers YMM16-31.
(amd64_ymmh_avx512_names): New register names for raw registers
YMMH16-31.
(amd64_k_names): New register names for K registers.
(amd64_zmmh_names): New register names for ZMM raw registers.
(amd64_zmm_names): New registers names for ZMM pseudo registers.
(amd64_xmm_avx512_names): New register names for XMM16-31
registers.
(amd64_pseudo_register_name): Add code to return AVX512 pseudo
registers.
(amd64_init_abi): Add code to intitialize AVX512 tdep variables
if feature is present.
(_initialize_amd64_tdep): Call AVX512 tdesc initializers.
* amd64-tdep.h (enum amd64_regnum): Add AVX512 registers.
(AMD64_NUM_REGS): Adjust to new number of registers.
* i386-linux-nat.c (GETXSTATEREGS_SUPPLIES): Extend range of
registers supplied via XSTATE by AVX512 registers.
(i386_linux_read_description): Add case for AVX512.
* i386-linux-tdep.c: Include i386-avx512-linux.c.
(i386_linux_gregset_reg_offset): Add AVX512 registers.
(i386_linux_core_read_description): Add case for AVX512.
(i386_linux_init_abi): Install supported register note section
for AVX512.
(_initialize_i386_linux_tdep): Add call to tdesc init function for
AVX512.
* i386-linux-tdep.h (I386_LINUX_NUM_REGS): Set number of
registers to be number of zmm7h + 1.
(tdesc_i386_avx512_linux): Add tdesc for AVX512 registers.
* i386-tdep.c: Include features/i386/i386-avx512.c.
(i386_zmm_names): Add ZMM pseudo register names array.
(i386_zmmh_names): Add ZMM raw register names array.
(i386_k_names): Add K raw register names array.
(num_lower_zmm_regs): Add constant for the number of lower ZMM
registers. AVX512 has 16 more ZMM registers than there are YMM
registers.
(i386_zmmh_regnum_p): Add function to look up register number of
ZMM raw registers.
(i386_zmm_regnum_p): Likewise for ZMM pseudo registers.
(i386_k_regnum_p): Likewise for K raw registers.
(i386_ymmh_avx512_regnum_p): Likewise for additional YMM raw
registers added by AVX512.
(i386_ymm_avx512_regnum_p): Likewise for additional YMM pseudo
registers added by AVX512.
(i386_xmm_avx512_regnum_p): Likewise for additional XMM registers
added by AVX512.
(i386_register_name): Add code to hide YMMH16-31 and ZMMH0-31.
(i386_pseudo_register_name): Add ZMM pseudo registers.
(i386_zmm_type): Construct and return vector registers type for ZMM
registers.
(i386_pseudo_register_type): Return appropriate type for YMM16-31,
ZMM0-31 pseudo registers and K registers.
(i386_pseudo_register_read_into_value): Add code to read K, ZMM
and YMM16-31 registers from register cache.
(i386_pseudo_register_write): Add code to write K, ZMM and
YMM16-31 registers.
(i386_register_reggroup_p): Add code to include/exclude AVX512
registers in/from respective register groups.
(i386_validate_tdesc_p): Handle AVX512 feature, add AVX512
registers if feature is present in xcr0.
(i386_gdbarch_init): Add code to initialize AVX512 feature
variables in tdep structure, wire in pseudo registers and call
initialize_tdesc_i386_avx512.
* i386-tdep.h (struct gdbarch_tdep): Add AVX512 related
variables.
(i386_regnum): Add AVX512 registers.
(I386_SSE_NUM_REGS): New define for number of SSE registers.
(I386_AVX_NUM_REGS): Likewise for AVX registers.
(I386_AVX512_NUM_REGS): Likewise for AVX512 registers.
(I386_MAX_REGISTER_SIZE): Change to 64 bytes, ZMM registers are
512 bits wide.
(i386_xmm_avx512_regnum_p): New prototype for register look up.
(i386_ymm_avx512_regnum_p): Likewise.
(i386_k_regnum_p): Likewise.
(i386_zmm_regnum_p): Likewise.
(i386_zmmh_regnum_p): Likewise.
* i387-tdep.c : Update year in copyright notice.
(xsave_ymm_avx512_offset): New table for YMM16-31 offsets in
XSAVE buffer.
(XSAVE_YMM_AVX512_ADDR): New macro.
(xsave_xmm_avx512_offset): New table for XMM16-31 offsets in
XSAVE buffer.
(XSAVE_XMM_AVX512_ADDR): New macro.
(xsave_avx512_k_offset): New table for K register offsets in
XSAVE buffer.
(XSAVE_AVX512_K_ADDR): New macro.
(xsave_avx512_zmm_h_offset): New table for ZMM register offsets
in XSAVE buffer.
(XSAVE_AVX512_ZMM_H_ADDR): New macro.
(i387_supply_xsave): Add code to supply AVX512 registers to XSAVE
buffer.
(i387_collect_xsave): Add code to collect AVX512 registers from
XSAVE buffer.
* i387-tdep.h (I387_NUM_XMM_AVX512_REGS): New define for number
of XMM16-31 registers.
(I387_NUM_K_REGS): New define for number of K registers.
(I387_K0_REGNUM): New define for K0 register number.
(I387_NUM_ZMMH_REGS): New define for number of ZMMH registers.
(I387_ZMM0H_REGNUM): New define for ZMM0H register number.
(I387_NUM_YMM_AVX512_REGS): New define for number of YMM16-31
registers.
(I387_YMM16H_REGNUM): New define for YMM16H register number.
(I387_XMM16_REGNUM): New define for XMM16 register number.
(I387_YMM0_REGNUM): New define for YMM0 register number.
(I387_KEND_REGNUM): New define for last K register number.
(I387_ZMMENDH_REGNUM): New define for last ZMMH register number.
(I387_YMMH_AVX512_END_REGNUM): New define for YMM31 register
number.
(I387_XMM_AVX512_END_REGNUM): New define for XMM31 register
number.
* common/i386-xstate.h: Add AVX 3.1 feature bits, mask and XSTATE
size.
* features/Makefile: Add AVX512 related files.
* features/i386/32bit-avx512.xml: New file.
* features/i386/64bit-avx512.xml: Likewise.
* features/i386/amd64-avx512-linux.c: Likewise.
* features/i386/amd64-avx512-linux.xml: Likewise.
* features/i386/amd64-avx512.c: Likewise.
* features/i386/amd64-avx512.xml: Likewise.
* features/i386/i386-avx512-linux.c: Likewise.
* features/i386/i386-avx512-linux.xml: Likewise.
* features/i386/i386-avx512.c: Likewise.
* features/i386/i386-avx512.xml: Likewise.
* features/i386/x32-avx512-linux.c: Likewise.
* features/i386/x32-avx512-linux.xml: Likewise.
* features/i386/x32-avx512.c: Likewise.
* features/i386/x32-avx512.xml: Likewise.
* regformats/i386/amd64-avx512-linux.dat: New file.
* regformats/i386/amd64-avx512.dat: Likewise.
* regformats/i386/i386-avx512-linux.dat: Likewise.
* regformats/i386/i386-avx512.dat: Likewise.
* regformats/i386/x32-avx512-linux.dat: Likewise.
* regformats/i386/x32-avx512.dat: Likewise.
* NEWS: Add note about new support for AVX512.
testsuite/
* Makefile.in (EXECUTABLES): Added i386-avx512.
* gdb.arch/i386-avx512.c: New file.
* gdb.arch/i386-avx512.exp: Likewise.
gdbserver/
* Makefile.in: Added rules to handle new files
i386-avx512.c i386-avx512-linux.c amd64-avx512.c
amd64-avx512-linux.c x32-avx512.c x32-avx512-linux.c.
* configure.srv (srv_i386_regobj): Add i386-avx512.o.
(srv_i386_linux_regobj): Add i386-avx512-linux.o.
(srv_amd64_regobj): Add amd64-avx512.o and x32-avx512.o.
(srv_amd64_linux_regobj): Add amd64-avx512-linux.o and
x32-avx512-linux.o.
(srv_i386_32bit_xmlfiles): Add i386/32bit-avx512.xml.
(srv_i386_64bit_xmlfiles): Add i386/64bit-avx512.xml.
(srv_amd64_xmlfiles): Add i386/amd64-avx512.xml and
i386/x32-avx512.xml.
(srv_i386_linux_xmlfiles): Add i386/i386-avx512-linux.xml.
(srv_amd64_linux_xmlfiles): Add i386/amd64-avx512-linux.xml and
i386/x32-avx512-linux.xml.
* i387-fp.c (num_avx512_k_registers): New constant for number
of K registers.
(num_avx512_zmmh_low_registers): New constant for number of
lower ZMM registers (0-15).
(num_avx512_zmmh_high_registers): New constant for number of
higher ZMM registers (16-31).
(num_avx512_ymmh_registers): New contant for number of higher
YMM registers (ymm16-31 added by avx521 on x86_64).
(num_avx512_xmm_registers): New constant for number of higher
XMM registers (xmm16-31 added by AVX512 on x86_64).
(struct i387_xsave): Add space for AVX512 registers.
(i387_cache_to_xsave): Change raw buffer size to 64 characters.
Add code to handle AVX512 registers.
(i387_xsave_to_cache): Add code to handle AVX512 registers.
* linux-x86-low.c (init_registers_amd64_avx512_linux): New
prototypei from generated file.
(tdesc_amd64_avx512_linux): Likewise.
(init_registers_x32_avx512_linux): Likewise.
(tdesc_x32_avx512_linux): Likewise.
(init_registers_i386_avx512_linux): Likewise.
(tdesc_i386_avx512_linux): Likewise.
(x86_64_regmap): Add AVX512 registers.
(x86_linux_read_description): Add code to handle AVX512 XSTATE
mask.
(initialize_low_arch): Add code to initialize AVX512 registers.
doc/
* gdb.texinfo (i386 Features): Add description of AVX512
registers.
Change-Id: Ifc4c08c76b85dbec18d02efdbe6182e851584438
Signed-off-by: Michael Sturm <michael.sturm@intel.com>
2013-12-16 23:43:05 +08:00
|
|
|
|
-1, -1, -1, -1, -1, -1, -1, -1, /* xmm16 ... xmm31 (AVX512) */
|
|
|
|
|
-1, -1, -1, -1, -1, -1, -1, -1,
|
|
|
|
|
-1, -1, -1, -1, -1, -1, -1, -1, /* ymm16 ... ymm31 (AVX512) */
|
|
|
|
|
-1, -1, -1, -1, -1, -1, -1, -1,
|
|
|
|
|
-1, -1, -1, -1, -1, -1, -1, -1, /* k0 ... k7 (AVX512) */
|
|
|
|
|
-1, -1, -1, -1, -1, -1, -1, -1, /* zmm0 ... zmm31 (AVX512) */
|
|
|
|
|
-1, -1, -1, -1, -1, -1, -1, -1,
|
|
|
|
|
-1, -1, -1, -1, -1, -1, -1, -1,
|
|
|
|
|
-1, -1, -1, -1, -1, -1, -1, -1,
|
|
|
|
|
15 * 8 /* "orig_rax" */
|
2003-07-15 19:33:59 +08:00
|
|
|
|
};
|
* amd64-linux-tdep.h: Remove file.
* amd64-linux-tdep.c: Don't include "inferior.h" and
"amd64-linux-tdep.h". Include "frame.h" and "solib-svr4.h".
(USER_R15, USER_R14, USER_R13, USER_R12, USER_RBP, USER_RBX)
(USER_R11, USER_R10, USER_R9, USER_R8, USER_RAX, USER_RCX)
(USER_RDX, USER_RSI, USER_RDI, USER_RIP, USER_CS, USER_EFLAGS)
(USER_RSP, USER_SS, USER_DS, USER_ES, USER_FS, USER_GS): Remove
macros.
(user_to_gdb_regmap): Remove variable.
(amd64_linux_gregset_reg_offset): New variable.
(amd64_core_fns): Remove variable.
(fetch_core_registers): Remove function.
(amd64_linux_supply_gregset, amd64_linux_fill_gregset): Remove
functions.
(_initialize_amd64_linux_tdep): Don't set add_core_fns.
* amd64-linux-nat.c: Don't include "amd64-linux-tdep.h".
* Makefile.in (amd64_linux_tdep_h): Remove.
(amd64-linux-nat.o): Update dependencies.
(amd64-linux-tdep.o): Update dependencies.
2004-03-15 06:39:26 +08:00
|
|
|
|
|
2003-07-15 19:33:59 +08:00
|
|
|
|
|
* amd64-linux-tdep.h: Remove file.
* amd64-linux-tdep.c: Don't include "inferior.h" and
"amd64-linux-tdep.h". Include "frame.h" and "solib-svr4.h".
(USER_R15, USER_R14, USER_R13, USER_R12, USER_RBP, USER_RBX)
(USER_R11, USER_R10, USER_R9, USER_R8, USER_RAX, USER_RCX)
(USER_RDX, USER_RSI, USER_RDI, USER_RIP, USER_CS, USER_EFLAGS)
(USER_RSP, USER_SS, USER_DS, USER_ES, USER_FS, USER_GS): Remove
macros.
(user_to_gdb_regmap): Remove variable.
(amd64_linux_gregset_reg_offset): New variable.
(amd64_core_fns): Remove variable.
(fetch_core_registers): Remove function.
(amd64_linux_supply_gregset, amd64_linux_fill_gregset): Remove
functions.
(_initialize_amd64_linux_tdep): Don't set add_core_fns.
* amd64-linux-nat.c: Don't include "amd64-linux-tdep.h".
* Makefile.in (amd64_linux_tdep_h): Remove.
(amd64-linux-nat.o): Update dependencies.
(amd64-linux-tdep.o): Update dependencies.
2004-03-15 06:39:26 +08:00
|
|
|
|
/* Support for signal handlers. */
|
* x86-64-tdep.h (x86_64_num_regs, x86_64_num_gregs): Remove
variable declarations.
(x86_64_register_number, x86_64_register_name): Remove prototypes.
(x86_64_linux_frame_saved_pc, x86_64_linux+saved_pc_after_call,
x86_64_linux_in_sigtramp, x86_64_linux_frame_chain,
x86_64_init_frame_pc, x86_64_init_frame_pc,
x86_64_function_has_prologue): Remove prototypes.
(X86_64_NUM_GREGS): New define.
(x86_64_supply_fxsave, x86_64_fill_fxsave): New prototypes.
* x86-64-tdep.c: Don't include "dwarf2cfi.h". Include
"dummy_frame.h", "frame.h", "frame-base.h", "frame-unwind.h".
(RAX_REGNUM, RDX_REGNUM, RDI_REGNUM, EFLAGS_REGNUM, ST0_REGNUM,
XMM1_REGNUM): Remove defines.
(X86_64_RAX_REGNUM, X86_64_RDX_REGNUM, X86_64_RDI_REGNUM,
X86_64_RBP_REGNUM, X86_64_RSP_REGNUM, X86_64_RIP_REGNUM,
X86_64_EFLAGS_REGNUM, X86_64_ST0_REGNUM, X86_64_XMM0_REGNUM,
X86_64_XMM1_REGNUM): New defines.
(struct x86_64_register_info): Renamed from `struct
register_info'. Remove `size' member.
(x86_64_register_info_table): Remove variable.
(x86_64_register_info): New variable.
(X86_64_NUM_REGS): New define.
(X86_64_NUM_GREGS): Remove define.
(x86_64_num_regs, x86_64_num_gregs): Remove variables.
(x86_64_dwarf2gdb_regno_map, x86_64_dwarf2gdb_regno_map_length):
Remove variables.
(x86_54_dwarf2_reg_to_regnum): Remove function.
(x86_64_dwarf_regmap, x86_64_dwarf_regmap_len): New variables.
(x86_64_dwarf_reg_to_regnum): New function.
(x86_64_register_name): Rewrite.
(x86_64_register_raw_size): Remove function.
(x86_64_register_byte_table): Remove variable.
(x86_64_register_byte): Remove function.
(x86_64_register_virtual_type): Remove function.
(x86_64_register_type): New function.
(x86_64_register_convertible, x86_64_register_convert_to_virtual,
x86_64_register_convert_to_raw): Remove functions.
(x86_64_push_return_address, x86_64_pop_frame): Remove functon.
(x86_64_use_struct_convention): Make static. Adjust for renamed
defines.
(x86_64_frame_init_saved_regs): Remove function.
(x86_64_push_arguments): Make static. Change to accept a regcache
as argument.
(x86_64_store_return_value, x86_64_extract_return_value): Make
static. Rewrite based on i386 counterparts.
(x86_64_push_dummy_call): New function.
(X86_64_NUM_SAVED_REGS): New define.
(x86_64_register_number): Remove function.
(x86_64_store_struct_return): Remove function.
(x86_64_frameless_function_invocation,
x86_64_function_has_prologue): Remove functions.
(PROLOG_BUFSIZE): Remove define.
(struct x86_64_frame_cache): New structure.
(x86_64_alloc_frame_cache, x86_64_analyze_prologue,
x86_64_frame_cache, x86_64_frame_this_id,
x86_64_frame_prev_register, x86_64_frame_p,
x86_64_sigtramp_frame_cache, x86_64_sigtramp_frame_this_id,
x86_64_sigtramp_frame_prev_register, x86_sigtramp_frame_p): New
functions.
(x86_64_frame_unwind, x86_64_sigtramp_frame_unwind): New
variables.
(x86_64_skip_prologue): Rewrite in terms of
x86_64_analyze_prologue.
(x86_64_frame_base_address): New function.
(x86_64_frame_base): New variable.
(x86_64_save_dummy_frame_tos, x86_64_unwind_dummy_id): Rewrite.
(x86_64_init_abi): Set register_type and push_dummy_call. Don't
set deprecated_fp_regnum, deprecated_register_size,
deprecated_register_bytes, register_raw_size, register_byte,
register_virtual_type, register_convertiable,
register_convert_to_virtual, convert_to_raw,
deprecated_get_saved_register, deprecated_target_read_fp,
deprecated_push_arguments, deprecated_push_return_address,
deprecated_pop_frame, deprecated_store_struct_return,
deprecated_frame_init_saved_regs, deprecated_frame_chain,
frameless_function_invocation, deprecated_frame_saved_pc,
deprecated_saved_pc_after_call, frame_num_args, pc_in_sigtramp,
dwarf2_build_frame_info, deprecated_init_extra_frame_info,
deprecated_init_frame_pc and virtual_frame_pointer. Call
frame_unwind_append_predicate to register x86_64_sigtramp_frame_p
and x86_64_frame_p. Call frame_base_set_default to register
x86_64_frame_base.
(I387_FISEG_REGNUM, I387_FOSEG_REGNUM): New defines.
(x86_64_supply_fxsave, x86_64_fill_fxsave): New functions.
(_initialize_x86_64_tdep): Remove function.
* x86-64-linux-tdep.c: Don't include "dwarf2cfi.h".
(LINUX_SIGINFO_SIZE, LINUX_UCONTEXT_SIGCONTEXT_OFFSET,
LINUX_SIGCONTEXT_PC_OFFSET, LINUX_SIGCONTEXT_FP_OFFSET): Don't
define.
(X86_64_LINUX_UCONTEXT_SIGCONTEXT_OFFSET): Define.
(x86_64_linux_sigcontext_addr): Rewrite.
(x86_64_linux_sigtramp_saved_pc, x86_64_linux_saved_pc_after_call,
x86_64_linux_frame_saved_pc): Remove functions.
(x86_64_linux_pc_in_sigtramp): Renamed from
x86_64_linux_in_sigtramp. Try harder to recognize a signal
trampoline.
(x86_64_linux_frame_chain, x86_64_init_frame_pc):
Remove_functions.
(x86_64_linux_init_abi): Set pc_in_sigtramp. Initialize
TDEP->sigcontext_addr, TDEP->sc_pc_offset and TDEP->sc_sp_offset.
* x86-64-linux-nat.c: Sync with i386-linux-tdep.c.
(x86_64_regmap): Rename to regmap.
(GETREGS_SUPPLIES): Use X86_64_NUM_GREGS instead of
x86_64_num_gregs.
(supply_gregset, fill_gregset): Likewise. Use regmap instead of
x86_64_regmap.
(x86_64_fxsave_offset): Remove function.
(supply_fpregset): Simply call x86_64_supply_fxsave.
(fill_fpregset): Simply call x86_64_fill_fxsave.
(fetch_inferior_registers, store_inferior_registers): Avoid
asignment in if-statement.
(LINUX_SYSCALL_LEN, LINUX_SYSCALL_REGNUM, SYS_Sigreturn,
SYS_rt_sigreturn, LINUX_SIGCONTEXT_EFLAGS_OFFSET,
LINUX_UCONTEXT_SIGCONTEXT_OFFSET): Remove defines.
(fetch_core_registers): Remove function.
(linux_elf_core_fns): Remove.
(offsetoff): Don't define.
(_initialize_x86_64_linux_nat, kernel_u_size): Remove functions.
* config/i386/x86-64linux.mt (TDEPFILES): Add i386-linux-tdep.o.
* config/i386/x86-64linux.mh (NATDEPFILES): Remove core-aout.o,
add core-regset.o.
* config/i386/nm-x86-64linux.h: Use NM_X86_64_LINUX_H for
protection against multiple includes instead of NM_X86_64_h. Add
various comments. Include "config/nm-linux.h". Don't include
<signal.h>.
(REGISTER_U_ADDR, KERNEL_U_SIZE, U_REGS_OFFSET, KERN_U_ADDR,
GET_THREAD_SIGNALS): Remove defines.
(x86_64_register_u_addr, kernel_u_size,
lin_thread_get_thread_signals): Remove prototypes.
(PTRACE_ARG3_TYPE, PTRACE_XFER_TYPE): Define to `long'.
[HAVE_LINK_H]: Don't include "solib.h".
[HAVE_LINK_H] (SVR4_SHARED_LIBS): Remove define.
* config/i386/tm-x86-64linux.h: Fix comments.
* Makefile.in (x86-64-linux-nat.o, x86_64-linux-tdep.o,
x86-64-tdep.o): Update dependencies.
2003-05-31 16:15:38 +08:00
|
|
|
|
|
|
|
|
|
#define LINUX_SIGTRAMP_INSN0 0x48 /* mov $NNNNNNNN, %rax */
|
|
|
|
|
#define LINUX_SIGTRAMP_OFFSET0 0
|
|
|
|
|
#define LINUX_SIGTRAMP_INSN1 0x0f /* syscall */
|
|
|
|
|
#define LINUX_SIGTRAMP_OFFSET1 7
|
|
|
|
|
|
2012-07-03 22:53:56 +08:00
|
|
|
|
static const gdb_byte amd64_linux_sigtramp_code[] =
|
* x86-64-tdep.h (x86_64_num_regs, x86_64_num_gregs): Remove
variable declarations.
(x86_64_register_number, x86_64_register_name): Remove prototypes.
(x86_64_linux_frame_saved_pc, x86_64_linux+saved_pc_after_call,
x86_64_linux_in_sigtramp, x86_64_linux_frame_chain,
x86_64_init_frame_pc, x86_64_init_frame_pc,
x86_64_function_has_prologue): Remove prototypes.
(X86_64_NUM_GREGS): New define.
(x86_64_supply_fxsave, x86_64_fill_fxsave): New prototypes.
* x86-64-tdep.c: Don't include "dwarf2cfi.h". Include
"dummy_frame.h", "frame.h", "frame-base.h", "frame-unwind.h".
(RAX_REGNUM, RDX_REGNUM, RDI_REGNUM, EFLAGS_REGNUM, ST0_REGNUM,
XMM1_REGNUM): Remove defines.
(X86_64_RAX_REGNUM, X86_64_RDX_REGNUM, X86_64_RDI_REGNUM,
X86_64_RBP_REGNUM, X86_64_RSP_REGNUM, X86_64_RIP_REGNUM,
X86_64_EFLAGS_REGNUM, X86_64_ST0_REGNUM, X86_64_XMM0_REGNUM,
X86_64_XMM1_REGNUM): New defines.
(struct x86_64_register_info): Renamed from `struct
register_info'. Remove `size' member.
(x86_64_register_info_table): Remove variable.
(x86_64_register_info): New variable.
(X86_64_NUM_REGS): New define.
(X86_64_NUM_GREGS): Remove define.
(x86_64_num_regs, x86_64_num_gregs): Remove variables.
(x86_64_dwarf2gdb_regno_map, x86_64_dwarf2gdb_regno_map_length):
Remove variables.
(x86_54_dwarf2_reg_to_regnum): Remove function.
(x86_64_dwarf_regmap, x86_64_dwarf_regmap_len): New variables.
(x86_64_dwarf_reg_to_regnum): New function.
(x86_64_register_name): Rewrite.
(x86_64_register_raw_size): Remove function.
(x86_64_register_byte_table): Remove variable.
(x86_64_register_byte): Remove function.
(x86_64_register_virtual_type): Remove function.
(x86_64_register_type): New function.
(x86_64_register_convertible, x86_64_register_convert_to_virtual,
x86_64_register_convert_to_raw): Remove functions.
(x86_64_push_return_address, x86_64_pop_frame): Remove functon.
(x86_64_use_struct_convention): Make static. Adjust for renamed
defines.
(x86_64_frame_init_saved_regs): Remove function.
(x86_64_push_arguments): Make static. Change to accept a regcache
as argument.
(x86_64_store_return_value, x86_64_extract_return_value): Make
static. Rewrite based on i386 counterparts.
(x86_64_push_dummy_call): New function.
(X86_64_NUM_SAVED_REGS): New define.
(x86_64_register_number): Remove function.
(x86_64_store_struct_return): Remove function.
(x86_64_frameless_function_invocation,
x86_64_function_has_prologue): Remove functions.
(PROLOG_BUFSIZE): Remove define.
(struct x86_64_frame_cache): New structure.
(x86_64_alloc_frame_cache, x86_64_analyze_prologue,
x86_64_frame_cache, x86_64_frame_this_id,
x86_64_frame_prev_register, x86_64_frame_p,
x86_64_sigtramp_frame_cache, x86_64_sigtramp_frame_this_id,
x86_64_sigtramp_frame_prev_register, x86_sigtramp_frame_p): New
functions.
(x86_64_frame_unwind, x86_64_sigtramp_frame_unwind): New
variables.
(x86_64_skip_prologue): Rewrite in terms of
x86_64_analyze_prologue.
(x86_64_frame_base_address): New function.
(x86_64_frame_base): New variable.
(x86_64_save_dummy_frame_tos, x86_64_unwind_dummy_id): Rewrite.
(x86_64_init_abi): Set register_type and push_dummy_call. Don't
set deprecated_fp_regnum, deprecated_register_size,
deprecated_register_bytes, register_raw_size, register_byte,
register_virtual_type, register_convertiable,
register_convert_to_virtual, convert_to_raw,
deprecated_get_saved_register, deprecated_target_read_fp,
deprecated_push_arguments, deprecated_push_return_address,
deprecated_pop_frame, deprecated_store_struct_return,
deprecated_frame_init_saved_regs, deprecated_frame_chain,
frameless_function_invocation, deprecated_frame_saved_pc,
deprecated_saved_pc_after_call, frame_num_args, pc_in_sigtramp,
dwarf2_build_frame_info, deprecated_init_extra_frame_info,
deprecated_init_frame_pc and virtual_frame_pointer. Call
frame_unwind_append_predicate to register x86_64_sigtramp_frame_p
and x86_64_frame_p. Call frame_base_set_default to register
x86_64_frame_base.
(I387_FISEG_REGNUM, I387_FOSEG_REGNUM): New defines.
(x86_64_supply_fxsave, x86_64_fill_fxsave): New functions.
(_initialize_x86_64_tdep): Remove function.
* x86-64-linux-tdep.c: Don't include "dwarf2cfi.h".
(LINUX_SIGINFO_SIZE, LINUX_UCONTEXT_SIGCONTEXT_OFFSET,
LINUX_SIGCONTEXT_PC_OFFSET, LINUX_SIGCONTEXT_FP_OFFSET): Don't
define.
(X86_64_LINUX_UCONTEXT_SIGCONTEXT_OFFSET): Define.
(x86_64_linux_sigcontext_addr): Rewrite.
(x86_64_linux_sigtramp_saved_pc, x86_64_linux_saved_pc_after_call,
x86_64_linux_frame_saved_pc): Remove functions.
(x86_64_linux_pc_in_sigtramp): Renamed from
x86_64_linux_in_sigtramp. Try harder to recognize a signal
trampoline.
(x86_64_linux_frame_chain, x86_64_init_frame_pc):
Remove_functions.
(x86_64_linux_init_abi): Set pc_in_sigtramp. Initialize
TDEP->sigcontext_addr, TDEP->sc_pc_offset and TDEP->sc_sp_offset.
* x86-64-linux-nat.c: Sync with i386-linux-tdep.c.
(x86_64_regmap): Rename to regmap.
(GETREGS_SUPPLIES): Use X86_64_NUM_GREGS instead of
x86_64_num_gregs.
(supply_gregset, fill_gregset): Likewise. Use regmap instead of
x86_64_regmap.
(x86_64_fxsave_offset): Remove function.
(supply_fpregset): Simply call x86_64_supply_fxsave.
(fill_fpregset): Simply call x86_64_fill_fxsave.
(fetch_inferior_registers, store_inferior_registers): Avoid
asignment in if-statement.
(LINUX_SYSCALL_LEN, LINUX_SYSCALL_REGNUM, SYS_Sigreturn,
SYS_rt_sigreturn, LINUX_SIGCONTEXT_EFLAGS_OFFSET,
LINUX_UCONTEXT_SIGCONTEXT_OFFSET): Remove defines.
(fetch_core_registers): Remove function.
(linux_elf_core_fns): Remove.
(offsetoff): Don't define.
(_initialize_x86_64_linux_nat, kernel_u_size): Remove functions.
* config/i386/x86-64linux.mt (TDEPFILES): Add i386-linux-tdep.o.
* config/i386/x86-64linux.mh (NATDEPFILES): Remove core-aout.o,
add core-regset.o.
* config/i386/nm-x86-64linux.h: Use NM_X86_64_LINUX_H for
protection against multiple includes instead of NM_X86_64_h. Add
various comments. Include "config/nm-linux.h". Don't include
<signal.h>.
(REGISTER_U_ADDR, KERNEL_U_SIZE, U_REGS_OFFSET, KERN_U_ADDR,
GET_THREAD_SIGNALS): Remove defines.
(x86_64_register_u_addr, kernel_u_size,
lin_thread_get_thread_signals): Remove prototypes.
(PTRACE_ARG3_TYPE, PTRACE_XFER_TYPE): Define to `long'.
[HAVE_LINK_H]: Don't include "solib.h".
[HAVE_LINK_H] (SVR4_SHARED_LIBS): Remove define.
* config/i386/tm-x86-64linux.h: Fix comments.
* Makefile.in (x86-64-linux-nat.o, x86_64-linux-tdep.o,
x86-64-tdep.o): Update dependencies.
2003-05-31 16:15:38 +08:00
|
|
|
|
{
|
|
|
|
|
/* mov $__NR_rt_sigreturn, %rax */
|
2002-10-24 Michal Ludvig <mludvig@suse.cz>
* dwarf2cfi.c (struct context)
(struct context_reg): Moved to dwarf2cfi.h
(context_alloc, frame_state_alloc, context_cpy):
Made extern instead of static, removed prototypes.
* dwarf2cfi.h (struct context)
(struct context_reg): New, moved from dwarf2cfi.c
(context_alloc, frame_state_alloc, context_cpy):
New prototypes.
* x86-64-linux-tdep.c (x86_64_linux_sigtramp_saved_pc):
Changed from static to extern.
(LINUX_SIGINFO_SIZE, LINUX_SIGCONTEXT_PC_OFFSET)
(LINUX_SIGCONTEXT_FP_OFFSET)
(LINUX_UCONTEXT_SIGCONTEXT_OFFSET): Adjusted.
(x86_64_linux_in_sigtramp, x86_64_linux_frame_chain)
(x86_64_init_frame_pc, x86_64_init_extra_frame_info): New.
* x86-64-tdep.c (x86_64_gdbarch_init): Several
set_gdbarch_*() calls now use x86-64 specific functions
instead of DWARF2 CFI ones.
* x86-64-tdep.h (x86_64_linux_in_sigtramp)
(x86_64_linux_frame_chain, x86_64_init_frame_pc)
(x86_64_init_extra_frame_info): New prototypes.
2002-10-24 09:27:43 +08:00
|
|
|
|
LINUX_SIGTRAMP_INSN0, 0xc7, 0xc0, 0x0f, 0x00, 0x00, 0x00,
|
|
|
|
|
/* syscall */
|
|
|
|
|
LINUX_SIGTRAMP_INSN1, 0x05
|
2001-09-21 20:19:15 +08:00
|
|
|
|
};
|
|
|
|
|
|
2012-07-03 22:53:56 +08:00
|
|
|
|
static const gdb_byte amd64_x32_linux_sigtramp_code[] =
|
|
|
|
|
{
|
|
|
|
|
/* mov $__NR_rt_sigreturn, %rax. */
|
|
|
|
|
LINUX_SIGTRAMP_INSN0, 0xc7, 0xc0, 0x01, 0x02, 0x00, 0x40,
|
|
|
|
|
/* syscall */
|
|
|
|
|
LINUX_SIGTRAMP_INSN1, 0x05
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#define LINUX_SIGTRAMP_LEN (sizeof amd64_linux_sigtramp_code)
|
2001-09-21 20:19:15 +08:00
|
|
|
|
|
|
|
|
|
/* If PC is in a sigtramp routine, return the address of the start of
|
|
|
|
|
the routine. Otherwise, return 0. */
|
|
|
|
|
|
|
|
|
|
static CORE_ADDR
|
Update i386 and amd64 ports for unwinder changes.
* amd64-tdep.c (amd64_frame_cache): Expect this_frame.
(amd64_frame_this_id, amd64_frame_prev_register): Update signature.
(amd64_frame_unwind): Use default_frame_sniffer.
(amd64_frame_sniffer): Delete.
(amd64_sigtramp_frame_cache): Expect this_frame.
(amd64_sigtramp_frame_this_id, amd64_sigtramp_frame_prev_register)
(amd64_sigtramp_frame_sniffer): Update signature.
(amd64_sigtramp_frame_unwind): Add amd64_sigtramp_frame_sniffer.
(amd64_frame_base_address): Expect this_frame.
(amd64_dummy_id): Renamed from amd64_unwind_dummy_id. Expect
this_frame.
(amd64_init_abi): Use set_gdbarch_dummy_id and
frame_unwind_append_unwinder.
* i386-tdep.c (i386_frame_cache): Expect this_frame.
(i386_frame_this_id, i386_frame_prev_register): Update signature.
(i386_frame_unwind): Use default_frame_sniffer.
(i386_frame_sniffer): Delete.
(i386_sigtramp_frame_cache): Expect this_frame.
(i386_sigtramp_frame_this_id, i386_sigtramp_frame_prev_register)
(i386_sigtramp_frame_sniffer): Update signature.
(i386_sigtramp_frame_unwind): Use i386_sigtramp_frame_sniffer.
(i386_frame_base_address): Update signature.
(i386_dummy_id): Rename from i386_unwind_dummy_id. Expect this_frame.
(i386_push_dummy_call): Update comment.
(i386_sigtramp_p, i386_svr4_sigtramp_p, i386_svr4_sigcontext_addr):
Expect this_frame.
(i386_gdbarch_init): Use set_gdbarch_dummy_id, dwarf2_append_unwinders,
and frame_unwind_append_unwinder.
* amd64-linux-tdep.c, amd64-sol2-tdep.c, amd64fbsd-tdep.c,
amd64nbsd-tdep.c, amd64obsd-tdep.c, i386-linux-tdep.c,
i386-nto-tdep.c, i386bsd-tdep.c, i386-sol2-tdep.c, i386obsd-tdep.c,
i386nbsd-tdep.c: Update for unwinder changes.
2008-05-01 05:19:45 +08:00
|
|
|
|
amd64_linux_sigtramp_start (struct frame_info *this_frame)
|
2001-09-21 20:19:15 +08:00
|
|
|
|
{
|
2012-07-03 22:53:56 +08:00
|
|
|
|
struct gdbarch *gdbarch;
|
|
|
|
|
const gdb_byte *sigtramp_code;
|
Update i386 and amd64 ports for unwinder changes.
* amd64-tdep.c (amd64_frame_cache): Expect this_frame.
(amd64_frame_this_id, amd64_frame_prev_register): Update signature.
(amd64_frame_unwind): Use default_frame_sniffer.
(amd64_frame_sniffer): Delete.
(amd64_sigtramp_frame_cache): Expect this_frame.
(amd64_sigtramp_frame_this_id, amd64_sigtramp_frame_prev_register)
(amd64_sigtramp_frame_sniffer): Update signature.
(amd64_sigtramp_frame_unwind): Add amd64_sigtramp_frame_sniffer.
(amd64_frame_base_address): Expect this_frame.
(amd64_dummy_id): Renamed from amd64_unwind_dummy_id. Expect
this_frame.
(amd64_init_abi): Use set_gdbarch_dummy_id and
frame_unwind_append_unwinder.
* i386-tdep.c (i386_frame_cache): Expect this_frame.
(i386_frame_this_id, i386_frame_prev_register): Update signature.
(i386_frame_unwind): Use default_frame_sniffer.
(i386_frame_sniffer): Delete.
(i386_sigtramp_frame_cache): Expect this_frame.
(i386_sigtramp_frame_this_id, i386_sigtramp_frame_prev_register)
(i386_sigtramp_frame_sniffer): Update signature.
(i386_sigtramp_frame_unwind): Use i386_sigtramp_frame_sniffer.
(i386_frame_base_address): Update signature.
(i386_dummy_id): Rename from i386_unwind_dummy_id. Expect this_frame.
(i386_push_dummy_call): Update comment.
(i386_sigtramp_p, i386_svr4_sigtramp_p, i386_svr4_sigcontext_addr):
Expect this_frame.
(i386_gdbarch_init): Use set_gdbarch_dummy_id, dwarf2_append_unwinders,
and frame_unwind_append_unwinder.
* amd64-linux-tdep.c, amd64-sol2-tdep.c, amd64fbsd-tdep.c,
amd64nbsd-tdep.c, amd64obsd-tdep.c, i386-linux-tdep.c,
i386-nto-tdep.c, i386bsd-tdep.c, i386-sol2-tdep.c, i386obsd-tdep.c,
i386nbsd-tdep.c: Update for unwinder changes.
2008-05-01 05:19:45 +08:00
|
|
|
|
CORE_ADDR pc = get_frame_pc (this_frame);
|
2005-05-09 06:07:27 +08:00
|
|
|
|
gdb_byte buf[LINUX_SIGTRAMP_LEN];
|
* x86-64-tdep.h (x86_64_num_regs, x86_64_num_gregs): Remove
variable declarations.
(x86_64_register_number, x86_64_register_name): Remove prototypes.
(x86_64_linux_frame_saved_pc, x86_64_linux+saved_pc_after_call,
x86_64_linux_in_sigtramp, x86_64_linux_frame_chain,
x86_64_init_frame_pc, x86_64_init_frame_pc,
x86_64_function_has_prologue): Remove prototypes.
(X86_64_NUM_GREGS): New define.
(x86_64_supply_fxsave, x86_64_fill_fxsave): New prototypes.
* x86-64-tdep.c: Don't include "dwarf2cfi.h". Include
"dummy_frame.h", "frame.h", "frame-base.h", "frame-unwind.h".
(RAX_REGNUM, RDX_REGNUM, RDI_REGNUM, EFLAGS_REGNUM, ST0_REGNUM,
XMM1_REGNUM): Remove defines.
(X86_64_RAX_REGNUM, X86_64_RDX_REGNUM, X86_64_RDI_REGNUM,
X86_64_RBP_REGNUM, X86_64_RSP_REGNUM, X86_64_RIP_REGNUM,
X86_64_EFLAGS_REGNUM, X86_64_ST0_REGNUM, X86_64_XMM0_REGNUM,
X86_64_XMM1_REGNUM): New defines.
(struct x86_64_register_info): Renamed from `struct
register_info'. Remove `size' member.
(x86_64_register_info_table): Remove variable.
(x86_64_register_info): New variable.
(X86_64_NUM_REGS): New define.
(X86_64_NUM_GREGS): Remove define.
(x86_64_num_regs, x86_64_num_gregs): Remove variables.
(x86_64_dwarf2gdb_regno_map, x86_64_dwarf2gdb_regno_map_length):
Remove variables.
(x86_54_dwarf2_reg_to_regnum): Remove function.
(x86_64_dwarf_regmap, x86_64_dwarf_regmap_len): New variables.
(x86_64_dwarf_reg_to_regnum): New function.
(x86_64_register_name): Rewrite.
(x86_64_register_raw_size): Remove function.
(x86_64_register_byte_table): Remove variable.
(x86_64_register_byte): Remove function.
(x86_64_register_virtual_type): Remove function.
(x86_64_register_type): New function.
(x86_64_register_convertible, x86_64_register_convert_to_virtual,
x86_64_register_convert_to_raw): Remove functions.
(x86_64_push_return_address, x86_64_pop_frame): Remove functon.
(x86_64_use_struct_convention): Make static. Adjust for renamed
defines.
(x86_64_frame_init_saved_regs): Remove function.
(x86_64_push_arguments): Make static. Change to accept a regcache
as argument.
(x86_64_store_return_value, x86_64_extract_return_value): Make
static. Rewrite based on i386 counterparts.
(x86_64_push_dummy_call): New function.
(X86_64_NUM_SAVED_REGS): New define.
(x86_64_register_number): Remove function.
(x86_64_store_struct_return): Remove function.
(x86_64_frameless_function_invocation,
x86_64_function_has_prologue): Remove functions.
(PROLOG_BUFSIZE): Remove define.
(struct x86_64_frame_cache): New structure.
(x86_64_alloc_frame_cache, x86_64_analyze_prologue,
x86_64_frame_cache, x86_64_frame_this_id,
x86_64_frame_prev_register, x86_64_frame_p,
x86_64_sigtramp_frame_cache, x86_64_sigtramp_frame_this_id,
x86_64_sigtramp_frame_prev_register, x86_sigtramp_frame_p): New
functions.
(x86_64_frame_unwind, x86_64_sigtramp_frame_unwind): New
variables.
(x86_64_skip_prologue): Rewrite in terms of
x86_64_analyze_prologue.
(x86_64_frame_base_address): New function.
(x86_64_frame_base): New variable.
(x86_64_save_dummy_frame_tos, x86_64_unwind_dummy_id): Rewrite.
(x86_64_init_abi): Set register_type and push_dummy_call. Don't
set deprecated_fp_regnum, deprecated_register_size,
deprecated_register_bytes, register_raw_size, register_byte,
register_virtual_type, register_convertiable,
register_convert_to_virtual, convert_to_raw,
deprecated_get_saved_register, deprecated_target_read_fp,
deprecated_push_arguments, deprecated_push_return_address,
deprecated_pop_frame, deprecated_store_struct_return,
deprecated_frame_init_saved_regs, deprecated_frame_chain,
frameless_function_invocation, deprecated_frame_saved_pc,
deprecated_saved_pc_after_call, frame_num_args, pc_in_sigtramp,
dwarf2_build_frame_info, deprecated_init_extra_frame_info,
deprecated_init_frame_pc and virtual_frame_pointer. Call
frame_unwind_append_predicate to register x86_64_sigtramp_frame_p
and x86_64_frame_p. Call frame_base_set_default to register
x86_64_frame_base.
(I387_FISEG_REGNUM, I387_FOSEG_REGNUM): New defines.
(x86_64_supply_fxsave, x86_64_fill_fxsave): New functions.
(_initialize_x86_64_tdep): Remove function.
* x86-64-linux-tdep.c: Don't include "dwarf2cfi.h".
(LINUX_SIGINFO_SIZE, LINUX_UCONTEXT_SIGCONTEXT_OFFSET,
LINUX_SIGCONTEXT_PC_OFFSET, LINUX_SIGCONTEXT_FP_OFFSET): Don't
define.
(X86_64_LINUX_UCONTEXT_SIGCONTEXT_OFFSET): Define.
(x86_64_linux_sigcontext_addr): Rewrite.
(x86_64_linux_sigtramp_saved_pc, x86_64_linux_saved_pc_after_call,
x86_64_linux_frame_saved_pc): Remove functions.
(x86_64_linux_pc_in_sigtramp): Renamed from
x86_64_linux_in_sigtramp. Try harder to recognize a signal
trampoline.
(x86_64_linux_frame_chain, x86_64_init_frame_pc):
Remove_functions.
(x86_64_linux_init_abi): Set pc_in_sigtramp. Initialize
TDEP->sigcontext_addr, TDEP->sc_pc_offset and TDEP->sc_sp_offset.
* x86-64-linux-nat.c: Sync with i386-linux-tdep.c.
(x86_64_regmap): Rename to regmap.
(GETREGS_SUPPLIES): Use X86_64_NUM_GREGS instead of
x86_64_num_gregs.
(supply_gregset, fill_gregset): Likewise. Use regmap instead of
x86_64_regmap.
(x86_64_fxsave_offset): Remove function.
(supply_fpregset): Simply call x86_64_supply_fxsave.
(fill_fpregset): Simply call x86_64_fill_fxsave.
(fetch_inferior_registers, store_inferior_registers): Avoid
asignment in if-statement.
(LINUX_SYSCALL_LEN, LINUX_SYSCALL_REGNUM, SYS_Sigreturn,
SYS_rt_sigreturn, LINUX_SIGCONTEXT_EFLAGS_OFFSET,
LINUX_UCONTEXT_SIGCONTEXT_OFFSET): Remove defines.
(fetch_core_registers): Remove function.
(linux_elf_core_fns): Remove.
(offsetoff): Don't define.
(_initialize_x86_64_linux_nat, kernel_u_size): Remove functions.
* config/i386/x86-64linux.mt (TDEPFILES): Add i386-linux-tdep.o.
* config/i386/x86-64linux.mh (NATDEPFILES): Remove core-aout.o,
add core-regset.o.
* config/i386/nm-x86-64linux.h: Use NM_X86_64_LINUX_H for
protection against multiple includes instead of NM_X86_64_h. Add
various comments. Include "config/nm-linux.h". Don't include
<signal.h>.
(REGISTER_U_ADDR, KERNEL_U_SIZE, U_REGS_OFFSET, KERN_U_ADDR,
GET_THREAD_SIGNALS): Remove defines.
(x86_64_register_u_addr, kernel_u_size,
lin_thread_get_thread_signals): Remove prototypes.
(PTRACE_ARG3_TYPE, PTRACE_XFER_TYPE): Define to `long'.
[HAVE_LINK_H]: Don't include "solib.h".
[HAVE_LINK_H] (SVR4_SHARED_LIBS): Remove define.
* config/i386/tm-x86-64linux.h: Fix comments.
* Makefile.in (x86-64-linux-nat.o, x86_64-linux-tdep.o,
x86-64-tdep.o): Update dependencies.
2003-05-31 16:15:38 +08:00
|
|
|
|
|
|
|
|
|
/* We only recognize a signal trampoline if PC is at the start of
|
|
|
|
|
one of the two instructions. We optimize for finding the PC at
|
|
|
|
|
the start, as will be the case when the trampoline is not the
|
|
|
|
|
first frame on the stack. We assume that in the case where the
|
|
|
|
|
PC is not at the start of the instruction sequence, there will be
|
|
|
|
|
a few trailing readable bytes on the stack. */
|
|
|
|
|
|
Update i386 and amd64 ports for unwinder changes.
* amd64-tdep.c (amd64_frame_cache): Expect this_frame.
(amd64_frame_this_id, amd64_frame_prev_register): Update signature.
(amd64_frame_unwind): Use default_frame_sniffer.
(amd64_frame_sniffer): Delete.
(amd64_sigtramp_frame_cache): Expect this_frame.
(amd64_sigtramp_frame_this_id, amd64_sigtramp_frame_prev_register)
(amd64_sigtramp_frame_sniffer): Update signature.
(amd64_sigtramp_frame_unwind): Add amd64_sigtramp_frame_sniffer.
(amd64_frame_base_address): Expect this_frame.
(amd64_dummy_id): Renamed from amd64_unwind_dummy_id. Expect
this_frame.
(amd64_init_abi): Use set_gdbarch_dummy_id and
frame_unwind_append_unwinder.
* i386-tdep.c (i386_frame_cache): Expect this_frame.
(i386_frame_this_id, i386_frame_prev_register): Update signature.
(i386_frame_unwind): Use default_frame_sniffer.
(i386_frame_sniffer): Delete.
(i386_sigtramp_frame_cache): Expect this_frame.
(i386_sigtramp_frame_this_id, i386_sigtramp_frame_prev_register)
(i386_sigtramp_frame_sniffer): Update signature.
(i386_sigtramp_frame_unwind): Use i386_sigtramp_frame_sniffer.
(i386_frame_base_address): Update signature.
(i386_dummy_id): Rename from i386_unwind_dummy_id. Expect this_frame.
(i386_push_dummy_call): Update comment.
(i386_sigtramp_p, i386_svr4_sigtramp_p, i386_svr4_sigcontext_addr):
Expect this_frame.
(i386_gdbarch_init): Use set_gdbarch_dummy_id, dwarf2_append_unwinders,
and frame_unwind_append_unwinder.
* amd64-linux-tdep.c, amd64-sol2-tdep.c, amd64fbsd-tdep.c,
amd64nbsd-tdep.c, amd64obsd-tdep.c, i386-linux-tdep.c,
i386-nto-tdep.c, i386bsd-tdep.c, i386-sol2-tdep.c, i386obsd-tdep.c,
i386nbsd-tdep.c: Update for unwinder changes.
2008-05-01 05:19:45 +08:00
|
|
|
|
if (!safe_frame_unwind_memory (this_frame, pc, buf, sizeof buf))
|
2001-09-21 20:19:15 +08:00
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
if (buf[0] != LINUX_SIGTRAMP_INSN0)
|
|
|
|
|
{
|
|
|
|
|
if (buf[0] != LINUX_SIGTRAMP_INSN1)
|
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
pc -= LINUX_SIGTRAMP_OFFSET1;
|
Update i386 and amd64 ports for unwinder changes.
* amd64-tdep.c (amd64_frame_cache): Expect this_frame.
(amd64_frame_this_id, amd64_frame_prev_register): Update signature.
(amd64_frame_unwind): Use default_frame_sniffer.
(amd64_frame_sniffer): Delete.
(amd64_sigtramp_frame_cache): Expect this_frame.
(amd64_sigtramp_frame_this_id, amd64_sigtramp_frame_prev_register)
(amd64_sigtramp_frame_sniffer): Update signature.
(amd64_sigtramp_frame_unwind): Add amd64_sigtramp_frame_sniffer.
(amd64_frame_base_address): Expect this_frame.
(amd64_dummy_id): Renamed from amd64_unwind_dummy_id. Expect
this_frame.
(amd64_init_abi): Use set_gdbarch_dummy_id and
frame_unwind_append_unwinder.
* i386-tdep.c (i386_frame_cache): Expect this_frame.
(i386_frame_this_id, i386_frame_prev_register): Update signature.
(i386_frame_unwind): Use default_frame_sniffer.
(i386_frame_sniffer): Delete.
(i386_sigtramp_frame_cache): Expect this_frame.
(i386_sigtramp_frame_this_id, i386_sigtramp_frame_prev_register)
(i386_sigtramp_frame_sniffer): Update signature.
(i386_sigtramp_frame_unwind): Use i386_sigtramp_frame_sniffer.
(i386_frame_base_address): Update signature.
(i386_dummy_id): Rename from i386_unwind_dummy_id. Expect this_frame.
(i386_push_dummy_call): Update comment.
(i386_sigtramp_p, i386_svr4_sigtramp_p, i386_svr4_sigcontext_addr):
Expect this_frame.
(i386_gdbarch_init): Use set_gdbarch_dummy_id, dwarf2_append_unwinders,
and frame_unwind_append_unwinder.
* amd64-linux-tdep.c, amd64-sol2-tdep.c, amd64fbsd-tdep.c,
amd64nbsd-tdep.c, amd64obsd-tdep.c, i386-linux-tdep.c,
i386-nto-tdep.c, i386bsd-tdep.c, i386-sol2-tdep.c, i386obsd-tdep.c,
i386nbsd-tdep.c: Update for unwinder changes.
2008-05-01 05:19:45 +08:00
|
|
|
|
if (!safe_frame_unwind_memory (this_frame, pc, buf, sizeof buf))
|
2001-09-21 20:19:15 +08:00
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
2012-07-03 22:53:56 +08:00
|
|
|
|
gdbarch = get_frame_arch (this_frame);
|
|
|
|
|
if (gdbarch_ptr_bit (gdbarch) == 32)
|
|
|
|
|
sigtramp_code = amd64_x32_linux_sigtramp_code;
|
|
|
|
|
else
|
|
|
|
|
sigtramp_code = amd64_linux_sigtramp_code;
|
|
|
|
|
if (memcmp (buf, sigtramp_code, LINUX_SIGTRAMP_LEN) != 0)
|
2001-09-21 20:19:15 +08:00
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
|
|
return pc;
|
|
|
|
|
}
|
|
|
|
|
|
Update i386 and amd64 ports for unwinder changes.
* amd64-tdep.c (amd64_frame_cache): Expect this_frame.
(amd64_frame_this_id, amd64_frame_prev_register): Update signature.
(amd64_frame_unwind): Use default_frame_sniffer.
(amd64_frame_sniffer): Delete.
(amd64_sigtramp_frame_cache): Expect this_frame.
(amd64_sigtramp_frame_this_id, amd64_sigtramp_frame_prev_register)
(amd64_sigtramp_frame_sniffer): Update signature.
(amd64_sigtramp_frame_unwind): Add amd64_sigtramp_frame_sniffer.
(amd64_frame_base_address): Expect this_frame.
(amd64_dummy_id): Renamed from amd64_unwind_dummy_id. Expect
this_frame.
(amd64_init_abi): Use set_gdbarch_dummy_id and
frame_unwind_append_unwinder.
* i386-tdep.c (i386_frame_cache): Expect this_frame.
(i386_frame_this_id, i386_frame_prev_register): Update signature.
(i386_frame_unwind): Use default_frame_sniffer.
(i386_frame_sniffer): Delete.
(i386_sigtramp_frame_cache): Expect this_frame.
(i386_sigtramp_frame_this_id, i386_sigtramp_frame_prev_register)
(i386_sigtramp_frame_sniffer): Update signature.
(i386_sigtramp_frame_unwind): Use i386_sigtramp_frame_sniffer.
(i386_frame_base_address): Update signature.
(i386_dummy_id): Rename from i386_unwind_dummy_id. Expect this_frame.
(i386_push_dummy_call): Update comment.
(i386_sigtramp_p, i386_svr4_sigtramp_p, i386_svr4_sigcontext_addr):
Expect this_frame.
(i386_gdbarch_init): Use set_gdbarch_dummy_id, dwarf2_append_unwinders,
and frame_unwind_append_unwinder.
* amd64-linux-tdep.c, amd64-sol2-tdep.c, amd64fbsd-tdep.c,
amd64nbsd-tdep.c, amd64obsd-tdep.c, i386-linux-tdep.c,
i386-nto-tdep.c, i386bsd-tdep.c, i386-sol2-tdep.c, i386obsd-tdep.c,
i386nbsd-tdep.c: Update for unwinder changes.
2008-05-01 05:19:45 +08:00
|
|
|
|
/* Return whether THIS_FRAME corresponds to a GNU/Linux sigtramp
|
|
|
|
|
routine. */
|
2002-10-24 Michal Ludvig <mludvig@suse.cz>
* dwarf2cfi.c (struct context)
(struct context_reg): Moved to dwarf2cfi.h
(context_alloc, frame_state_alloc, context_cpy):
Made extern instead of static, removed prototypes.
* dwarf2cfi.h (struct context)
(struct context_reg): New, moved from dwarf2cfi.c
(context_alloc, frame_state_alloc, context_cpy):
New prototypes.
* x86-64-linux-tdep.c (x86_64_linux_sigtramp_saved_pc):
Changed from static to extern.
(LINUX_SIGINFO_SIZE, LINUX_SIGCONTEXT_PC_OFFSET)
(LINUX_SIGCONTEXT_FP_OFFSET)
(LINUX_UCONTEXT_SIGCONTEXT_OFFSET): Adjusted.
(x86_64_linux_in_sigtramp, x86_64_linux_frame_chain)
(x86_64_init_frame_pc, x86_64_init_extra_frame_info): New.
* x86-64-tdep.c (x86_64_gdbarch_init): Several
set_gdbarch_*() calls now use x86-64 specific functions
instead of DWARF2 CFI ones.
* x86-64-tdep.h (x86_64_linux_in_sigtramp)
(x86_64_linux_frame_chain, x86_64_init_frame_pc)
(x86_64_init_extra_frame_info): New prototypes.
2002-10-24 09:27:43 +08:00
|
|
|
|
|
* x86-64-tdep.h (x86_64_num_regs, x86_64_num_gregs): Remove
variable declarations.
(x86_64_register_number, x86_64_register_name): Remove prototypes.
(x86_64_linux_frame_saved_pc, x86_64_linux+saved_pc_after_call,
x86_64_linux_in_sigtramp, x86_64_linux_frame_chain,
x86_64_init_frame_pc, x86_64_init_frame_pc,
x86_64_function_has_prologue): Remove prototypes.
(X86_64_NUM_GREGS): New define.
(x86_64_supply_fxsave, x86_64_fill_fxsave): New prototypes.
* x86-64-tdep.c: Don't include "dwarf2cfi.h". Include
"dummy_frame.h", "frame.h", "frame-base.h", "frame-unwind.h".
(RAX_REGNUM, RDX_REGNUM, RDI_REGNUM, EFLAGS_REGNUM, ST0_REGNUM,
XMM1_REGNUM): Remove defines.
(X86_64_RAX_REGNUM, X86_64_RDX_REGNUM, X86_64_RDI_REGNUM,
X86_64_RBP_REGNUM, X86_64_RSP_REGNUM, X86_64_RIP_REGNUM,
X86_64_EFLAGS_REGNUM, X86_64_ST0_REGNUM, X86_64_XMM0_REGNUM,
X86_64_XMM1_REGNUM): New defines.
(struct x86_64_register_info): Renamed from `struct
register_info'. Remove `size' member.
(x86_64_register_info_table): Remove variable.
(x86_64_register_info): New variable.
(X86_64_NUM_REGS): New define.
(X86_64_NUM_GREGS): Remove define.
(x86_64_num_regs, x86_64_num_gregs): Remove variables.
(x86_64_dwarf2gdb_regno_map, x86_64_dwarf2gdb_regno_map_length):
Remove variables.
(x86_54_dwarf2_reg_to_regnum): Remove function.
(x86_64_dwarf_regmap, x86_64_dwarf_regmap_len): New variables.
(x86_64_dwarf_reg_to_regnum): New function.
(x86_64_register_name): Rewrite.
(x86_64_register_raw_size): Remove function.
(x86_64_register_byte_table): Remove variable.
(x86_64_register_byte): Remove function.
(x86_64_register_virtual_type): Remove function.
(x86_64_register_type): New function.
(x86_64_register_convertible, x86_64_register_convert_to_virtual,
x86_64_register_convert_to_raw): Remove functions.
(x86_64_push_return_address, x86_64_pop_frame): Remove functon.
(x86_64_use_struct_convention): Make static. Adjust for renamed
defines.
(x86_64_frame_init_saved_regs): Remove function.
(x86_64_push_arguments): Make static. Change to accept a regcache
as argument.
(x86_64_store_return_value, x86_64_extract_return_value): Make
static. Rewrite based on i386 counterparts.
(x86_64_push_dummy_call): New function.
(X86_64_NUM_SAVED_REGS): New define.
(x86_64_register_number): Remove function.
(x86_64_store_struct_return): Remove function.
(x86_64_frameless_function_invocation,
x86_64_function_has_prologue): Remove functions.
(PROLOG_BUFSIZE): Remove define.
(struct x86_64_frame_cache): New structure.
(x86_64_alloc_frame_cache, x86_64_analyze_prologue,
x86_64_frame_cache, x86_64_frame_this_id,
x86_64_frame_prev_register, x86_64_frame_p,
x86_64_sigtramp_frame_cache, x86_64_sigtramp_frame_this_id,
x86_64_sigtramp_frame_prev_register, x86_sigtramp_frame_p): New
functions.
(x86_64_frame_unwind, x86_64_sigtramp_frame_unwind): New
variables.
(x86_64_skip_prologue): Rewrite in terms of
x86_64_analyze_prologue.
(x86_64_frame_base_address): New function.
(x86_64_frame_base): New variable.
(x86_64_save_dummy_frame_tos, x86_64_unwind_dummy_id): Rewrite.
(x86_64_init_abi): Set register_type and push_dummy_call. Don't
set deprecated_fp_regnum, deprecated_register_size,
deprecated_register_bytes, register_raw_size, register_byte,
register_virtual_type, register_convertiable,
register_convert_to_virtual, convert_to_raw,
deprecated_get_saved_register, deprecated_target_read_fp,
deprecated_push_arguments, deprecated_push_return_address,
deprecated_pop_frame, deprecated_store_struct_return,
deprecated_frame_init_saved_regs, deprecated_frame_chain,
frameless_function_invocation, deprecated_frame_saved_pc,
deprecated_saved_pc_after_call, frame_num_args, pc_in_sigtramp,
dwarf2_build_frame_info, deprecated_init_extra_frame_info,
deprecated_init_frame_pc and virtual_frame_pointer. Call
frame_unwind_append_predicate to register x86_64_sigtramp_frame_p
and x86_64_frame_p. Call frame_base_set_default to register
x86_64_frame_base.
(I387_FISEG_REGNUM, I387_FOSEG_REGNUM): New defines.
(x86_64_supply_fxsave, x86_64_fill_fxsave): New functions.
(_initialize_x86_64_tdep): Remove function.
* x86-64-linux-tdep.c: Don't include "dwarf2cfi.h".
(LINUX_SIGINFO_SIZE, LINUX_UCONTEXT_SIGCONTEXT_OFFSET,
LINUX_SIGCONTEXT_PC_OFFSET, LINUX_SIGCONTEXT_FP_OFFSET): Don't
define.
(X86_64_LINUX_UCONTEXT_SIGCONTEXT_OFFSET): Define.
(x86_64_linux_sigcontext_addr): Rewrite.
(x86_64_linux_sigtramp_saved_pc, x86_64_linux_saved_pc_after_call,
x86_64_linux_frame_saved_pc): Remove functions.
(x86_64_linux_pc_in_sigtramp): Renamed from
x86_64_linux_in_sigtramp. Try harder to recognize a signal
trampoline.
(x86_64_linux_frame_chain, x86_64_init_frame_pc):
Remove_functions.
(x86_64_linux_init_abi): Set pc_in_sigtramp. Initialize
TDEP->sigcontext_addr, TDEP->sc_pc_offset and TDEP->sc_sp_offset.
* x86-64-linux-nat.c: Sync with i386-linux-tdep.c.
(x86_64_regmap): Rename to regmap.
(GETREGS_SUPPLIES): Use X86_64_NUM_GREGS instead of
x86_64_num_gregs.
(supply_gregset, fill_gregset): Likewise. Use regmap instead of
x86_64_regmap.
(x86_64_fxsave_offset): Remove function.
(supply_fpregset): Simply call x86_64_supply_fxsave.
(fill_fpregset): Simply call x86_64_fill_fxsave.
(fetch_inferior_registers, store_inferior_registers): Avoid
asignment in if-statement.
(LINUX_SYSCALL_LEN, LINUX_SYSCALL_REGNUM, SYS_Sigreturn,
SYS_rt_sigreturn, LINUX_SIGCONTEXT_EFLAGS_OFFSET,
LINUX_UCONTEXT_SIGCONTEXT_OFFSET): Remove defines.
(fetch_core_registers): Remove function.
(linux_elf_core_fns): Remove.
(offsetoff): Don't define.
(_initialize_x86_64_linux_nat, kernel_u_size): Remove functions.
* config/i386/x86-64linux.mt (TDEPFILES): Add i386-linux-tdep.o.
* config/i386/x86-64linux.mh (NATDEPFILES): Remove core-aout.o,
add core-regset.o.
* config/i386/nm-x86-64linux.h: Use NM_X86_64_LINUX_H for
protection against multiple includes instead of NM_X86_64_h. Add
various comments. Include "config/nm-linux.h". Don't include
<signal.h>.
(REGISTER_U_ADDR, KERNEL_U_SIZE, U_REGS_OFFSET, KERN_U_ADDR,
GET_THREAD_SIGNALS): Remove defines.
(x86_64_register_u_addr, kernel_u_size,
lin_thread_get_thread_signals): Remove prototypes.
(PTRACE_ARG3_TYPE, PTRACE_XFER_TYPE): Define to `long'.
[HAVE_LINK_H]: Don't include "solib.h".
[HAVE_LINK_H] (SVR4_SHARED_LIBS): Remove define.
* config/i386/tm-x86-64linux.h: Fix comments.
* Makefile.in (x86-64-linux-nat.o, x86_64-linux-tdep.o,
x86-64-tdep.o): Update dependencies.
2003-05-31 16:15:38 +08:00
|
|
|
|
static int
|
Update i386 and amd64 ports for unwinder changes.
* amd64-tdep.c (amd64_frame_cache): Expect this_frame.
(amd64_frame_this_id, amd64_frame_prev_register): Update signature.
(amd64_frame_unwind): Use default_frame_sniffer.
(amd64_frame_sniffer): Delete.
(amd64_sigtramp_frame_cache): Expect this_frame.
(amd64_sigtramp_frame_this_id, amd64_sigtramp_frame_prev_register)
(amd64_sigtramp_frame_sniffer): Update signature.
(amd64_sigtramp_frame_unwind): Add amd64_sigtramp_frame_sniffer.
(amd64_frame_base_address): Expect this_frame.
(amd64_dummy_id): Renamed from amd64_unwind_dummy_id. Expect
this_frame.
(amd64_init_abi): Use set_gdbarch_dummy_id and
frame_unwind_append_unwinder.
* i386-tdep.c (i386_frame_cache): Expect this_frame.
(i386_frame_this_id, i386_frame_prev_register): Update signature.
(i386_frame_unwind): Use default_frame_sniffer.
(i386_frame_sniffer): Delete.
(i386_sigtramp_frame_cache): Expect this_frame.
(i386_sigtramp_frame_this_id, i386_sigtramp_frame_prev_register)
(i386_sigtramp_frame_sniffer): Update signature.
(i386_sigtramp_frame_unwind): Use i386_sigtramp_frame_sniffer.
(i386_frame_base_address): Update signature.
(i386_dummy_id): Rename from i386_unwind_dummy_id. Expect this_frame.
(i386_push_dummy_call): Update comment.
(i386_sigtramp_p, i386_svr4_sigtramp_p, i386_svr4_sigcontext_addr):
Expect this_frame.
(i386_gdbarch_init): Use set_gdbarch_dummy_id, dwarf2_append_unwinders,
and frame_unwind_append_unwinder.
* amd64-linux-tdep.c, amd64-sol2-tdep.c, amd64fbsd-tdep.c,
amd64nbsd-tdep.c, amd64obsd-tdep.c, i386-linux-tdep.c,
i386-nto-tdep.c, i386bsd-tdep.c, i386-sol2-tdep.c, i386obsd-tdep.c,
i386nbsd-tdep.c: Update for unwinder changes.
2008-05-01 05:19:45 +08:00
|
|
|
|
amd64_linux_sigtramp_p (struct frame_info *this_frame)
|
2002-10-24 Michal Ludvig <mludvig@suse.cz>
* dwarf2cfi.c (struct context)
(struct context_reg): Moved to dwarf2cfi.h
(context_alloc, frame_state_alloc, context_cpy):
Made extern instead of static, removed prototypes.
* dwarf2cfi.h (struct context)
(struct context_reg): New, moved from dwarf2cfi.c
(context_alloc, frame_state_alloc, context_cpy):
New prototypes.
* x86-64-linux-tdep.c (x86_64_linux_sigtramp_saved_pc):
Changed from static to extern.
(LINUX_SIGINFO_SIZE, LINUX_SIGCONTEXT_PC_OFFSET)
(LINUX_SIGCONTEXT_FP_OFFSET)
(LINUX_UCONTEXT_SIGCONTEXT_OFFSET): Adjusted.
(x86_64_linux_in_sigtramp, x86_64_linux_frame_chain)
(x86_64_init_frame_pc, x86_64_init_extra_frame_info): New.
* x86-64-tdep.c (x86_64_gdbarch_init): Several
set_gdbarch_*() calls now use x86-64 specific functions
instead of DWARF2 CFI ones.
* x86-64-tdep.h (x86_64_linux_in_sigtramp)
(x86_64_linux_frame_chain, x86_64_init_frame_pc)
(x86_64_init_extra_frame_info): New prototypes.
2002-10-24 09:27:43 +08:00
|
|
|
|
{
|
Update i386 and amd64 ports for unwinder changes.
* amd64-tdep.c (amd64_frame_cache): Expect this_frame.
(amd64_frame_this_id, amd64_frame_prev_register): Update signature.
(amd64_frame_unwind): Use default_frame_sniffer.
(amd64_frame_sniffer): Delete.
(amd64_sigtramp_frame_cache): Expect this_frame.
(amd64_sigtramp_frame_this_id, amd64_sigtramp_frame_prev_register)
(amd64_sigtramp_frame_sniffer): Update signature.
(amd64_sigtramp_frame_unwind): Add amd64_sigtramp_frame_sniffer.
(amd64_frame_base_address): Expect this_frame.
(amd64_dummy_id): Renamed from amd64_unwind_dummy_id. Expect
this_frame.
(amd64_init_abi): Use set_gdbarch_dummy_id and
frame_unwind_append_unwinder.
* i386-tdep.c (i386_frame_cache): Expect this_frame.
(i386_frame_this_id, i386_frame_prev_register): Update signature.
(i386_frame_unwind): Use default_frame_sniffer.
(i386_frame_sniffer): Delete.
(i386_sigtramp_frame_cache): Expect this_frame.
(i386_sigtramp_frame_this_id, i386_sigtramp_frame_prev_register)
(i386_sigtramp_frame_sniffer): Update signature.
(i386_sigtramp_frame_unwind): Use i386_sigtramp_frame_sniffer.
(i386_frame_base_address): Update signature.
(i386_dummy_id): Rename from i386_unwind_dummy_id. Expect this_frame.
(i386_push_dummy_call): Update comment.
(i386_sigtramp_p, i386_svr4_sigtramp_p, i386_svr4_sigcontext_addr):
Expect this_frame.
(i386_gdbarch_init): Use set_gdbarch_dummy_id, dwarf2_append_unwinders,
and frame_unwind_append_unwinder.
* amd64-linux-tdep.c, amd64-sol2-tdep.c, amd64fbsd-tdep.c,
amd64nbsd-tdep.c, amd64obsd-tdep.c, i386-linux-tdep.c,
i386-nto-tdep.c, i386bsd-tdep.c, i386-sol2-tdep.c, i386obsd-tdep.c,
i386nbsd-tdep.c: Update for unwinder changes.
2008-05-01 05:19:45 +08:00
|
|
|
|
CORE_ADDR pc = get_frame_pc (this_frame);
|
2012-02-03 04:19:17 +08:00
|
|
|
|
const char *name;
|
* amd64-tdep.c (amd64_sigtramp_frame_sniffer): Rewrite to use new
sigtramp_p member of `struct gdbarch_tdep'. Also check whether
the program counter is in the range specified by `struct
gdbarch_tdep'.
* amd64-linux-tdep.c: Include "symtab.h".
(amd64_linux_pc_in_sigtramp): Remove function.
(amd64_linux_sigtramp_p): New function.
(amd64_linux_init_abi): Initialize TDEP->sigtramp_p. Don't set
deprecated_pc_in_sigtramp.
* amd64nbsd-tdep.c: Include "symtab.h".
(amd64nbsd_sigtramp_p): New function.
(amd64nbsd_init_abi): Initialize TDEP->sigtramp_p. Don't set
deprecated_pc_in_sigtramp.
* amd64obsd-tdep.c: Include "symtab.h" and "objfiles.h". Add a
few comments.
(amd64obsd_pc_in_sigtramp): Remove function.
(amd64obsd_sigtramp_p): New function.
(amd64obsd_init_abi): Initialize TDEP->sigtramp_p. Don't set
deprecated_pc_in_sigtramp.
* i386-tdep.h (struct gdbarch_tdep): Add sigtramp_p member.
(i386bsd_pc_ins_sigtramp): Remove prototype.
(i386bsd_sigtramp_start, i386bsd_sigtramp_end): Remove prototypes.
* i386-tdep.c (i386_sigtramp_frame_sniffer): Rewrite to use new
sigtramp_p member of `struct gdbarch_tdep'. Also check whether
the program counter is in the range specified by `struct
gdbarch_tdep'.
(i386_pc_in_sigtramp, i386_svr4_pc_in_sigtramp): Remove functions.
(i386_sigtramp_p, i386_svr4_sigtramp_p): New functions.
(i386_go32_pc_in_sigtramp): Remove function.
(i386_svr4_init_abi): Don't set deprecated_pc_in_sigtramp.
Initialize TDEP->sigtramp_p.
(i386_go32_init_abi): Initialize TDEP->sigtramp_p to NULL.
(i386_gdbarch_init): Initialize TDEP->sigtramp_p. Don't set
deprecated_pc_in_sigtramp.
* i386-linux-tdep.c: Adjust comments.
(i386_linux_pc_in_sigtramp): Remove function.
(i386_linux_sigtramp_p): New function.
(i386_linux_init_abi): Initialize TDEP->sigtramp_p. Don't set
deprecated_pc_in_sigtramp.
* i386-nto-tdep.c: Update copyright year.
(i386nto_pc_in_sigtramp): Remove function.
(i386nto_sigtramp_p): New function.
(i386nto_sigcontext_addr): Use I386_ESP_REGNUM instead of
SP_REGNUM.
(i386nto_init_abi): Initialize TDEP->sigtramp_p. Don't set
deprecated_pc_in_sigtramp.
* i386-sol2-tdep.c: Update copyright year.
(i386_sol2_pc_in_sigtramp): Remove function.
(i386_sol2_sigtramp_p): New function.
(i386_sol2_init_abi): Initialize TDEP->sigtramp_p. Don't set
deprecated_pc_in_sigtramp.
* i386bsd-tdep.c (i386bsd_pc_in_sigtramp): Remove function.
(i386bsd_sigtramp_start, i386bsd_sigtramp_end): Remove functions.
(i386bsd_init_abi): Don't set deprecated_pc_in_sigtramp,
deprecated_sigtramp_start and deprecated_sigtramp_end.
* i386nbsd-tdep.c: Include "frame.h" and "symtab.h".
(i386nbsd_pc_in_sigtramp): Remove function.
(i386nbsd_sigtramp_p): New function.
(i386nbsd_init_abi): Don't set deprecated_pc_in_sigtramp,
deprecated_sigtramp_start, deprecated_sigtramp_end. Initialize
TDEP->sigtramp_start, TDEP->sigtramp_end and TDEP->sigtramp_p.
* i386obsd-tdep.c: Include "frame.h", "symtab.h" and "objfiles.h".
(i386obsd_pc_in_sigtramp): Remove function.
(i386obsd_sigtramp_p): New function.
(i386obsd_sigtramp_start, i386obsd_sigtramp_end): Remove
functions.
(i386bsd_init_abi): Don't set deprecated_pc_in_sigtramp,
deprecated_sigtramp_start, deprecated_sigtramp_end. Initialize
TDEP->sigtramp_p.
* Makefile.in (amd64-linux-tdep.o, amd64nbsd-tdep.o,
amd64obsd-tdep.o, i386nbsd-tdep.o, i386obsd-tdep.o): Update
dependencies.
2004-04-10 00:28:50 +08:00
|
|
|
|
|
|
|
|
|
find_pc_partial_function (pc, &name, NULL, NULL);
|
|
|
|
|
|
* x86-64-tdep.h (x86_64_num_regs, x86_64_num_gregs): Remove
variable declarations.
(x86_64_register_number, x86_64_register_name): Remove prototypes.
(x86_64_linux_frame_saved_pc, x86_64_linux+saved_pc_after_call,
x86_64_linux_in_sigtramp, x86_64_linux_frame_chain,
x86_64_init_frame_pc, x86_64_init_frame_pc,
x86_64_function_has_prologue): Remove prototypes.
(X86_64_NUM_GREGS): New define.
(x86_64_supply_fxsave, x86_64_fill_fxsave): New prototypes.
* x86-64-tdep.c: Don't include "dwarf2cfi.h". Include
"dummy_frame.h", "frame.h", "frame-base.h", "frame-unwind.h".
(RAX_REGNUM, RDX_REGNUM, RDI_REGNUM, EFLAGS_REGNUM, ST0_REGNUM,
XMM1_REGNUM): Remove defines.
(X86_64_RAX_REGNUM, X86_64_RDX_REGNUM, X86_64_RDI_REGNUM,
X86_64_RBP_REGNUM, X86_64_RSP_REGNUM, X86_64_RIP_REGNUM,
X86_64_EFLAGS_REGNUM, X86_64_ST0_REGNUM, X86_64_XMM0_REGNUM,
X86_64_XMM1_REGNUM): New defines.
(struct x86_64_register_info): Renamed from `struct
register_info'. Remove `size' member.
(x86_64_register_info_table): Remove variable.
(x86_64_register_info): New variable.
(X86_64_NUM_REGS): New define.
(X86_64_NUM_GREGS): Remove define.
(x86_64_num_regs, x86_64_num_gregs): Remove variables.
(x86_64_dwarf2gdb_regno_map, x86_64_dwarf2gdb_regno_map_length):
Remove variables.
(x86_54_dwarf2_reg_to_regnum): Remove function.
(x86_64_dwarf_regmap, x86_64_dwarf_regmap_len): New variables.
(x86_64_dwarf_reg_to_regnum): New function.
(x86_64_register_name): Rewrite.
(x86_64_register_raw_size): Remove function.
(x86_64_register_byte_table): Remove variable.
(x86_64_register_byte): Remove function.
(x86_64_register_virtual_type): Remove function.
(x86_64_register_type): New function.
(x86_64_register_convertible, x86_64_register_convert_to_virtual,
x86_64_register_convert_to_raw): Remove functions.
(x86_64_push_return_address, x86_64_pop_frame): Remove functon.
(x86_64_use_struct_convention): Make static. Adjust for renamed
defines.
(x86_64_frame_init_saved_regs): Remove function.
(x86_64_push_arguments): Make static. Change to accept a regcache
as argument.
(x86_64_store_return_value, x86_64_extract_return_value): Make
static. Rewrite based on i386 counterparts.
(x86_64_push_dummy_call): New function.
(X86_64_NUM_SAVED_REGS): New define.
(x86_64_register_number): Remove function.
(x86_64_store_struct_return): Remove function.
(x86_64_frameless_function_invocation,
x86_64_function_has_prologue): Remove functions.
(PROLOG_BUFSIZE): Remove define.
(struct x86_64_frame_cache): New structure.
(x86_64_alloc_frame_cache, x86_64_analyze_prologue,
x86_64_frame_cache, x86_64_frame_this_id,
x86_64_frame_prev_register, x86_64_frame_p,
x86_64_sigtramp_frame_cache, x86_64_sigtramp_frame_this_id,
x86_64_sigtramp_frame_prev_register, x86_sigtramp_frame_p): New
functions.
(x86_64_frame_unwind, x86_64_sigtramp_frame_unwind): New
variables.
(x86_64_skip_prologue): Rewrite in terms of
x86_64_analyze_prologue.
(x86_64_frame_base_address): New function.
(x86_64_frame_base): New variable.
(x86_64_save_dummy_frame_tos, x86_64_unwind_dummy_id): Rewrite.
(x86_64_init_abi): Set register_type and push_dummy_call. Don't
set deprecated_fp_regnum, deprecated_register_size,
deprecated_register_bytes, register_raw_size, register_byte,
register_virtual_type, register_convertiable,
register_convert_to_virtual, convert_to_raw,
deprecated_get_saved_register, deprecated_target_read_fp,
deprecated_push_arguments, deprecated_push_return_address,
deprecated_pop_frame, deprecated_store_struct_return,
deprecated_frame_init_saved_regs, deprecated_frame_chain,
frameless_function_invocation, deprecated_frame_saved_pc,
deprecated_saved_pc_after_call, frame_num_args, pc_in_sigtramp,
dwarf2_build_frame_info, deprecated_init_extra_frame_info,
deprecated_init_frame_pc and virtual_frame_pointer. Call
frame_unwind_append_predicate to register x86_64_sigtramp_frame_p
and x86_64_frame_p. Call frame_base_set_default to register
x86_64_frame_base.
(I387_FISEG_REGNUM, I387_FOSEG_REGNUM): New defines.
(x86_64_supply_fxsave, x86_64_fill_fxsave): New functions.
(_initialize_x86_64_tdep): Remove function.
* x86-64-linux-tdep.c: Don't include "dwarf2cfi.h".
(LINUX_SIGINFO_SIZE, LINUX_UCONTEXT_SIGCONTEXT_OFFSET,
LINUX_SIGCONTEXT_PC_OFFSET, LINUX_SIGCONTEXT_FP_OFFSET): Don't
define.
(X86_64_LINUX_UCONTEXT_SIGCONTEXT_OFFSET): Define.
(x86_64_linux_sigcontext_addr): Rewrite.
(x86_64_linux_sigtramp_saved_pc, x86_64_linux_saved_pc_after_call,
x86_64_linux_frame_saved_pc): Remove functions.
(x86_64_linux_pc_in_sigtramp): Renamed from
x86_64_linux_in_sigtramp. Try harder to recognize a signal
trampoline.
(x86_64_linux_frame_chain, x86_64_init_frame_pc):
Remove_functions.
(x86_64_linux_init_abi): Set pc_in_sigtramp. Initialize
TDEP->sigcontext_addr, TDEP->sc_pc_offset and TDEP->sc_sp_offset.
* x86-64-linux-nat.c: Sync with i386-linux-tdep.c.
(x86_64_regmap): Rename to regmap.
(GETREGS_SUPPLIES): Use X86_64_NUM_GREGS instead of
x86_64_num_gregs.
(supply_gregset, fill_gregset): Likewise. Use regmap instead of
x86_64_regmap.
(x86_64_fxsave_offset): Remove function.
(supply_fpregset): Simply call x86_64_supply_fxsave.
(fill_fpregset): Simply call x86_64_fill_fxsave.
(fetch_inferior_registers, store_inferior_registers): Avoid
asignment in if-statement.
(LINUX_SYSCALL_LEN, LINUX_SYSCALL_REGNUM, SYS_Sigreturn,
SYS_rt_sigreturn, LINUX_SIGCONTEXT_EFLAGS_OFFSET,
LINUX_UCONTEXT_SIGCONTEXT_OFFSET): Remove defines.
(fetch_core_registers): Remove function.
(linux_elf_core_fns): Remove.
(offsetoff): Don't define.
(_initialize_x86_64_linux_nat, kernel_u_size): Remove functions.
* config/i386/x86-64linux.mt (TDEPFILES): Add i386-linux-tdep.o.
* config/i386/x86-64linux.mh (NATDEPFILES): Remove core-aout.o,
add core-regset.o.
* config/i386/nm-x86-64linux.h: Use NM_X86_64_LINUX_H for
protection against multiple includes instead of NM_X86_64_h. Add
various comments. Include "config/nm-linux.h". Don't include
<signal.h>.
(REGISTER_U_ADDR, KERNEL_U_SIZE, U_REGS_OFFSET, KERN_U_ADDR,
GET_THREAD_SIGNALS): Remove defines.
(x86_64_register_u_addr, kernel_u_size,
lin_thread_get_thread_signals): Remove prototypes.
(PTRACE_ARG3_TYPE, PTRACE_XFER_TYPE): Define to `long'.
[HAVE_LINK_H]: Don't include "solib.h".
[HAVE_LINK_H] (SVR4_SHARED_LIBS): Remove define.
* config/i386/tm-x86-64linux.h: Fix comments.
* Makefile.in (x86-64-linux-nat.o, x86_64-linux-tdep.o,
x86-64-tdep.o): Update dependencies.
2003-05-31 16:15:38 +08:00
|
|
|
|
/* If we have NAME, we can optimize the search. The trampoline is
|
|
|
|
|
named __restore_rt. However, it isn't dynamically exported from
|
|
|
|
|
the shared C library, so the trampoline may appear to be part of
|
|
|
|
|
the preceding function. This should always be sigaction,
|
|
|
|
|
__sigaction, or __libc_sigaction (all aliases to the same
|
|
|
|
|
function). */
|
|
|
|
|
if (name == NULL || strstr (name, "sigaction") != NULL)
|
Update i386 and amd64 ports for unwinder changes.
* amd64-tdep.c (amd64_frame_cache): Expect this_frame.
(amd64_frame_this_id, amd64_frame_prev_register): Update signature.
(amd64_frame_unwind): Use default_frame_sniffer.
(amd64_frame_sniffer): Delete.
(amd64_sigtramp_frame_cache): Expect this_frame.
(amd64_sigtramp_frame_this_id, amd64_sigtramp_frame_prev_register)
(amd64_sigtramp_frame_sniffer): Update signature.
(amd64_sigtramp_frame_unwind): Add amd64_sigtramp_frame_sniffer.
(amd64_frame_base_address): Expect this_frame.
(amd64_dummy_id): Renamed from amd64_unwind_dummy_id. Expect
this_frame.
(amd64_init_abi): Use set_gdbarch_dummy_id and
frame_unwind_append_unwinder.
* i386-tdep.c (i386_frame_cache): Expect this_frame.
(i386_frame_this_id, i386_frame_prev_register): Update signature.
(i386_frame_unwind): Use default_frame_sniffer.
(i386_frame_sniffer): Delete.
(i386_sigtramp_frame_cache): Expect this_frame.
(i386_sigtramp_frame_this_id, i386_sigtramp_frame_prev_register)
(i386_sigtramp_frame_sniffer): Update signature.
(i386_sigtramp_frame_unwind): Use i386_sigtramp_frame_sniffer.
(i386_frame_base_address): Update signature.
(i386_dummy_id): Rename from i386_unwind_dummy_id. Expect this_frame.
(i386_push_dummy_call): Update comment.
(i386_sigtramp_p, i386_svr4_sigtramp_p, i386_svr4_sigcontext_addr):
Expect this_frame.
(i386_gdbarch_init): Use set_gdbarch_dummy_id, dwarf2_append_unwinders,
and frame_unwind_append_unwinder.
* amd64-linux-tdep.c, amd64-sol2-tdep.c, amd64fbsd-tdep.c,
amd64nbsd-tdep.c, amd64obsd-tdep.c, i386-linux-tdep.c,
i386-nto-tdep.c, i386bsd-tdep.c, i386-sol2-tdep.c, i386obsd-tdep.c,
i386nbsd-tdep.c: Update for unwinder changes.
2008-05-01 05:19:45 +08:00
|
|
|
|
return (amd64_linux_sigtramp_start (this_frame) != 0);
|
* x86-64-tdep.h (x86_64_num_regs, x86_64_num_gregs): Remove
variable declarations.
(x86_64_register_number, x86_64_register_name): Remove prototypes.
(x86_64_linux_frame_saved_pc, x86_64_linux+saved_pc_after_call,
x86_64_linux_in_sigtramp, x86_64_linux_frame_chain,
x86_64_init_frame_pc, x86_64_init_frame_pc,
x86_64_function_has_prologue): Remove prototypes.
(X86_64_NUM_GREGS): New define.
(x86_64_supply_fxsave, x86_64_fill_fxsave): New prototypes.
* x86-64-tdep.c: Don't include "dwarf2cfi.h". Include
"dummy_frame.h", "frame.h", "frame-base.h", "frame-unwind.h".
(RAX_REGNUM, RDX_REGNUM, RDI_REGNUM, EFLAGS_REGNUM, ST0_REGNUM,
XMM1_REGNUM): Remove defines.
(X86_64_RAX_REGNUM, X86_64_RDX_REGNUM, X86_64_RDI_REGNUM,
X86_64_RBP_REGNUM, X86_64_RSP_REGNUM, X86_64_RIP_REGNUM,
X86_64_EFLAGS_REGNUM, X86_64_ST0_REGNUM, X86_64_XMM0_REGNUM,
X86_64_XMM1_REGNUM): New defines.
(struct x86_64_register_info): Renamed from `struct
register_info'. Remove `size' member.
(x86_64_register_info_table): Remove variable.
(x86_64_register_info): New variable.
(X86_64_NUM_REGS): New define.
(X86_64_NUM_GREGS): Remove define.
(x86_64_num_regs, x86_64_num_gregs): Remove variables.
(x86_64_dwarf2gdb_regno_map, x86_64_dwarf2gdb_regno_map_length):
Remove variables.
(x86_54_dwarf2_reg_to_regnum): Remove function.
(x86_64_dwarf_regmap, x86_64_dwarf_regmap_len): New variables.
(x86_64_dwarf_reg_to_regnum): New function.
(x86_64_register_name): Rewrite.
(x86_64_register_raw_size): Remove function.
(x86_64_register_byte_table): Remove variable.
(x86_64_register_byte): Remove function.
(x86_64_register_virtual_type): Remove function.
(x86_64_register_type): New function.
(x86_64_register_convertible, x86_64_register_convert_to_virtual,
x86_64_register_convert_to_raw): Remove functions.
(x86_64_push_return_address, x86_64_pop_frame): Remove functon.
(x86_64_use_struct_convention): Make static. Adjust for renamed
defines.
(x86_64_frame_init_saved_regs): Remove function.
(x86_64_push_arguments): Make static. Change to accept a regcache
as argument.
(x86_64_store_return_value, x86_64_extract_return_value): Make
static. Rewrite based on i386 counterparts.
(x86_64_push_dummy_call): New function.
(X86_64_NUM_SAVED_REGS): New define.
(x86_64_register_number): Remove function.
(x86_64_store_struct_return): Remove function.
(x86_64_frameless_function_invocation,
x86_64_function_has_prologue): Remove functions.
(PROLOG_BUFSIZE): Remove define.
(struct x86_64_frame_cache): New structure.
(x86_64_alloc_frame_cache, x86_64_analyze_prologue,
x86_64_frame_cache, x86_64_frame_this_id,
x86_64_frame_prev_register, x86_64_frame_p,
x86_64_sigtramp_frame_cache, x86_64_sigtramp_frame_this_id,
x86_64_sigtramp_frame_prev_register, x86_sigtramp_frame_p): New
functions.
(x86_64_frame_unwind, x86_64_sigtramp_frame_unwind): New
variables.
(x86_64_skip_prologue): Rewrite in terms of
x86_64_analyze_prologue.
(x86_64_frame_base_address): New function.
(x86_64_frame_base): New variable.
(x86_64_save_dummy_frame_tos, x86_64_unwind_dummy_id): Rewrite.
(x86_64_init_abi): Set register_type and push_dummy_call. Don't
set deprecated_fp_regnum, deprecated_register_size,
deprecated_register_bytes, register_raw_size, register_byte,
register_virtual_type, register_convertiable,
register_convert_to_virtual, convert_to_raw,
deprecated_get_saved_register, deprecated_target_read_fp,
deprecated_push_arguments, deprecated_push_return_address,
deprecated_pop_frame, deprecated_store_struct_return,
deprecated_frame_init_saved_regs, deprecated_frame_chain,
frameless_function_invocation, deprecated_frame_saved_pc,
deprecated_saved_pc_after_call, frame_num_args, pc_in_sigtramp,
dwarf2_build_frame_info, deprecated_init_extra_frame_info,
deprecated_init_frame_pc and virtual_frame_pointer. Call
frame_unwind_append_predicate to register x86_64_sigtramp_frame_p
and x86_64_frame_p. Call frame_base_set_default to register
x86_64_frame_base.
(I387_FISEG_REGNUM, I387_FOSEG_REGNUM): New defines.
(x86_64_supply_fxsave, x86_64_fill_fxsave): New functions.
(_initialize_x86_64_tdep): Remove function.
* x86-64-linux-tdep.c: Don't include "dwarf2cfi.h".
(LINUX_SIGINFO_SIZE, LINUX_UCONTEXT_SIGCONTEXT_OFFSET,
LINUX_SIGCONTEXT_PC_OFFSET, LINUX_SIGCONTEXT_FP_OFFSET): Don't
define.
(X86_64_LINUX_UCONTEXT_SIGCONTEXT_OFFSET): Define.
(x86_64_linux_sigcontext_addr): Rewrite.
(x86_64_linux_sigtramp_saved_pc, x86_64_linux_saved_pc_after_call,
x86_64_linux_frame_saved_pc): Remove functions.
(x86_64_linux_pc_in_sigtramp): Renamed from
x86_64_linux_in_sigtramp. Try harder to recognize a signal
trampoline.
(x86_64_linux_frame_chain, x86_64_init_frame_pc):
Remove_functions.
(x86_64_linux_init_abi): Set pc_in_sigtramp. Initialize
TDEP->sigcontext_addr, TDEP->sc_pc_offset and TDEP->sc_sp_offset.
* x86-64-linux-nat.c: Sync with i386-linux-tdep.c.
(x86_64_regmap): Rename to regmap.
(GETREGS_SUPPLIES): Use X86_64_NUM_GREGS instead of
x86_64_num_gregs.
(supply_gregset, fill_gregset): Likewise. Use regmap instead of
x86_64_regmap.
(x86_64_fxsave_offset): Remove function.
(supply_fpregset): Simply call x86_64_supply_fxsave.
(fill_fpregset): Simply call x86_64_fill_fxsave.
(fetch_inferior_registers, store_inferior_registers): Avoid
asignment in if-statement.
(LINUX_SYSCALL_LEN, LINUX_SYSCALL_REGNUM, SYS_Sigreturn,
SYS_rt_sigreturn, LINUX_SIGCONTEXT_EFLAGS_OFFSET,
LINUX_UCONTEXT_SIGCONTEXT_OFFSET): Remove defines.
(fetch_core_registers): Remove function.
(linux_elf_core_fns): Remove.
(offsetoff): Don't define.
(_initialize_x86_64_linux_nat, kernel_u_size): Remove functions.
* config/i386/x86-64linux.mt (TDEPFILES): Add i386-linux-tdep.o.
* config/i386/x86-64linux.mh (NATDEPFILES): Remove core-aout.o,
add core-regset.o.
* config/i386/nm-x86-64linux.h: Use NM_X86_64_LINUX_H for
protection against multiple includes instead of NM_X86_64_h. Add
various comments. Include "config/nm-linux.h". Don't include
<signal.h>.
(REGISTER_U_ADDR, KERNEL_U_SIZE, U_REGS_OFFSET, KERN_U_ADDR,
GET_THREAD_SIGNALS): Remove defines.
(x86_64_register_u_addr, kernel_u_size,
lin_thread_get_thread_signals): Remove prototypes.
(PTRACE_ARG3_TYPE, PTRACE_XFER_TYPE): Define to `long'.
[HAVE_LINK_H]: Don't include "solib.h".
[HAVE_LINK_H] (SVR4_SHARED_LIBS): Remove define.
* config/i386/tm-x86-64linux.h: Fix comments.
* Makefile.in (x86-64-linux-nat.o, x86_64-linux-tdep.o,
x86-64-tdep.o): Update dependencies.
2003-05-31 16:15:38 +08:00
|
|
|
|
|
|
|
|
|
return (strcmp ("__restore_rt", name) == 0);
|
2002-10-24 Michal Ludvig <mludvig@suse.cz>
* dwarf2cfi.c (struct context)
(struct context_reg): Moved to dwarf2cfi.h
(context_alloc, frame_state_alloc, context_cpy):
Made extern instead of static, removed prototypes.
* dwarf2cfi.h (struct context)
(struct context_reg): New, moved from dwarf2cfi.c
(context_alloc, frame_state_alloc, context_cpy):
New prototypes.
* x86-64-linux-tdep.c (x86_64_linux_sigtramp_saved_pc):
Changed from static to extern.
(LINUX_SIGINFO_SIZE, LINUX_SIGCONTEXT_PC_OFFSET)
(LINUX_SIGCONTEXT_FP_OFFSET)
(LINUX_UCONTEXT_SIGCONTEXT_OFFSET): Adjusted.
(x86_64_linux_in_sigtramp, x86_64_linux_frame_chain)
(x86_64_init_frame_pc, x86_64_init_extra_frame_info): New.
* x86-64-tdep.c (x86_64_gdbarch_init): Several
set_gdbarch_*() calls now use x86-64 specific functions
instead of DWARF2 CFI ones.
* x86-64-tdep.h (x86_64_linux_in_sigtramp)
(x86_64_linux_frame_chain, x86_64_init_frame_pc)
(x86_64_init_extra_frame_info): New prototypes.
2002-10-24 09:27:43 +08:00
|
|
|
|
}
|
|
|
|
|
|
* x86-64-tdep.h (x86_64_num_regs, x86_64_num_gregs): Remove
variable declarations.
(x86_64_register_number, x86_64_register_name): Remove prototypes.
(x86_64_linux_frame_saved_pc, x86_64_linux+saved_pc_after_call,
x86_64_linux_in_sigtramp, x86_64_linux_frame_chain,
x86_64_init_frame_pc, x86_64_init_frame_pc,
x86_64_function_has_prologue): Remove prototypes.
(X86_64_NUM_GREGS): New define.
(x86_64_supply_fxsave, x86_64_fill_fxsave): New prototypes.
* x86-64-tdep.c: Don't include "dwarf2cfi.h". Include
"dummy_frame.h", "frame.h", "frame-base.h", "frame-unwind.h".
(RAX_REGNUM, RDX_REGNUM, RDI_REGNUM, EFLAGS_REGNUM, ST0_REGNUM,
XMM1_REGNUM): Remove defines.
(X86_64_RAX_REGNUM, X86_64_RDX_REGNUM, X86_64_RDI_REGNUM,
X86_64_RBP_REGNUM, X86_64_RSP_REGNUM, X86_64_RIP_REGNUM,
X86_64_EFLAGS_REGNUM, X86_64_ST0_REGNUM, X86_64_XMM0_REGNUM,
X86_64_XMM1_REGNUM): New defines.
(struct x86_64_register_info): Renamed from `struct
register_info'. Remove `size' member.
(x86_64_register_info_table): Remove variable.
(x86_64_register_info): New variable.
(X86_64_NUM_REGS): New define.
(X86_64_NUM_GREGS): Remove define.
(x86_64_num_regs, x86_64_num_gregs): Remove variables.
(x86_64_dwarf2gdb_regno_map, x86_64_dwarf2gdb_regno_map_length):
Remove variables.
(x86_54_dwarf2_reg_to_regnum): Remove function.
(x86_64_dwarf_regmap, x86_64_dwarf_regmap_len): New variables.
(x86_64_dwarf_reg_to_regnum): New function.
(x86_64_register_name): Rewrite.
(x86_64_register_raw_size): Remove function.
(x86_64_register_byte_table): Remove variable.
(x86_64_register_byte): Remove function.
(x86_64_register_virtual_type): Remove function.
(x86_64_register_type): New function.
(x86_64_register_convertible, x86_64_register_convert_to_virtual,
x86_64_register_convert_to_raw): Remove functions.
(x86_64_push_return_address, x86_64_pop_frame): Remove functon.
(x86_64_use_struct_convention): Make static. Adjust for renamed
defines.
(x86_64_frame_init_saved_regs): Remove function.
(x86_64_push_arguments): Make static. Change to accept a regcache
as argument.
(x86_64_store_return_value, x86_64_extract_return_value): Make
static. Rewrite based on i386 counterparts.
(x86_64_push_dummy_call): New function.
(X86_64_NUM_SAVED_REGS): New define.
(x86_64_register_number): Remove function.
(x86_64_store_struct_return): Remove function.
(x86_64_frameless_function_invocation,
x86_64_function_has_prologue): Remove functions.
(PROLOG_BUFSIZE): Remove define.
(struct x86_64_frame_cache): New structure.
(x86_64_alloc_frame_cache, x86_64_analyze_prologue,
x86_64_frame_cache, x86_64_frame_this_id,
x86_64_frame_prev_register, x86_64_frame_p,
x86_64_sigtramp_frame_cache, x86_64_sigtramp_frame_this_id,
x86_64_sigtramp_frame_prev_register, x86_sigtramp_frame_p): New
functions.
(x86_64_frame_unwind, x86_64_sigtramp_frame_unwind): New
variables.
(x86_64_skip_prologue): Rewrite in terms of
x86_64_analyze_prologue.
(x86_64_frame_base_address): New function.
(x86_64_frame_base): New variable.
(x86_64_save_dummy_frame_tos, x86_64_unwind_dummy_id): Rewrite.
(x86_64_init_abi): Set register_type and push_dummy_call. Don't
set deprecated_fp_regnum, deprecated_register_size,
deprecated_register_bytes, register_raw_size, register_byte,
register_virtual_type, register_convertiable,
register_convert_to_virtual, convert_to_raw,
deprecated_get_saved_register, deprecated_target_read_fp,
deprecated_push_arguments, deprecated_push_return_address,
deprecated_pop_frame, deprecated_store_struct_return,
deprecated_frame_init_saved_regs, deprecated_frame_chain,
frameless_function_invocation, deprecated_frame_saved_pc,
deprecated_saved_pc_after_call, frame_num_args, pc_in_sigtramp,
dwarf2_build_frame_info, deprecated_init_extra_frame_info,
deprecated_init_frame_pc and virtual_frame_pointer. Call
frame_unwind_append_predicate to register x86_64_sigtramp_frame_p
and x86_64_frame_p. Call frame_base_set_default to register
x86_64_frame_base.
(I387_FISEG_REGNUM, I387_FOSEG_REGNUM): New defines.
(x86_64_supply_fxsave, x86_64_fill_fxsave): New functions.
(_initialize_x86_64_tdep): Remove function.
* x86-64-linux-tdep.c: Don't include "dwarf2cfi.h".
(LINUX_SIGINFO_SIZE, LINUX_UCONTEXT_SIGCONTEXT_OFFSET,
LINUX_SIGCONTEXT_PC_OFFSET, LINUX_SIGCONTEXT_FP_OFFSET): Don't
define.
(X86_64_LINUX_UCONTEXT_SIGCONTEXT_OFFSET): Define.
(x86_64_linux_sigcontext_addr): Rewrite.
(x86_64_linux_sigtramp_saved_pc, x86_64_linux_saved_pc_after_call,
x86_64_linux_frame_saved_pc): Remove functions.
(x86_64_linux_pc_in_sigtramp): Renamed from
x86_64_linux_in_sigtramp. Try harder to recognize a signal
trampoline.
(x86_64_linux_frame_chain, x86_64_init_frame_pc):
Remove_functions.
(x86_64_linux_init_abi): Set pc_in_sigtramp. Initialize
TDEP->sigcontext_addr, TDEP->sc_pc_offset and TDEP->sc_sp_offset.
* x86-64-linux-nat.c: Sync with i386-linux-tdep.c.
(x86_64_regmap): Rename to regmap.
(GETREGS_SUPPLIES): Use X86_64_NUM_GREGS instead of
x86_64_num_gregs.
(supply_gregset, fill_gregset): Likewise. Use regmap instead of
x86_64_regmap.
(x86_64_fxsave_offset): Remove function.
(supply_fpregset): Simply call x86_64_supply_fxsave.
(fill_fpregset): Simply call x86_64_fill_fxsave.
(fetch_inferior_registers, store_inferior_registers): Avoid
asignment in if-statement.
(LINUX_SYSCALL_LEN, LINUX_SYSCALL_REGNUM, SYS_Sigreturn,
SYS_rt_sigreturn, LINUX_SIGCONTEXT_EFLAGS_OFFSET,
LINUX_UCONTEXT_SIGCONTEXT_OFFSET): Remove defines.
(fetch_core_registers): Remove function.
(linux_elf_core_fns): Remove.
(offsetoff): Don't define.
(_initialize_x86_64_linux_nat, kernel_u_size): Remove functions.
* config/i386/x86-64linux.mt (TDEPFILES): Add i386-linux-tdep.o.
* config/i386/x86-64linux.mh (NATDEPFILES): Remove core-aout.o,
add core-regset.o.
* config/i386/nm-x86-64linux.h: Use NM_X86_64_LINUX_H for
protection against multiple includes instead of NM_X86_64_h. Add
various comments. Include "config/nm-linux.h". Don't include
<signal.h>.
(REGISTER_U_ADDR, KERNEL_U_SIZE, U_REGS_OFFSET, KERN_U_ADDR,
GET_THREAD_SIGNALS): Remove defines.
(x86_64_register_u_addr, kernel_u_size,
lin_thread_get_thread_signals): Remove prototypes.
(PTRACE_ARG3_TYPE, PTRACE_XFER_TYPE): Define to `long'.
[HAVE_LINK_H]: Don't include "solib.h".
[HAVE_LINK_H] (SVR4_SHARED_LIBS): Remove define.
* config/i386/tm-x86-64linux.h: Fix comments.
* Makefile.in (x86-64-linux-nat.o, x86_64-linux-tdep.o,
x86-64-tdep.o): Update dependencies.
2003-05-31 16:15:38 +08:00
|
|
|
|
/* Offset to struct sigcontext in ucontext, from <asm/ucontext.h>. */
|
2004-02-23 04:29:48 +08:00
|
|
|
|
#define AMD64_LINUX_UCONTEXT_SIGCONTEXT_OFFSET 40
|
2002-10-24 09:37:40 +08:00
|
|
|
|
|
Update i386 and amd64 ports for unwinder changes.
* amd64-tdep.c (amd64_frame_cache): Expect this_frame.
(amd64_frame_this_id, amd64_frame_prev_register): Update signature.
(amd64_frame_unwind): Use default_frame_sniffer.
(amd64_frame_sniffer): Delete.
(amd64_sigtramp_frame_cache): Expect this_frame.
(amd64_sigtramp_frame_this_id, amd64_sigtramp_frame_prev_register)
(amd64_sigtramp_frame_sniffer): Update signature.
(amd64_sigtramp_frame_unwind): Add amd64_sigtramp_frame_sniffer.
(amd64_frame_base_address): Expect this_frame.
(amd64_dummy_id): Renamed from amd64_unwind_dummy_id. Expect
this_frame.
(amd64_init_abi): Use set_gdbarch_dummy_id and
frame_unwind_append_unwinder.
* i386-tdep.c (i386_frame_cache): Expect this_frame.
(i386_frame_this_id, i386_frame_prev_register): Update signature.
(i386_frame_unwind): Use default_frame_sniffer.
(i386_frame_sniffer): Delete.
(i386_sigtramp_frame_cache): Expect this_frame.
(i386_sigtramp_frame_this_id, i386_sigtramp_frame_prev_register)
(i386_sigtramp_frame_sniffer): Update signature.
(i386_sigtramp_frame_unwind): Use i386_sigtramp_frame_sniffer.
(i386_frame_base_address): Update signature.
(i386_dummy_id): Rename from i386_unwind_dummy_id. Expect this_frame.
(i386_push_dummy_call): Update comment.
(i386_sigtramp_p, i386_svr4_sigtramp_p, i386_svr4_sigcontext_addr):
Expect this_frame.
(i386_gdbarch_init): Use set_gdbarch_dummy_id, dwarf2_append_unwinders,
and frame_unwind_append_unwinder.
* amd64-linux-tdep.c, amd64-sol2-tdep.c, amd64fbsd-tdep.c,
amd64nbsd-tdep.c, amd64obsd-tdep.c, i386-linux-tdep.c,
i386-nto-tdep.c, i386bsd-tdep.c, i386-sol2-tdep.c, i386obsd-tdep.c,
i386nbsd-tdep.c: Update for unwinder changes.
2008-05-01 05:19:45 +08:00
|
|
|
|
/* Assuming THIS_FRAME is a GNU/Linux sigtramp routine, return the
|
|
|
|
|
address of the associated sigcontext structure. */
|
2002-10-24 Michal Ludvig <mludvig@suse.cz>
* dwarf2cfi.c (struct context)
(struct context_reg): Moved to dwarf2cfi.h
(context_alloc, frame_state_alloc, context_cpy):
Made extern instead of static, removed prototypes.
* dwarf2cfi.h (struct context)
(struct context_reg): New, moved from dwarf2cfi.c
(context_alloc, frame_state_alloc, context_cpy):
New prototypes.
* x86-64-linux-tdep.c (x86_64_linux_sigtramp_saved_pc):
Changed from static to extern.
(LINUX_SIGINFO_SIZE, LINUX_SIGCONTEXT_PC_OFFSET)
(LINUX_SIGCONTEXT_FP_OFFSET)
(LINUX_UCONTEXT_SIGCONTEXT_OFFSET): Adjusted.
(x86_64_linux_in_sigtramp, x86_64_linux_frame_chain)
(x86_64_init_frame_pc, x86_64_init_extra_frame_info): New.
* x86-64-tdep.c (x86_64_gdbarch_init): Several
set_gdbarch_*() calls now use x86-64 specific functions
instead of DWARF2 CFI ones.
* x86-64-tdep.h (x86_64_linux_in_sigtramp)
(x86_64_linux_frame_chain, x86_64_init_frame_pc)
(x86_64_init_extra_frame_info): New prototypes.
2002-10-24 09:27:43 +08:00
|
|
|
|
|
* x86-64-tdep.h (x86_64_num_regs, x86_64_num_gregs): Remove
variable declarations.
(x86_64_register_number, x86_64_register_name): Remove prototypes.
(x86_64_linux_frame_saved_pc, x86_64_linux+saved_pc_after_call,
x86_64_linux_in_sigtramp, x86_64_linux_frame_chain,
x86_64_init_frame_pc, x86_64_init_frame_pc,
x86_64_function_has_prologue): Remove prototypes.
(X86_64_NUM_GREGS): New define.
(x86_64_supply_fxsave, x86_64_fill_fxsave): New prototypes.
* x86-64-tdep.c: Don't include "dwarf2cfi.h". Include
"dummy_frame.h", "frame.h", "frame-base.h", "frame-unwind.h".
(RAX_REGNUM, RDX_REGNUM, RDI_REGNUM, EFLAGS_REGNUM, ST0_REGNUM,
XMM1_REGNUM): Remove defines.
(X86_64_RAX_REGNUM, X86_64_RDX_REGNUM, X86_64_RDI_REGNUM,
X86_64_RBP_REGNUM, X86_64_RSP_REGNUM, X86_64_RIP_REGNUM,
X86_64_EFLAGS_REGNUM, X86_64_ST0_REGNUM, X86_64_XMM0_REGNUM,
X86_64_XMM1_REGNUM): New defines.
(struct x86_64_register_info): Renamed from `struct
register_info'. Remove `size' member.
(x86_64_register_info_table): Remove variable.
(x86_64_register_info): New variable.
(X86_64_NUM_REGS): New define.
(X86_64_NUM_GREGS): Remove define.
(x86_64_num_regs, x86_64_num_gregs): Remove variables.
(x86_64_dwarf2gdb_regno_map, x86_64_dwarf2gdb_regno_map_length):
Remove variables.
(x86_54_dwarf2_reg_to_regnum): Remove function.
(x86_64_dwarf_regmap, x86_64_dwarf_regmap_len): New variables.
(x86_64_dwarf_reg_to_regnum): New function.
(x86_64_register_name): Rewrite.
(x86_64_register_raw_size): Remove function.
(x86_64_register_byte_table): Remove variable.
(x86_64_register_byte): Remove function.
(x86_64_register_virtual_type): Remove function.
(x86_64_register_type): New function.
(x86_64_register_convertible, x86_64_register_convert_to_virtual,
x86_64_register_convert_to_raw): Remove functions.
(x86_64_push_return_address, x86_64_pop_frame): Remove functon.
(x86_64_use_struct_convention): Make static. Adjust for renamed
defines.
(x86_64_frame_init_saved_regs): Remove function.
(x86_64_push_arguments): Make static. Change to accept a regcache
as argument.
(x86_64_store_return_value, x86_64_extract_return_value): Make
static. Rewrite based on i386 counterparts.
(x86_64_push_dummy_call): New function.
(X86_64_NUM_SAVED_REGS): New define.
(x86_64_register_number): Remove function.
(x86_64_store_struct_return): Remove function.
(x86_64_frameless_function_invocation,
x86_64_function_has_prologue): Remove functions.
(PROLOG_BUFSIZE): Remove define.
(struct x86_64_frame_cache): New structure.
(x86_64_alloc_frame_cache, x86_64_analyze_prologue,
x86_64_frame_cache, x86_64_frame_this_id,
x86_64_frame_prev_register, x86_64_frame_p,
x86_64_sigtramp_frame_cache, x86_64_sigtramp_frame_this_id,
x86_64_sigtramp_frame_prev_register, x86_sigtramp_frame_p): New
functions.
(x86_64_frame_unwind, x86_64_sigtramp_frame_unwind): New
variables.
(x86_64_skip_prologue): Rewrite in terms of
x86_64_analyze_prologue.
(x86_64_frame_base_address): New function.
(x86_64_frame_base): New variable.
(x86_64_save_dummy_frame_tos, x86_64_unwind_dummy_id): Rewrite.
(x86_64_init_abi): Set register_type and push_dummy_call. Don't
set deprecated_fp_regnum, deprecated_register_size,
deprecated_register_bytes, register_raw_size, register_byte,
register_virtual_type, register_convertiable,
register_convert_to_virtual, convert_to_raw,
deprecated_get_saved_register, deprecated_target_read_fp,
deprecated_push_arguments, deprecated_push_return_address,
deprecated_pop_frame, deprecated_store_struct_return,
deprecated_frame_init_saved_regs, deprecated_frame_chain,
frameless_function_invocation, deprecated_frame_saved_pc,
deprecated_saved_pc_after_call, frame_num_args, pc_in_sigtramp,
dwarf2_build_frame_info, deprecated_init_extra_frame_info,
deprecated_init_frame_pc and virtual_frame_pointer. Call
frame_unwind_append_predicate to register x86_64_sigtramp_frame_p
and x86_64_frame_p. Call frame_base_set_default to register
x86_64_frame_base.
(I387_FISEG_REGNUM, I387_FOSEG_REGNUM): New defines.
(x86_64_supply_fxsave, x86_64_fill_fxsave): New functions.
(_initialize_x86_64_tdep): Remove function.
* x86-64-linux-tdep.c: Don't include "dwarf2cfi.h".
(LINUX_SIGINFO_SIZE, LINUX_UCONTEXT_SIGCONTEXT_OFFSET,
LINUX_SIGCONTEXT_PC_OFFSET, LINUX_SIGCONTEXT_FP_OFFSET): Don't
define.
(X86_64_LINUX_UCONTEXT_SIGCONTEXT_OFFSET): Define.
(x86_64_linux_sigcontext_addr): Rewrite.
(x86_64_linux_sigtramp_saved_pc, x86_64_linux_saved_pc_after_call,
x86_64_linux_frame_saved_pc): Remove functions.
(x86_64_linux_pc_in_sigtramp): Renamed from
x86_64_linux_in_sigtramp. Try harder to recognize a signal
trampoline.
(x86_64_linux_frame_chain, x86_64_init_frame_pc):
Remove_functions.
(x86_64_linux_init_abi): Set pc_in_sigtramp. Initialize
TDEP->sigcontext_addr, TDEP->sc_pc_offset and TDEP->sc_sp_offset.
* x86-64-linux-nat.c: Sync with i386-linux-tdep.c.
(x86_64_regmap): Rename to regmap.
(GETREGS_SUPPLIES): Use X86_64_NUM_GREGS instead of
x86_64_num_gregs.
(supply_gregset, fill_gregset): Likewise. Use regmap instead of
x86_64_regmap.
(x86_64_fxsave_offset): Remove function.
(supply_fpregset): Simply call x86_64_supply_fxsave.
(fill_fpregset): Simply call x86_64_fill_fxsave.
(fetch_inferior_registers, store_inferior_registers): Avoid
asignment in if-statement.
(LINUX_SYSCALL_LEN, LINUX_SYSCALL_REGNUM, SYS_Sigreturn,
SYS_rt_sigreturn, LINUX_SIGCONTEXT_EFLAGS_OFFSET,
LINUX_UCONTEXT_SIGCONTEXT_OFFSET): Remove defines.
(fetch_core_registers): Remove function.
(linux_elf_core_fns): Remove.
(offsetoff): Don't define.
(_initialize_x86_64_linux_nat, kernel_u_size): Remove functions.
* config/i386/x86-64linux.mt (TDEPFILES): Add i386-linux-tdep.o.
* config/i386/x86-64linux.mh (NATDEPFILES): Remove core-aout.o,
add core-regset.o.
* config/i386/nm-x86-64linux.h: Use NM_X86_64_LINUX_H for
protection against multiple includes instead of NM_X86_64_h. Add
various comments. Include "config/nm-linux.h". Don't include
<signal.h>.
(REGISTER_U_ADDR, KERNEL_U_SIZE, U_REGS_OFFSET, KERN_U_ADDR,
GET_THREAD_SIGNALS): Remove defines.
(x86_64_register_u_addr, kernel_u_size,
lin_thread_get_thread_signals): Remove prototypes.
(PTRACE_ARG3_TYPE, PTRACE_XFER_TYPE): Define to `long'.
[HAVE_LINK_H]: Don't include "solib.h".
[HAVE_LINK_H] (SVR4_SHARED_LIBS): Remove define.
* config/i386/tm-x86-64linux.h: Fix comments.
* Makefile.in (x86-64-linux-nat.o, x86_64-linux-tdep.o,
x86-64-tdep.o): Update dependencies.
2003-05-31 16:15:38 +08:00
|
|
|
|
static CORE_ADDR
|
Update i386 and amd64 ports for unwinder changes.
* amd64-tdep.c (amd64_frame_cache): Expect this_frame.
(amd64_frame_this_id, amd64_frame_prev_register): Update signature.
(amd64_frame_unwind): Use default_frame_sniffer.
(amd64_frame_sniffer): Delete.
(amd64_sigtramp_frame_cache): Expect this_frame.
(amd64_sigtramp_frame_this_id, amd64_sigtramp_frame_prev_register)
(amd64_sigtramp_frame_sniffer): Update signature.
(amd64_sigtramp_frame_unwind): Add amd64_sigtramp_frame_sniffer.
(amd64_frame_base_address): Expect this_frame.
(amd64_dummy_id): Renamed from amd64_unwind_dummy_id. Expect
this_frame.
(amd64_init_abi): Use set_gdbarch_dummy_id and
frame_unwind_append_unwinder.
* i386-tdep.c (i386_frame_cache): Expect this_frame.
(i386_frame_this_id, i386_frame_prev_register): Update signature.
(i386_frame_unwind): Use default_frame_sniffer.
(i386_frame_sniffer): Delete.
(i386_sigtramp_frame_cache): Expect this_frame.
(i386_sigtramp_frame_this_id, i386_sigtramp_frame_prev_register)
(i386_sigtramp_frame_sniffer): Update signature.
(i386_sigtramp_frame_unwind): Use i386_sigtramp_frame_sniffer.
(i386_frame_base_address): Update signature.
(i386_dummy_id): Rename from i386_unwind_dummy_id. Expect this_frame.
(i386_push_dummy_call): Update comment.
(i386_sigtramp_p, i386_svr4_sigtramp_p, i386_svr4_sigcontext_addr):
Expect this_frame.
(i386_gdbarch_init): Use set_gdbarch_dummy_id, dwarf2_append_unwinders,
and frame_unwind_append_unwinder.
* amd64-linux-tdep.c, amd64-sol2-tdep.c, amd64fbsd-tdep.c,
amd64nbsd-tdep.c, amd64obsd-tdep.c, i386-linux-tdep.c,
i386-nto-tdep.c, i386bsd-tdep.c, i386-sol2-tdep.c, i386obsd-tdep.c,
i386nbsd-tdep.c: Update for unwinder changes.
2008-05-01 05:19:45 +08:00
|
|
|
|
amd64_linux_sigcontext_addr (struct frame_info *this_frame)
|
2002-10-24 Michal Ludvig <mludvig@suse.cz>
* dwarf2cfi.c (struct context)
(struct context_reg): Moved to dwarf2cfi.h
(context_alloc, frame_state_alloc, context_cpy):
Made extern instead of static, removed prototypes.
* dwarf2cfi.h (struct context)
(struct context_reg): New, moved from dwarf2cfi.c
(context_alloc, frame_state_alloc, context_cpy):
New prototypes.
* x86-64-linux-tdep.c (x86_64_linux_sigtramp_saved_pc):
Changed from static to extern.
(LINUX_SIGINFO_SIZE, LINUX_SIGCONTEXT_PC_OFFSET)
(LINUX_SIGCONTEXT_FP_OFFSET)
(LINUX_UCONTEXT_SIGCONTEXT_OFFSET): Adjusted.
(x86_64_linux_in_sigtramp, x86_64_linux_frame_chain)
(x86_64_init_frame_pc, x86_64_init_extra_frame_info): New.
* x86-64-tdep.c (x86_64_gdbarch_init): Several
set_gdbarch_*() calls now use x86-64 specific functions
instead of DWARF2 CFI ones.
* x86-64-tdep.h (x86_64_linux_in_sigtramp)
(x86_64_linux_frame_chain, x86_64_init_frame_pc)
(x86_64_init_extra_frame_info): New prototypes.
2002-10-24 09:27:43 +08:00
|
|
|
|
{
|
* defs.h (extract_signed_integer, extract_unsigned_integer,
extract_long_unsigned_integer, store_signed_integer,
store_unsigned_integer): Add BYTE_ORDER parameter.
* findvar.c (extract_signed_integer, extract_unsigned_integer,
extract_long_unsigned_integer, store_signed_integer,
store_unsigned_integer): Add BYTE_ORDER parameter. Use it
instead of current_gdbarch.
* gdbcore.h (read_memory_integer, safe_read_memory_integer,
read_memory_unsigned_integer, write_memory_signed_integer,
write_memory_unsigned_integer): Add BYTE_ORDER parameter.
* corefile.c (struct captured_read_memory_integer_arguments): Add
BYTE_ORDER member.
(safe_read_memory_integer): Add BYTE_ORDER parameter. Store it into
struct captured_read_memory_integer_arguments.
(do_captured_read_memory_integer): Pass it to read_memory_integer.
(read_memory_integer): Add BYTE_ORDER parameter. Pass it to
extract_signed_integer.
(read_memory_unsigned_integer): Add BYTE_ORDER parameter. Pass it to
extract_unsigned_integer.
(write_memory_signed_integer): Add BYTE_ORDER parameter. Pass it
to store_signed_integer.
(write_memory_unsigned_integer): Add BYTE_ORDER parameter. Pass it
to store_unsigned_integer.
* target.h (get_target_memory_unsigned): Add BYTE_ORDER parameter.
* target.c (get_target_memory_unsigned): Add BYTE_ORDER parameter.
Pass it to extract_unsigned_integer.
Update calls to extract_signed_integer, extract_unsigned_integer,
extract_long_unsigned_integer, store_signed_integer,
store_unsigned_integer, read_memory_integer,
read_memory_unsigned_integer, safe_read_memory_integer,
write_memory_signed_integer, write_memory_unsigned_integer, and
get_target_memory_unsigned to pass byte order:
* ada-lang.c (ada_value_binop): Update.
* ada-valprint.c (char_at): Update.
* alpha-osf1-tdep.c (alpha_osf1_sigcontext_addr): Update.
* alpha-tdep.c (alpha_lds, alpha_sts, alpha_push_dummy_call,
alpha_extract_return_value, alpha_read_insn,
alpha_get_longjmp_target): Update.
* amd64-linux-tdep.c (amd64_linux_sigcontext_addr): Update.
* amd64obsd-tdep.c (amd64obsd_supply_uthread,
amd64obsd_collect_uthread, amd64obsd_trapframe_cache): Update.
* amd64-tdep.c (amd64_push_dummy_call, amd64_analyze_prologue,
amd64_frame_cache, amd64_sigtramp_frame_cache, fixup_riprel,
amd64_displaced_step_fixup): Update.
* arm-linux-tdep.c (arm_linux_sigreturn_init,
arm_linux_rt_sigreturn_init, arm_linux_supply_gregset): Update.
* arm-tdep.c (thumb_analyze_prologue, arm_skip_prologue,
arm_scan_prologue, arm_push_dummy_call, thumb_get_next_pc,
arm_get_next_pc, arm_extract_return_value, arm_store_return_value,
arm_return_value): Update.
* arm-wince-tdep.c (arm_pe_skip_trampoline_code): Update.
* auxv.c (default_auxv_parse): Update.
* avr-tdep.c (avr_address_to_pointer, avr_pointer_to_address,
avr_scan_prologue, avr_extract_return_value,
avr_frame_prev_register, avr_push_dummy_call): Update.
* bsd-uthread.c (bsd_uthread_check_magic, bsd_uthread_lookup_offset,
bsd_uthread_wait, bsd_uthread_thread_alive,
bsd_uthread_extra_thread_info): Update.
* c-lang.c (c_printstr, print_wchar): Update.
* cp-valprint.c (cp_print_class_member): Update.
* cris-tdep.c (cris_sigcontext_addr, cris_sigtramp_frame_unwind_cache,
cris_push_dummy_call, cris_scan_prologue, cris_store_return_value,
cris_extract_return_value, find_step_target, dip_prefix,
sixteen_bit_offset_branch_op, none_reg_mode_jump_op,
move_mem_to_reg_movem_op, get_data_from_address): Update.
* dwarf2expr.c (dwarf2_read_address, execute_stack_op): Update.
* dwarf2-frame.c (execute_cfa_program): Update.
* dwarf2loc.c (find_location_expression): Update.
* dwarf2read.c (dwarf2_const_value): Update.
* expprint.c (print_subexp_standard): Update.
* findvar.c (unsigned_pointer_to_address, signed_pointer_to_address,
unsigned_address_to_pointer, address_to_signed_pointer,
read_var_value): Update.
* frame.c (frame_unwind_register_signed,
frame_unwind_register_unsigned, get_frame_memory_signed,
get_frame_memory_unsigned): Update.
* frame-unwind.c (frame_unwind_got_constant): Update.
* frv-linux-tdep.c (frv_linux_pc_in_sigtramp,
frv_linux_sigcontext_reg_addr, frv_linux_sigtramp_frame_cache):
Update.
* frv-tdep.c (frv_analyze_prologue, frv_skip_main_prologue,
frv_extract_return_value, find_func_descr,
frv_convert_from_func_ptr_addr, frv_push_dummy_call): Update.
* f-valprint.c (f_val_print): Update.
* gnu-v3-abi.c (gnuv3_decode_method_ptr, gnuv3_make_method_ptr):
Update.
* h8300-tdep.c (h8300_is_argument_spill, h8300_analyze_prologue,
h8300_push_dummy_call, h8300_extract_return_value,
h8300h_extract_return_value, h8300_store_return_value,
h8300h_store_return_value): Update.
* hppabsd-tdep.c (hppabsd_find_global_pointer): Update.
* hppa-hpux-nat.c (hppa_hpux_fetch_register, hppa_hpux_store_register):
Update.
* hppa-hpux-tdep.c (hppa32_hpux_in_solib_call_trampoline,
hppa64_hpux_in_solib_call_trampoline,
hppa_hpux_in_solib_return_trampoline, hppa_hpux_skip_trampoline_code,
hppa_hpux_sigtramp_frame_unwind_cache,
hppa_hpux_sigtramp_unwind_sniffer, hppa32_hpux_find_global_pointer,
hppa64_hpux_find_global_pointer, hppa_hpux_search_pattern,
hppa32_hpux_search_dummy_call_sequence,
hppa64_hpux_search_dummy_call_sequence, hppa_hpux_supply_save_state,
hppa_hpux_unwind_adjust_stub): Update.
* hppa-linux-tdep.c (insns_match_pattern,
hppa_linux_find_global_pointer): Update.
* hppa-tdep.c (hppa_in_function_epilogue_p, hppa32_push_dummy_call,
hppa64_convert_code_addr_to_fptr, hppa64_push_dummy_call,
skip_prologue_hard_way, hppa_frame_cache, hppa_fallback_frame_cache,
hppa_pseudo_register_read, hppa_frame_prev_register_helper,
hppa_match_insns): Update.
* hpux-thread.c (hpux_thread_fetch_registers): Update.
* i386-tdep.c (i386bsd_sigcontext_addr): Update.
* i386-cygwin-tdep.c (core_process_module_section): Update.
* i386-darwin-nat.c (i386_darwin_sstep_at_sigreturn,
amd64_darwin_sstep_at_sigreturn): Update.
* i386-darwin-tdep.c (i386_darwin_sigcontext_addr,
amd64_darwin_sigcontext_addr): Likewise.
* i386-linux-nat.c (i386_linux_sigcontext_addr): Update.
* i386nbsd-tdep.c (i386nbsd_sigtramp_cache_init): Update.
* i386-nto-tdep.c (i386nto_sigcontext_addr): Update.
* i386obsd-nat.c (i386obsd_supply_pcb): Update.
* i386obsd-tdep.c (i386obsd_supply_uthread, i386obsd_collect_uthread,
i386obsd_trapframe_cache): Update.
* i386-tdep.c (i386_displaced_step_fixup, i386_follow_jump,
i386_analyze_frame_setup, i386_analyze_prologue,
i386_skip_main_prologue, i386_frame_cache, i386_sigtramp_frame_cache,
i386_get_longjmp_target, i386_push_dummy_call,
i386_pe_skip_trampoline_code, i386_svr4_sigcontext_addr,
i386_fetch_pointer_argument): Update.
* i387-tdep.c (i387_supply_fsave): Update.
* ia64-linux-tdep.c (ia64_linux_sigcontext_register_address): Update.
* ia64-tdep.c (ia64_pseudo_register_read, ia64_pseudo_register_write,
examine_prologue, ia64_frame_cache, ia64_frame_prev_register,
ia64_sigtramp_frame_cache, ia64_sigtramp_frame_prev_register,
ia64_access_reg, ia64_access_rse_reg, ia64_libunwind_frame_this_id,
ia64_libunwind_frame_prev_register,
ia64_libunwind_sigtramp_frame_this_id,
ia64_libunwind_sigtramp_frame_prev_register, ia64_find_global_pointer,
find_extant_func_descr, find_func_descr,
ia64_convert_from_func_ptr_addr, ia64_push_dummy_call, ia64_dummy_id,
ia64_unwind_pc): Update.
* iq2000-tdep.c (iq2000_pointer_to_address, iq2000_address_to_pointer,
iq2000_scan_prologue, iq2000_extract_return_value,
iq2000_push_dummy_call): Update.
* irix5nat.c (fill_gregset): Update.
* jv-lang.c (evaluate_subexp_java): Update.
* jv-valprint.c (java_value_print): Update.
* lm32-tdep.c (lm32_analyze_prologue, lm32_push_dummy_call,
lm32_extract_return_value, lm32_store_return_value): Update.
* m32c-tdep.c (m32c_push_dummy_call, m32c_return_value,
m32c_skip_trampoline_code, m32c_m16c_address_to_pointer,
m32c_m16c_pointer_to_address): Update.
* m32r-tdep.c (m32r_store_return_value, decode_prologue,
m32r_skip_prologue, m32r_push_dummy_call, m32r_extract_return_value):
Update.
* m68hc11-tdep.c (m68hc11_pseudo_register_read,
m68hc11_pseudo_register_write, m68hc11_analyze_instruction,
m68hc11_push_dummy_call): Update.
* m68linux-tdep.c (m68k_linux_pc_in_sigtramp,
m68k_linux_get_sigtramp_info, m68k_linux_sigtramp_frame_cache):
Update.
* m68k-tdep.c (m68k_push_dummy_call, m68k_analyze_frame_setup,
m68k_analyze_register_saves, m68k_analyze_prologue, m68k_frame_cache,
m68k_get_longjmp_target): Update.
* m88k-tdep.c (m88k_fetch_instruction): Update.
* mep-tdep.c (mep_pseudo_cr32_read, mep_pseudo_csr_write,
mep_pseudo_cr32_write, mep_get_insn, mep_push_dummy_call): Update.
* mi/mi-main.c (mi_cmd_data_write_memory): Update.
* mips-linux-tdep.c (mips_linux_get_longjmp_target, supply_32bit_reg,
mips64_linux_get_longjmp_target, mips64_fill_gregset,
mips64_fill_fpregset, mips_linux_in_dynsym_stub): Update.
* mipsnbdsd-tdep.c (mipsnbsd_get_longjmp_target): Update.
* mips-tdep.c (mips_fetch_instruction, fetch_mips_16,
mips_eabi_push_dummy_call, mips_n32n64_push_dummy_call,
mips_o32_push_dummy_call, mips_o64_push_dummy_call,
mips_single_step_through_delay, mips_skip_pic_trampoline_code,
mips_integer_to_address): Update.
* mn10300-tdep.c (mn10300_analyze_prologue, mn10300_push_dummy_call):
Update.
* monitor.c (monitor_supply_register, monitor_write_memory,
monitor_read_memory_single): Update.
* moxie-tdep.c (moxie_store_return_value, moxie_extract_return_value,
moxie_analyze_prologue): Update.
* mt-tdep.c (mt_return_value, mt_skip_prologue, mt_select_coprocessor,
mt_pseudo_register_read, mt_pseudo_register_write, mt_registers_info,
mt_push_dummy_call): Update.
* objc-lang.c (read_objc_method, read_objc_methlist_nmethods,
read_objc_methlist_method, read_objc_object, read_objc_super,
read_objc_class, find_implementation_from_class): Update.
* ppc64-linux-tdep.c (ppc64_desc_entry_point,
ppc64_linux_convert_from_func_ptr_addr, ppc_linux_sigtramp_cache):
Update.
* ppcobsd-tdep.c (ppcobsd_sigtramp_frame_sniffer,
ppcobsd_sigtramp_frame_cache): Update.
* ppc-sysv-tdep.c (ppc_sysv_abi_push_dummy_call,
do_ppc_sysv_return_value, ppc64_sysv_abi_push_dummy_call,
ppc64_sysv_abi_return_value): Update.
* ppc-linux-nat.c (ppc_linux_auxv_parse): Update.
* procfs.c (procfs_auxv_parse): Update.
* p-valprint.c (pascal_val_print): Update.
* regcache.c (regcache_raw_read_signed, regcache_raw_read_unsigned,
regcache_raw_write_signed, regcache_raw_write_unsigned,
regcache_cooked_read_signed, regcache_cooked_read_unsigned,
regcache_cooked_write_signed, regcache_cooked_write_unsigned): Update.
* remote-m32r-sdi.c (m32r_fetch_register): Update.
* remote-mips.c (mips_wait, mips_fetch_registers, mips_xfer_memory):
Update.
* rs6000-aix-tdep.c (rs6000_push_dummy_call, rs6000_return_value,
rs6000_convert_from_func_ptr_addr, branch_dest,
rs6000_software_single_step): Update.
* rs6000-tdep.c (rs6000_in_function_epilogue_p,
ppc_displaced_step_fixup, ppc_deal_with_atomic_sequence,
bl_to_blrl_insn_p, rs6000_fetch_instruction, skip_prologue,
rs6000_skip_main_prologue, rs6000_skip_trampoline_code,
rs6000_frame_cache): Update.
* s390-tdep.c (s390_pseudo_register_read, s390_pseudo_register_write,
s390x_pseudo_register_read, s390x_pseudo_register_write, s390_load,
s390_backchain_frame_unwind_cache, s390_sigtramp_frame_unwind_cache,
extend_simple_arg, s390_push_dummy_call, s390_return_value): Update.
* scm-exp.c (scm_lreadr): Update.
* scm-lang.c (scm_get_field, scm_unpack): Update.
* scm-valprint.c (scm_val_print): Update.
* score-tdep.c (score_breakpoint_from_pc, score_push_dummy_call,
score_fetch_inst): Update.
* sh64-tdep.c (look_for_args_moves, sh64_skip_prologue_hard_way,
sh64_analyze_prologue, sh64_push_dummy_call, sh64_extract_return_value,
sh64_pseudo_register_read, sh64_pseudo_register_write,
sh64_frame_prev_register): Update:
* sh-tdep.c (sh_analyze_prologue, sh_push_dummy_call_fpu,
sh_push_dummy_call_nofpu, sh_extract_return_value_nofpu,
sh_store_return_value_nofpu, sh_in_function_epilogue_p): Update.
* solib-darwin.c (darwin_load_image_infos): Update.
* solib-frv.c (fetch_loadmap, lm_base, frv_current_sos, enable_break2,
find_canonical_descriptor_in_load_object): Update.
* solib-irix.c (extract_mips_address, fetch_lm_info, irix_current_sos,
irix_open_symbol_file_object): Update.
* solib-som.c (som_solib_create_inferior_hook, link_map_start,
som_current_sos, som_open_symbol_file_object): Update.
* solib-sunos.c (SOLIB_EXTRACT_ADDRESS, LM_ADDR, LM_NEXT, LM_NAME):
Update.
* solib-svr4.c (read_program_header, scan_dyntag_auxv,
solib_svr4_r_ldsomap): Update.
* sparc64-linux-tdep.c (sparc64_linux_step_trap): Update.
* sparc64obsd-tdep.c (sparc64obsd_supply_uthread,
sparc64obsd_collect_uthread): Update.
* sparc64-tdep.c (sparc64_pseudo_register_read,
sparc64_pseudo_register_write, sparc64_supply_gregset,
sparc64_collect_gregset): Update.
* sparc-linux-tdep.c (sparc32_linux_step_trap): Update.
* sparcobsd-tdep.c (sparc32obsd_supply_uthread,
sparc32obsd_collect_uthread): Update.
* sparc-tdep.c (sparc_fetch_wcookie, sparc32_push_dummy_code,
sparc32_store_arguments, sparc32_return_value, sparc_supply_rwindow,
sparc_collect_rwindow): Update.
* spu-linux-nat.c (parse_spufs_run): Update.
* spu-tdep.c (spu_pseudo_register_read_spu,
spu_pseudo_register_write_spu, spu_pointer_to_address,
spu_analyze_prologue, spu_in_function_epilogue_p,
spu_frame_unwind_cache, spu_push_dummy_call, spu_software_single_step,
spu_get_longjmp_target, spu_get_overlay_table, spu_overlay_update_osect,
info_spu_signal_command, info_spu_mailbox_list, info_spu_dma_cmdlist,
info_spu_dma_command, info_spu_proxydma_command): Update.
* stack.c (print_frame_nameless_args, frame_info): Update.
* symfile.c (read_target_long_array, simple_read_overlay_table,
simple_read_overlay_region_table): Update.
* target.c (debug_print_register): Update.
* tramp-frame.c (tramp_frame_start): Update.
* v850-tdep.c (v850_analyze_prologue, v850_push_dummy_call,
v850_extract_return_value, v850_store_return_value,
* valarith.c (value_binop, value_bit_index): Update.
* valops.c (value_cast): Update.
* valprint.c (val_print_type_code_int, val_print_string,
read_string): Update.
* value.c (unpack_long, unpack_double, unpack_field_as_long,
modify_field, pack_long): Update.
* vax-tdep.c (vax_store_arguments, vax_push_dummy_call,
vax_skip_prologue): Update.
* xstormy16-tdep.c (xstormy16_push_dummy_call,
xstormy16_analyze_prologue, xstormy16_in_function_epilogue_p,
xstormy16_resolve_jmp_table_entry, xstormy16_find_jmp_table_entry,
xstormy16_pointer_to_address, xstormy16_address_to_pointer): Update.
* xtensa-tdep.c (extract_call_winsize, xtensa_pseudo_register_read,
xtensa_pseudo_register_write, xtensa_frame_cache,
xtensa_push_dummy_call, call0_track_op, call0_frame_cache): Update.
* dfp.h (decimal_to_string, decimal_from_string, decimal_from_integral,
decimal_from_floating, decimal_to_doublest, decimal_is_zero): Add
BYTE_ORDER parameter.
(decimal_binop): Add BYTE_ORDER_X, BYTE_ORDER_Y, and BYTE_ORDER_RESULT
parameters.
(decimal_compare): Add BYTE_ORDER_X and BYTE_ORDER_Y parameters.
(decimal_convert): Add BYTE_ORDER_FROM and BYTE_ORDER_TO parameters.
* dfp.c (match_endianness): Add BYTE_ORDER parameter. Use it
instead of current_gdbarch.
(decimal_to_string, decimal_from_integral, decimal_from_floating,
decimal_to_doublest, decimal_is_zero): Add BYTE_ORDER parameter.
Pass it to match_endianness.
(decimal_binop): Add BYTE_ORDER_X, BYTE_ORDER_Y, and BYTE_ORDER_RESULT
parameters. Pass them to match_endianness.
(decimal_compare): Add BYTE_ORDER_X and BYTE_ORDER_Y parameters.
Pass them to match_endianness.
(decimal_convert): Add BYTE_ORDER_FROM and BYTE_ORDER_TO parameters.
Pass them to match_endianness.
* valarith.c (value_args_as_decimal): Add BYTE_ORDER_X and
BYTE_ORDER_Y output parameters.
(value_binop): Update call to value_args_as_decimal.
Update calls to decimal_to_string, decimal_from_string,
decimal_from_integral, decimal_from_floating, decimal_to_doublest,
decimal_is_zero, decimal_binop, decimal_compare and decimal_convert
to pass/receive byte order:
* c-exp.y (parse_number): Update.
* printcmd.c (printf_command): Update.
* valarith.c (value_args_as_decimal, value_binop, value_logical_not,
value_equal, value_less): Update.
* valops.c (value_cast, value_one): Update.
* valprint.c (print_decimal_floating): Update.
* value.c (unpack_long, unpack_double): Update.
* python/python-value.c (valpy_nonzero): Update.
* ada-valprint.c (char_at): Add BYTE_ORDER parameter.
(printstr): Update calls to char_at.
(ada_val_print_array): Likewise.
* valprint.c (read_string): Add BYTE_ORDER parameter.
(val_print_string): Update call to read_string.
* c-lang.c (c_get_string): Likewise.
* charset.h (target_wide_charset): Add BYTE_ORDER parameter.
* charset.c (target_wide_charset): Add BYTE_ORDER parameter.
Use it instead of current_gdbarch.
* printcmd.c (printf_command): Update calls to target_wide_charset.
* c-lang.c (charset_for_string_type): Add BYTE_ORDER parameter.
Pass to target_wide_charset. Use it instead of current_gdbarch.
(classify_type): Add BYTE_ORDER parameter. Pass to
charset_for_string_type. Allow NULL encoding pointer.
(print_wchar): Add BYTE_ORDER parameter.
(c_emit_char): Update calls to classify_type and print_wchar.
(c_printchar, c_printstr): Likewise.
* gdbarch.sh (in_solib_return_trampoline): Convert to type "m".
* gdbarch.c, gdbarch.h: Regenerate.
* arch-utils.h (generic_in_solib_return_trampoline): Add GDBARCH
parameter.
* arch-utils.c (generic_in_solib_return_trampoline): Likewise.
* hppa-hpux-tdep.c (hppa_hpux_in_solib_return_trampoline): Likewise.
* rs6000-tdep.c (rs6000_in_solib_return_trampoline): Likewise.
(rs6000_skip_trampoline_code): Update call.
* alpha-tdep.h (struct gdbarch_tdep): Add GDBARCH parameter to
dynamic_sigtramp_offset and pc_in_sigtramp callbacks.
(alpha_read_insn): Add GDBARCH parameter.
* alpha-tdep.c (alpha_lds, alpha_sts): Add GDBARCH parameter.
(alpha_register_to_value): Pass architecture to alpha_sts.
(alpha_extract_return_value): Likewise.
(alpha_value_to_register): Pass architecture to alpha_lds.
(alpha_store_return_value): Likewise.
(alpha_read_insn): Add GDBARCH parameter.
(alpha_skip_prologue): Pass architecture to alpha_read_insn.
(alpha_heuristic_proc_start): Likewise.
(alpha_heuristic_frame_unwind_cache): Likewise.
(alpha_next_pc): Likewise.
(alpha_sigtramp_frame_this_id): Pass architecture to
tdep->dynamic_sigtramp_offset callback.
(alpha_sigtramp_frame_sniffer): Pass architecture to
tdep->pc_in_sigtramp callback.
* alphafbsd-tdep.c (alphafbsd_pc_in_sigtramp): Add GDBARCH parameter.
(alphafbsd_sigtramp_offset): Likewise.
* alpha-linux-tdep.c (alpha_linux_sigtramp_offset_1): Add GDBARCH
parameter. Pass to alpha_read_insn.
(alpha_linux_sigtramp_offset): Add GDBARCH parameter. Pass to
alpha_linux_sigtramp_offset_1.
(alpha_linux_pc_in_sigtramp): Add GDBARCH parameter. Pass to
alpha_linux_sigtramp_offset.
(alpha_linux_sigcontext_addr): Pass architecture to alpha_read_insn
and alpha_linux_sigtramp_offset.
* alphanbsd-tdep.c (alphanbsd_sigtramp_offset): Add GDBARCH parameter.
(alphanbsd_pc_in_sigtramp): Add GDBARCH parameter. Pass to
alphanbsd_sigtramp_offset.
* alphaobsd-tdep.c (alphaobsd_sigtramp_offset): Add GDBARCH parameter.
(alphaobsd_pc_in_sigtramp): Add GDBARCH parameter. Pass to
alpha_read_insn.
(alphaobsd_sigcontext_addr): Pass architecture to
alphaobsd_sigtramp_offset.
* alpha-osf1-tdep.c (alpha_osf1_pc_in_sigtramp): Add GDBARCH
parameter.
* amd64-tdep.c (amd64_analyze_prologue): Add GDBARCH parameter.
(amd64_skip_prologue): Pass architecture to amd64_analyze_prologue.
(amd64_frame_cache): Likewise.
* arm-tdep.c (SWAP_SHORT, SWAP_INT): Remove.
(thumb_analyze_prologue, arm_skip_prologue, arm_scan_prologue,
thumb_get_next_pc, arm_get_next_pc): Do not use SWAP_ macros.
* arm-wince-tdep.c: Include "frame.h".
* avr-tdep.c (EXTRACT_INSN): Remove.
(avr_scan_prologue): Add GDBARCH argument, inline EXTRACT_INSN.
(avr_skip_prologue): Pass architecture to avr_scan_prologue.
(avr_frame_unwind_cache): Likewise.
* cris-tdep.c (struct instruction_environment): Add BYTE_ORDER member.
(find_step_target): Initialize it.
(get_data_from_address): Add BYTE_ORDER parameter.
(bdap_prefix): Pass byte order to get_data_from_address.
(handle_prefix_assign_mode_for_aritm_op): Likewise.
(three_operand_add_sub_cmp_and_or_op): Likewise.
(handle_inc_and_index_mode_for_aritm_op): Likewise.
* frv-linux-tdep.c (frv_linux_pc_in_sigtramp): Add GDBARCH parameter.
(frv_linux_sigcontext_reg_addr): Pass architecture to
frv_linux_pc_in_sigtramp.
(frv_linux_sigtramp_frame_sniffer): Likewise.
* h8300-tdep.c (h8300_is_argument_spill): Add GDBARCH parameter.
(h8300_analyze_prologue): Add GDBARCH parameter. Pass to
h8300_is_argument_spill.
(h8300_frame_cache, h8300_skip_prologue): Pass architecture
to h8300_analyze_prologue.
* hppa-tdep.h (struct gdbarch_tdep): Add GDBARCH parameter to
in_solib_call_trampoline callback.
(hppa_in_solib_call_trampoline): Add GDBARCH parameter.
* hppa-tdep.c (hppa64_convert_code_addr_to_fptr): Add GDBARCH
parameter.
(hppa64_push_dummy_call): Pass architecture to
hppa64_convert_code_addr_to_fptr.
(hppa_match_insns): Add GDBARCH parameter.
(hppa_match_insns_relaxed): Add GDBARCH parameter. Pass to
hppa_match_insns.
(hppa_skip_trampoline_code): Pass architecture to hppa_match_insns.
(hppa_in_solib_call_trampoline): Add GDBARCH parameter. Pass to
hppa_match_insns_relaxed.
(hppa_stub_unwind_sniffer): Pass architecture to
tdep->in_solib_call_trampoline callback.
* hppa-hpux-tdep.c (hppa_hpux_search_pattern): Add GDBARCH parameter.
(hppa32_hpux_search_dummy_call_sequence): Pass architecture to
hppa_hpux_search_pattern.
* hppa-linux-tdep.c (insns_match_pattern): Add GDBARCH parameter.
(hppa_linux_sigtramp_find_sigcontext): Add GDBARCH parameter.
Pass to insns_match_pattern.
(hppa_linux_sigtramp_frame_unwind_cache): Pass architecture to
hppa_linux_sigtramp_find_sigcontext.
(hppa_linux_sigtramp_frame_sniffer): Likewise.
(hppa32_hpux_in_solib_call_trampoline): Add GDBARCH parameter.
(hppa64_hpux_in_solib_call_trampoline): Likewise.
* i386-tdep.c (i386_follow_jump): Add GDBARCH parameter.
(i386_analyze_frame_setup): Add GDBARCH parameter.
(i386_analyze_prologue): Add GDBARCH parameter. Pass to
i386_follow_jump and i386_analyze_frame_setup.
(i386_skip_prologue): Pass architecture to i386_analyze_prologue
and i386_follow_jump.
(i386_frame_cache): Pass architecture to i386_analyze_prologue.
(i386_pe_skip_trampoline_code): Add FRAME parameter.
* i386-tdep.h (i386_pe_skip_trampoline_code): Add FRAME parameter.
* i386-cygwin-tdep.c (i386_cygwin_skip_trampoline_code): Pass
frame to i386_pe_skip_trampoline_code.
* ia64-tdep.h (struct gdbarch_tdep): Add GDBARCH parameter
to sigcontext_register_address callback.
* ia64-tdep.c (ia64_find_global_pointer): Add GDBARCH parameter.
(ia64_find_unwind_table): Pass architecture to
ia64_find_global_pointer.
(find_extant_func_descr): Add GDBARCH parameter.
(find_func_descr): Pass architecture to find_extant_func_descr
and ia64_find_global_pointer.
(ia64_sigtramp_frame_init_saved_regs): Pass architecture to
tdep->sigcontext_register_address callback.
* ia64-linux-tdep.c (ia64_linux_sigcontext_register_address): Add
GDBARCH parameter.
* iq2000-tdep.c (iq2000_scan_prologue): Add GDBARCH parameter.
(iq2000_frame_cache): Pass architecture to iq2000_scan_prologue.
* lm32-tdep.c (lm32_analyze_prologue): Add GDBARCH parameter.
(lm32_skip_prologue, lm32_frame_cache): Pass architecture to
lm32_analyze_prologue.
* m32r-tdep.c (decode_prologue): Add GDBARCH parameter.
(m32r_skip_prologue): Pass architecture to decode_prologue.
* m68hc11-tdep.c (m68hc11_analyze_instruction): Add GDBARCH parameter.
(m68hc11_scan_prologue): Pass architecture to
m68hc11_analyze_instruction.
* m68k-tdep.c (m68k_analyze_frame_setup): Add GDBARCH parameter.
(m68k_analyze_prologue): Pass architecture to
m68k_analyze_frame_setup.
* m88k-tdep.c (m88k_fetch_instruction): Add BYTE_ORDER parameter.
(m88k_analyze_prologue): Add GDBARCH parameter. Pass byte order
to m88k_fetch_instruction.
(m88k_skip_prologue): Pass architecture to m88k_analyze_prologue.
(m88k_frame_cache): Likewise.
* mep-tdep.c (mep_get_insn): Add GDBARCH parameter.
(mep_analyze_prologue): Pass architecture to mep_get_insn.
* mips-tdep.c (mips_fetch_instruction): Add GDBARCH parameter.
(mips32_next_pc): Pass architecture to mips_fetch_instruction.
(deal_with_atomic_sequence): Likewise.
(unpack_mips16): Add GDBARCH parameter, pass to mips_fetch_instruction.
(mips16_scan_prologue): Likewise.
(mips32_scan_prologue): Likewise.
(mips16_in_function_epilogue_p): Likewise.
(mips32_in_function_epilogue_p): Likewise.
(mips_about_to_return): Likewise.
(mips_insn16_frame_cache): Pass architecture to mips16_scan_prologue.
(mips_insn32_frame_cache): Pass architecture to mips32_scan_prologue.
(mips_skip_prologue): Pass architecture to mips16_scan_prologue
and mips32_scan_prologue.
(mips_in_function_epilogue_p): Pass architecture to
mips16_in_function_epilogue_p and
mips32_in_function_epilogue_p.
(heuristic_proc_start): Pass architecture to mips_fetch_instruction
and mips_about_to_return.
(mips_skip_mips16_trampoline_code): Pass architecture to
mips_fetch_instruction.
(fetch_mips_16): Add GDBARCH parameter.
(mips16_next_pc): Pass architecture to fetch_mips_16.
(extended_mips16_next_pc): Pass architecture to unpack_mips16 and
fetch_mips_16.
* objc-lang.c (read_objc_method, read_objc_methlist_nmethods,
read_objc_methlist_method, read_objc_object, read_objc_super,
read_objc_class): Add GDBARCH parameter.
(find_implementation_from_class): Add GDBARCH parameter, pass
to read_objc_class, read_objc_methlist_nmethods, and
read_objc_methlist_method.
(find_implementation): Add GDBARCH parameter, pass to
read_objc_object and find_implementation_from_class.
(resolve_msgsend, resolve_msgsend_stret): Pass architecture
to find_implementation.
(resolve_msgsend_super, resolve_msgsend_super_stret): Pass
architecture to read_objc_super and find_implementation_from_class.
* ppc64-linux-tdep.c (ppc64_desc_entry_point): Add GDBARCH parameter.
(ppc64_standard_linkage1_target, ppc64_standard_linkage2_target,
ppc64_standard_linkage3_target): Pass architecture to
ppc64_desc_entry_point.
* rs6000-tdep.c (bl_to_blrl_insn_p): Add BYTE_ORDER parameter.
(skip_prologue): Pass byte order to bl_to_blrl_insn_p.
(rs6000_fetch_instruction): Add GDBARCH parameter.
(rs6000_skip_stack_check): Add GDBARCH parameter, pass to
rs6000_fetch_instruction.
(skip_prologue): Pass architecture to rs6000_fetch_instruction.
* remote-mips.c (mips_store_word): Return old_contents as host
integer value instead of target bytes.
* s390-tdep.c (struct s390_prologue_data): Add BYTE_ORDER member.
(s390_analyze_prologue): Initialize it.
(extend_simple_arg): Add GDBARCH parameter.
(s390_push_dummy_call): Pass architecture to extend_simple_arg.
* scm-lang.c (scm_get_field): Add BYTE_ORDER parameter.
* scm-lang.h (scm_get_field): Add BYTE_ORDER parameter.
(SCM_CAR, SCM_CDR): Pass SCM_BYTE_ORDER to scm_get_field.
* scm-valprint.c (scm_scmval_print): Likewise.
(scm_scmlist_print, scm_ipruk, scm_scmval_print): Define
SCM_BYTE_ORDER.
* sh64-tdep.c (look_for_args_moves): Add GDBARCH parameter.
(sh64_skip_prologue_hard_way): Add GDBARCH parameter, pass to
look_for_args_moves.
(sh64_skip_prologue): Pass architecture to
sh64_skip_prologue_hard_way.
* sh-tdep.c (sh_analyze_prologue): Add GDBARCH parameter.
(sh_skip_prologue): Pass architecture to sh_analyze_prologue.
(sh_frame_cache): Likewise.
* solib-irix.c (extract_mips_address): Add GDBARCH parameter.
(fetch_lm_info, irix_current_sos, irix_open_symbol_file_object):
Pass architecture to extract_mips_address.
* sparc-tdep.h (sparc_fetch_wcookie): Add GDBARCH parameter.
* sparc-tdep.c (sparc_fetch_wcookie): Add GDBARCH parameter.
(sparc_supply_rwindow, sparc_collect_rwindow): Pass architecture
to sparc_fetch_wcookie.
(sparc32_frame_prev_register): Likewise.
* sparc64-tdep.c (sparc64_frame_prev_register): Likewise.
* sparc32nbsd-tdep.c (sparc32nbsd_sigcontext_saved_regs): Likewise.
* sparc64nbsd-tdep.c (sparc64nbsd_sigcontext_saved_regs): Likewise.
* spu-tdep.c (spu_analyze_prologue): Add GDBARCH parameter.
(spu_skip_prologue): Pass architecture to spu_analyze_prologue.
(spu_virtual_frame_pointer): Likewise.
(spu_frame_unwind_cache): Likewise.
(info_spu_mailbox_list): Add BYTE_ORER parameter.
(info_spu_mailbox_command): Pass byte order to info_spu_mailbox_list.
(info_spu_dma_cmdlist): Add BYTE_ORER parameter.
(info_spu_dma_command, info_spu_proxydma_command): Pass byte order
to info_spu_dma_cmdlist.
* symfile.c (read_target_long_array): Add GDBARCH parameter.
(simple_read_overlay_table, simple_read_overlay_region_table,
simple_overlay_update_1): Pass architecture to read_target_long_array.
* v850-tdep.c (v850_analyze_prologue): Add GDBARCH parameter.
(v850_frame_cache): Pass architecture to v850_analyze_prologue.
* xstormy16-tdep.c (xstormy16_analyze_prologue): Add GDBARCH
parameter.
(xstormy16_skip_prologue, xstormy16_frame_cache): Pass architecture
to xstormy16_analyze_prologue.
(xstormy16_resolve_jmp_table_entry): Add GDBARCH parameter.
(xstormy16_find_jmp_table_entry): Likewise.
(xstormy16_skip_trampoline_code): Pass architecture to
xstormy16_resolve_jmp_table_entry.
(xstormy16_pointer_to_address): Likewise.
(xstormy16_address_to_pointer): Pass architecture to
xstormy16_find_jmp_table_entry.
* xtensa-tdep.c (call0_track_op): Add GDBARCH parameter.
(call0_analyze_prologue): Add GDBARCH parameter, pass to
call0_track_op.
(call0_frame_cache): Pass architecture to call0_analyze_prologue.
(xtensa_skip_prologue): Likewise.
2009-07-03 01:25:59 +08:00
|
|
|
|
struct gdbarch *gdbarch = get_frame_arch (this_frame);
|
|
|
|
|
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
|
* x86-64-tdep.h (x86_64_num_regs, x86_64_num_gregs): Remove
variable declarations.
(x86_64_register_number, x86_64_register_name): Remove prototypes.
(x86_64_linux_frame_saved_pc, x86_64_linux+saved_pc_after_call,
x86_64_linux_in_sigtramp, x86_64_linux_frame_chain,
x86_64_init_frame_pc, x86_64_init_frame_pc,
x86_64_function_has_prologue): Remove prototypes.
(X86_64_NUM_GREGS): New define.
(x86_64_supply_fxsave, x86_64_fill_fxsave): New prototypes.
* x86-64-tdep.c: Don't include "dwarf2cfi.h". Include
"dummy_frame.h", "frame.h", "frame-base.h", "frame-unwind.h".
(RAX_REGNUM, RDX_REGNUM, RDI_REGNUM, EFLAGS_REGNUM, ST0_REGNUM,
XMM1_REGNUM): Remove defines.
(X86_64_RAX_REGNUM, X86_64_RDX_REGNUM, X86_64_RDI_REGNUM,
X86_64_RBP_REGNUM, X86_64_RSP_REGNUM, X86_64_RIP_REGNUM,
X86_64_EFLAGS_REGNUM, X86_64_ST0_REGNUM, X86_64_XMM0_REGNUM,
X86_64_XMM1_REGNUM): New defines.
(struct x86_64_register_info): Renamed from `struct
register_info'. Remove `size' member.
(x86_64_register_info_table): Remove variable.
(x86_64_register_info): New variable.
(X86_64_NUM_REGS): New define.
(X86_64_NUM_GREGS): Remove define.
(x86_64_num_regs, x86_64_num_gregs): Remove variables.
(x86_64_dwarf2gdb_regno_map, x86_64_dwarf2gdb_regno_map_length):
Remove variables.
(x86_54_dwarf2_reg_to_regnum): Remove function.
(x86_64_dwarf_regmap, x86_64_dwarf_regmap_len): New variables.
(x86_64_dwarf_reg_to_regnum): New function.
(x86_64_register_name): Rewrite.
(x86_64_register_raw_size): Remove function.
(x86_64_register_byte_table): Remove variable.
(x86_64_register_byte): Remove function.
(x86_64_register_virtual_type): Remove function.
(x86_64_register_type): New function.
(x86_64_register_convertible, x86_64_register_convert_to_virtual,
x86_64_register_convert_to_raw): Remove functions.
(x86_64_push_return_address, x86_64_pop_frame): Remove functon.
(x86_64_use_struct_convention): Make static. Adjust for renamed
defines.
(x86_64_frame_init_saved_regs): Remove function.
(x86_64_push_arguments): Make static. Change to accept a regcache
as argument.
(x86_64_store_return_value, x86_64_extract_return_value): Make
static. Rewrite based on i386 counterparts.
(x86_64_push_dummy_call): New function.
(X86_64_NUM_SAVED_REGS): New define.
(x86_64_register_number): Remove function.
(x86_64_store_struct_return): Remove function.
(x86_64_frameless_function_invocation,
x86_64_function_has_prologue): Remove functions.
(PROLOG_BUFSIZE): Remove define.
(struct x86_64_frame_cache): New structure.
(x86_64_alloc_frame_cache, x86_64_analyze_prologue,
x86_64_frame_cache, x86_64_frame_this_id,
x86_64_frame_prev_register, x86_64_frame_p,
x86_64_sigtramp_frame_cache, x86_64_sigtramp_frame_this_id,
x86_64_sigtramp_frame_prev_register, x86_sigtramp_frame_p): New
functions.
(x86_64_frame_unwind, x86_64_sigtramp_frame_unwind): New
variables.
(x86_64_skip_prologue): Rewrite in terms of
x86_64_analyze_prologue.
(x86_64_frame_base_address): New function.
(x86_64_frame_base): New variable.
(x86_64_save_dummy_frame_tos, x86_64_unwind_dummy_id): Rewrite.
(x86_64_init_abi): Set register_type and push_dummy_call. Don't
set deprecated_fp_regnum, deprecated_register_size,
deprecated_register_bytes, register_raw_size, register_byte,
register_virtual_type, register_convertiable,
register_convert_to_virtual, convert_to_raw,
deprecated_get_saved_register, deprecated_target_read_fp,
deprecated_push_arguments, deprecated_push_return_address,
deprecated_pop_frame, deprecated_store_struct_return,
deprecated_frame_init_saved_regs, deprecated_frame_chain,
frameless_function_invocation, deprecated_frame_saved_pc,
deprecated_saved_pc_after_call, frame_num_args, pc_in_sigtramp,
dwarf2_build_frame_info, deprecated_init_extra_frame_info,
deprecated_init_frame_pc and virtual_frame_pointer. Call
frame_unwind_append_predicate to register x86_64_sigtramp_frame_p
and x86_64_frame_p. Call frame_base_set_default to register
x86_64_frame_base.
(I387_FISEG_REGNUM, I387_FOSEG_REGNUM): New defines.
(x86_64_supply_fxsave, x86_64_fill_fxsave): New functions.
(_initialize_x86_64_tdep): Remove function.
* x86-64-linux-tdep.c: Don't include "dwarf2cfi.h".
(LINUX_SIGINFO_SIZE, LINUX_UCONTEXT_SIGCONTEXT_OFFSET,
LINUX_SIGCONTEXT_PC_OFFSET, LINUX_SIGCONTEXT_FP_OFFSET): Don't
define.
(X86_64_LINUX_UCONTEXT_SIGCONTEXT_OFFSET): Define.
(x86_64_linux_sigcontext_addr): Rewrite.
(x86_64_linux_sigtramp_saved_pc, x86_64_linux_saved_pc_after_call,
x86_64_linux_frame_saved_pc): Remove functions.
(x86_64_linux_pc_in_sigtramp): Renamed from
x86_64_linux_in_sigtramp. Try harder to recognize a signal
trampoline.
(x86_64_linux_frame_chain, x86_64_init_frame_pc):
Remove_functions.
(x86_64_linux_init_abi): Set pc_in_sigtramp. Initialize
TDEP->sigcontext_addr, TDEP->sc_pc_offset and TDEP->sc_sp_offset.
* x86-64-linux-nat.c: Sync with i386-linux-tdep.c.
(x86_64_regmap): Rename to regmap.
(GETREGS_SUPPLIES): Use X86_64_NUM_GREGS instead of
x86_64_num_gregs.
(supply_gregset, fill_gregset): Likewise. Use regmap instead of
x86_64_regmap.
(x86_64_fxsave_offset): Remove function.
(supply_fpregset): Simply call x86_64_supply_fxsave.
(fill_fpregset): Simply call x86_64_fill_fxsave.
(fetch_inferior_registers, store_inferior_registers): Avoid
asignment in if-statement.
(LINUX_SYSCALL_LEN, LINUX_SYSCALL_REGNUM, SYS_Sigreturn,
SYS_rt_sigreturn, LINUX_SIGCONTEXT_EFLAGS_OFFSET,
LINUX_UCONTEXT_SIGCONTEXT_OFFSET): Remove defines.
(fetch_core_registers): Remove function.
(linux_elf_core_fns): Remove.
(offsetoff): Don't define.
(_initialize_x86_64_linux_nat, kernel_u_size): Remove functions.
* config/i386/x86-64linux.mt (TDEPFILES): Add i386-linux-tdep.o.
* config/i386/x86-64linux.mh (NATDEPFILES): Remove core-aout.o,
add core-regset.o.
* config/i386/nm-x86-64linux.h: Use NM_X86_64_LINUX_H for
protection against multiple includes instead of NM_X86_64_h. Add
various comments. Include "config/nm-linux.h". Don't include
<signal.h>.
(REGISTER_U_ADDR, KERNEL_U_SIZE, U_REGS_OFFSET, KERN_U_ADDR,
GET_THREAD_SIGNALS): Remove defines.
(x86_64_register_u_addr, kernel_u_size,
lin_thread_get_thread_signals): Remove prototypes.
(PTRACE_ARG3_TYPE, PTRACE_XFER_TYPE): Define to `long'.
[HAVE_LINK_H]: Don't include "solib.h".
[HAVE_LINK_H] (SVR4_SHARED_LIBS): Remove define.
* config/i386/tm-x86-64linux.h: Fix comments.
* Makefile.in (x86-64-linux-nat.o, x86_64-linux-tdep.o,
x86-64-tdep.o): Update dependencies.
2003-05-31 16:15:38 +08:00
|
|
|
|
CORE_ADDR sp;
|
2005-05-09 06:07:27 +08:00
|
|
|
|
gdb_byte buf[8];
|
* x86-64-tdep.h (x86_64_num_regs, x86_64_num_gregs): Remove
variable declarations.
(x86_64_register_number, x86_64_register_name): Remove prototypes.
(x86_64_linux_frame_saved_pc, x86_64_linux+saved_pc_after_call,
x86_64_linux_in_sigtramp, x86_64_linux_frame_chain,
x86_64_init_frame_pc, x86_64_init_frame_pc,
x86_64_function_has_prologue): Remove prototypes.
(X86_64_NUM_GREGS): New define.
(x86_64_supply_fxsave, x86_64_fill_fxsave): New prototypes.
* x86-64-tdep.c: Don't include "dwarf2cfi.h". Include
"dummy_frame.h", "frame.h", "frame-base.h", "frame-unwind.h".
(RAX_REGNUM, RDX_REGNUM, RDI_REGNUM, EFLAGS_REGNUM, ST0_REGNUM,
XMM1_REGNUM): Remove defines.
(X86_64_RAX_REGNUM, X86_64_RDX_REGNUM, X86_64_RDI_REGNUM,
X86_64_RBP_REGNUM, X86_64_RSP_REGNUM, X86_64_RIP_REGNUM,
X86_64_EFLAGS_REGNUM, X86_64_ST0_REGNUM, X86_64_XMM0_REGNUM,
X86_64_XMM1_REGNUM): New defines.
(struct x86_64_register_info): Renamed from `struct
register_info'. Remove `size' member.
(x86_64_register_info_table): Remove variable.
(x86_64_register_info): New variable.
(X86_64_NUM_REGS): New define.
(X86_64_NUM_GREGS): Remove define.
(x86_64_num_regs, x86_64_num_gregs): Remove variables.
(x86_64_dwarf2gdb_regno_map, x86_64_dwarf2gdb_regno_map_length):
Remove variables.
(x86_54_dwarf2_reg_to_regnum): Remove function.
(x86_64_dwarf_regmap, x86_64_dwarf_regmap_len): New variables.
(x86_64_dwarf_reg_to_regnum): New function.
(x86_64_register_name): Rewrite.
(x86_64_register_raw_size): Remove function.
(x86_64_register_byte_table): Remove variable.
(x86_64_register_byte): Remove function.
(x86_64_register_virtual_type): Remove function.
(x86_64_register_type): New function.
(x86_64_register_convertible, x86_64_register_convert_to_virtual,
x86_64_register_convert_to_raw): Remove functions.
(x86_64_push_return_address, x86_64_pop_frame): Remove functon.
(x86_64_use_struct_convention): Make static. Adjust for renamed
defines.
(x86_64_frame_init_saved_regs): Remove function.
(x86_64_push_arguments): Make static. Change to accept a regcache
as argument.
(x86_64_store_return_value, x86_64_extract_return_value): Make
static. Rewrite based on i386 counterparts.
(x86_64_push_dummy_call): New function.
(X86_64_NUM_SAVED_REGS): New define.
(x86_64_register_number): Remove function.
(x86_64_store_struct_return): Remove function.
(x86_64_frameless_function_invocation,
x86_64_function_has_prologue): Remove functions.
(PROLOG_BUFSIZE): Remove define.
(struct x86_64_frame_cache): New structure.
(x86_64_alloc_frame_cache, x86_64_analyze_prologue,
x86_64_frame_cache, x86_64_frame_this_id,
x86_64_frame_prev_register, x86_64_frame_p,
x86_64_sigtramp_frame_cache, x86_64_sigtramp_frame_this_id,
x86_64_sigtramp_frame_prev_register, x86_sigtramp_frame_p): New
functions.
(x86_64_frame_unwind, x86_64_sigtramp_frame_unwind): New
variables.
(x86_64_skip_prologue): Rewrite in terms of
x86_64_analyze_prologue.
(x86_64_frame_base_address): New function.
(x86_64_frame_base): New variable.
(x86_64_save_dummy_frame_tos, x86_64_unwind_dummy_id): Rewrite.
(x86_64_init_abi): Set register_type and push_dummy_call. Don't
set deprecated_fp_regnum, deprecated_register_size,
deprecated_register_bytes, register_raw_size, register_byte,
register_virtual_type, register_convertiable,
register_convert_to_virtual, convert_to_raw,
deprecated_get_saved_register, deprecated_target_read_fp,
deprecated_push_arguments, deprecated_push_return_address,
deprecated_pop_frame, deprecated_store_struct_return,
deprecated_frame_init_saved_regs, deprecated_frame_chain,
frameless_function_invocation, deprecated_frame_saved_pc,
deprecated_saved_pc_after_call, frame_num_args, pc_in_sigtramp,
dwarf2_build_frame_info, deprecated_init_extra_frame_info,
deprecated_init_frame_pc and virtual_frame_pointer. Call
frame_unwind_append_predicate to register x86_64_sigtramp_frame_p
and x86_64_frame_p. Call frame_base_set_default to register
x86_64_frame_base.
(I387_FISEG_REGNUM, I387_FOSEG_REGNUM): New defines.
(x86_64_supply_fxsave, x86_64_fill_fxsave): New functions.
(_initialize_x86_64_tdep): Remove function.
* x86-64-linux-tdep.c: Don't include "dwarf2cfi.h".
(LINUX_SIGINFO_SIZE, LINUX_UCONTEXT_SIGCONTEXT_OFFSET,
LINUX_SIGCONTEXT_PC_OFFSET, LINUX_SIGCONTEXT_FP_OFFSET): Don't
define.
(X86_64_LINUX_UCONTEXT_SIGCONTEXT_OFFSET): Define.
(x86_64_linux_sigcontext_addr): Rewrite.
(x86_64_linux_sigtramp_saved_pc, x86_64_linux_saved_pc_after_call,
x86_64_linux_frame_saved_pc): Remove functions.
(x86_64_linux_pc_in_sigtramp): Renamed from
x86_64_linux_in_sigtramp. Try harder to recognize a signal
trampoline.
(x86_64_linux_frame_chain, x86_64_init_frame_pc):
Remove_functions.
(x86_64_linux_init_abi): Set pc_in_sigtramp. Initialize
TDEP->sigcontext_addr, TDEP->sc_pc_offset and TDEP->sc_sp_offset.
* x86-64-linux-nat.c: Sync with i386-linux-tdep.c.
(x86_64_regmap): Rename to regmap.
(GETREGS_SUPPLIES): Use X86_64_NUM_GREGS instead of
x86_64_num_gregs.
(supply_gregset, fill_gregset): Likewise. Use regmap instead of
x86_64_regmap.
(x86_64_fxsave_offset): Remove function.
(supply_fpregset): Simply call x86_64_supply_fxsave.
(fill_fpregset): Simply call x86_64_fill_fxsave.
(fetch_inferior_registers, store_inferior_registers): Avoid
asignment in if-statement.
(LINUX_SYSCALL_LEN, LINUX_SYSCALL_REGNUM, SYS_Sigreturn,
SYS_rt_sigreturn, LINUX_SIGCONTEXT_EFLAGS_OFFSET,
LINUX_UCONTEXT_SIGCONTEXT_OFFSET): Remove defines.
(fetch_core_registers): Remove function.
(linux_elf_core_fns): Remove.
(offsetoff): Don't define.
(_initialize_x86_64_linux_nat, kernel_u_size): Remove functions.
* config/i386/x86-64linux.mt (TDEPFILES): Add i386-linux-tdep.o.
* config/i386/x86-64linux.mh (NATDEPFILES): Remove core-aout.o,
add core-regset.o.
* config/i386/nm-x86-64linux.h: Use NM_X86_64_LINUX_H for
protection against multiple includes instead of NM_X86_64_h. Add
various comments. Include "config/nm-linux.h". Don't include
<signal.h>.
(REGISTER_U_ADDR, KERNEL_U_SIZE, U_REGS_OFFSET, KERN_U_ADDR,
GET_THREAD_SIGNALS): Remove defines.
(x86_64_register_u_addr, kernel_u_size,
lin_thread_get_thread_signals): Remove prototypes.
(PTRACE_ARG3_TYPE, PTRACE_XFER_TYPE): Define to `long'.
[HAVE_LINK_H]: Don't include "solib.h".
[HAVE_LINK_H] (SVR4_SHARED_LIBS): Remove define.
* config/i386/tm-x86-64linux.h: Fix comments.
* Makefile.in (x86-64-linux-nat.o, x86_64-linux-tdep.o,
x86-64-tdep.o): Update dependencies.
2003-05-31 16:15:38 +08:00
|
|
|
|
|
Update i386 and amd64 ports for unwinder changes.
* amd64-tdep.c (amd64_frame_cache): Expect this_frame.
(amd64_frame_this_id, amd64_frame_prev_register): Update signature.
(amd64_frame_unwind): Use default_frame_sniffer.
(amd64_frame_sniffer): Delete.
(amd64_sigtramp_frame_cache): Expect this_frame.
(amd64_sigtramp_frame_this_id, amd64_sigtramp_frame_prev_register)
(amd64_sigtramp_frame_sniffer): Update signature.
(amd64_sigtramp_frame_unwind): Add amd64_sigtramp_frame_sniffer.
(amd64_frame_base_address): Expect this_frame.
(amd64_dummy_id): Renamed from amd64_unwind_dummy_id. Expect
this_frame.
(amd64_init_abi): Use set_gdbarch_dummy_id and
frame_unwind_append_unwinder.
* i386-tdep.c (i386_frame_cache): Expect this_frame.
(i386_frame_this_id, i386_frame_prev_register): Update signature.
(i386_frame_unwind): Use default_frame_sniffer.
(i386_frame_sniffer): Delete.
(i386_sigtramp_frame_cache): Expect this_frame.
(i386_sigtramp_frame_this_id, i386_sigtramp_frame_prev_register)
(i386_sigtramp_frame_sniffer): Update signature.
(i386_sigtramp_frame_unwind): Use i386_sigtramp_frame_sniffer.
(i386_frame_base_address): Update signature.
(i386_dummy_id): Rename from i386_unwind_dummy_id. Expect this_frame.
(i386_push_dummy_call): Update comment.
(i386_sigtramp_p, i386_svr4_sigtramp_p, i386_svr4_sigcontext_addr):
Expect this_frame.
(i386_gdbarch_init): Use set_gdbarch_dummy_id, dwarf2_append_unwinders,
and frame_unwind_append_unwinder.
* amd64-linux-tdep.c, amd64-sol2-tdep.c, amd64fbsd-tdep.c,
amd64nbsd-tdep.c, amd64obsd-tdep.c, i386-linux-tdep.c,
i386-nto-tdep.c, i386bsd-tdep.c, i386-sol2-tdep.c, i386obsd-tdep.c,
i386nbsd-tdep.c: Update for unwinder changes.
2008-05-01 05:19:45 +08:00
|
|
|
|
get_frame_register (this_frame, AMD64_RSP_REGNUM, buf);
|
* defs.h (extract_signed_integer, extract_unsigned_integer,
extract_long_unsigned_integer, store_signed_integer,
store_unsigned_integer): Add BYTE_ORDER parameter.
* findvar.c (extract_signed_integer, extract_unsigned_integer,
extract_long_unsigned_integer, store_signed_integer,
store_unsigned_integer): Add BYTE_ORDER parameter. Use it
instead of current_gdbarch.
* gdbcore.h (read_memory_integer, safe_read_memory_integer,
read_memory_unsigned_integer, write_memory_signed_integer,
write_memory_unsigned_integer): Add BYTE_ORDER parameter.
* corefile.c (struct captured_read_memory_integer_arguments): Add
BYTE_ORDER member.
(safe_read_memory_integer): Add BYTE_ORDER parameter. Store it into
struct captured_read_memory_integer_arguments.
(do_captured_read_memory_integer): Pass it to read_memory_integer.
(read_memory_integer): Add BYTE_ORDER parameter. Pass it to
extract_signed_integer.
(read_memory_unsigned_integer): Add BYTE_ORDER parameter. Pass it to
extract_unsigned_integer.
(write_memory_signed_integer): Add BYTE_ORDER parameter. Pass it
to store_signed_integer.
(write_memory_unsigned_integer): Add BYTE_ORDER parameter. Pass it
to store_unsigned_integer.
* target.h (get_target_memory_unsigned): Add BYTE_ORDER parameter.
* target.c (get_target_memory_unsigned): Add BYTE_ORDER parameter.
Pass it to extract_unsigned_integer.
Update calls to extract_signed_integer, extract_unsigned_integer,
extract_long_unsigned_integer, store_signed_integer,
store_unsigned_integer, read_memory_integer,
read_memory_unsigned_integer, safe_read_memory_integer,
write_memory_signed_integer, write_memory_unsigned_integer, and
get_target_memory_unsigned to pass byte order:
* ada-lang.c (ada_value_binop): Update.
* ada-valprint.c (char_at): Update.
* alpha-osf1-tdep.c (alpha_osf1_sigcontext_addr): Update.
* alpha-tdep.c (alpha_lds, alpha_sts, alpha_push_dummy_call,
alpha_extract_return_value, alpha_read_insn,
alpha_get_longjmp_target): Update.
* amd64-linux-tdep.c (amd64_linux_sigcontext_addr): Update.
* amd64obsd-tdep.c (amd64obsd_supply_uthread,
amd64obsd_collect_uthread, amd64obsd_trapframe_cache): Update.
* amd64-tdep.c (amd64_push_dummy_call, amd64_analyze_prologue,
amd64_frame_cache, amd64_sigtramp_frame_cache, fixup_riprel,
amd64_displaced_step_fixup): Update.
* arm-linux-tdep.c (arm_linux_sigreturn_init,
arm_linux_rt_sigreturn_init, arm_linux_supply_gregset): Update.
* arm-tdep.c (thumb_analyze_prologue, arm_skip_prologue,
arm_scan_prologue, arm_push_dummy_call, thumb_get_next_pc,
arm_get_next_pc, arm_extract_return_value, arm_store_return_value,
arm_return_value): Update.
* arm-wince-tdep.c (arm_pe_skip_trampoline_code): Update.
* auxv.c (default_auxv_parse): Update.
* avr-tdep.c (avr_address_to_pointer, avr_pointer_to_address,
avr_scan_prologue, avr_extract_return_value,
avr_frame_prev_register, avr_push_dummy_call): Update.
* bsd-uthread.c (bsd_uthread_check_magic, bsd_uthread_lookup_offset,
bsd_uthread_wait, bsd_uthread_thread_alive,
bsd_uthread_extra_thread_info): Update.
* c-lang.c (c_printstr, print_wchar): Update.
* cp-valprint.c (cp_print_class_member): Update.
* cris-tdep.c (cris_sigcontext_addr, cris_sigtramp_frame_unwind_cache,
cris_push_dummy_call, cris_scan_prologue, cris_store_return_value,
cris_extract_return_value, find_step_target, dip_prefix,
sixteen_bit_offset_branch_op, none_reg_mode_jump_op,
move_mem_to_reg_movem_op, get_data_from_address): Update.
* dwarf2expr.c (dwarf2_read_address, execute_stack_op): Update.
* dwarf2-frame.c (execute_cfa_program): Update.
* dwarf2loc.c (find_location_expression): Update.
* dwarf2read.c (dwarf2_const_value): Update.
* expprint.c (print_subexp_standard): Update.
* findvar.c (unsigned_pointer_to_address, signed_pointer_to_address,
unsigned_address_to_pointer, address_to_signed_pointer,
read_var_value): Update.
* frame.c (frame_unwind_register_signed,
frame_unwind_register_unsigned, get_frame_memory_signed,
get_frame_memory_unsigned): Update.
* frame-unwind.c (frame_unwind_got_constant): Update.
* frv-linux-tdep.c (frv_linux_pc_in_sigtramp,
frv_linux_sigcontext_reg_addr, frv_linux_sigtramp_frame_cache):
Update.
* frv-tdep.c (frv_analyze_prologue, frv_skip_main_prologue,
frv_extract_return_value, find_func_descr,
frv_convert_from_func_ptr_addr, frv_push_dummy_call): Update.
* f-valprint.c (f_val_print): Update.
* gnu-v3-abi.c (gnuv3_decode_method_ptr, gnuv3_make_method_ptr):
Update.
* h8300-tdep.c (h8300_is_argument_spill, h8300_analyze_prologue,
h8300_push_dummy_call, h8300_extract_return_value,
h8300h_extract_return_value, h8300_store_return_value,
h8300h_store_return_value): Update.
* hppabsd-tdep.c (hppabsd_find_global_pointer): Update.
* hppa-hpux-nat.c (hppa_hpux_fetch_register, hppa_hpux_store_register):
Update.
* hppa-hpux-tdep.c (hppa32_hpux_in_solib_call_trampoline,
hppa64_hpux_in_solib_call_trampoline,
hppa_hpux_in_solib_return_trampoline, hppa_hpux_skip_trampoline_code,
hppa_hpux_sigtramp_frame_unwind_cache,
hppa_hpux_sigtramp_unwind_sniffer, hppa32_hpux_find_global_pointer,
hppa64_hpux_find_global_pointer, hppa_hpux_search_pattern,
hppa32_hpux_search_dummy_call_sequence,
hppa64_hpux_search_dummy_call_sequence, hppa_hpux_supply_save_state,
hppa_hpux_unwind_adjust_stub): Update.
* hppa-linux-tdep.c (insns_match_pattern,
hppa_linux_find_global_pointer): Update.
* hppa-tdep.c (hppa_in_function_epilogue_p, hppa32_push_dummy_call,
hppa64_convert_code_addr_to_fptr, hppa64_push_dummy_call,
skip_prologue_hard_way, hppa_frame_cache, hppa_fallback_frame_cache,
hppa_pseudo_register_read, hppa_frame_prev_register_helper,
hppa_match_insns): Update.
* hpux-thread.c (hpux_thread_fetch_registers): Update.
* i386-tdep.c (i386bsd_sigcontext_addr): Update.
* i386-cygwin-tdep.c (core_process_module_section): Update.
* i386-darwin-nat.c (i386_darwin_sstep_at_sigreturn,
amd64_darwin_sstep_at_sigreturn): Update.
* i386-darwin-tdep.c (i386_darwin_sigcontext_addr,
amd64_darwin_sigcontext_addr): Likewise.
* i386-linux-nat.c (i386_linux_sigcontext_addr): Update.
* i386nbsd-tdep.c (i386nbsd_sigtramp_cache_init): Update.
* i386-nto-tdep.c (i386nto_sigcontext_addr): Update.
* i386obsd-nat.c (i386obsd_supply_pcb): Update.
* i386obsd-tdep.c (i386obsd_supply_uthread, i386obsd_collect_uthread,
i386obsd_trapframe_cache): Update.
* i386-tdep.c (i386_displaced_step_fixup, i386_follow_jump,
i386_analyze_frame_setup, i386_analyze_prologue,
i386_skip_main_prologue, i386_frame_cache, i386_sigtramp_frame_cache,
i386_get_longjmp_target, i386_push_dummy_call,
i386_pe_skip_trampoline_code, i386_svr4_sigcontext_addr,
i386_fetch_pointer_argument): Update.
* i387-tdep.c (i387_supply_fsave): Update.
* ia64-linux-tdep.c (ia64_linux_sigcontext_register_address): Update.
* ia64-tdep.c (ia64_pseudo_register_read, ia64_pseudo_register_write,
examine_prologue, ia64_frame_cache, ia64_frame_prev_register,
ia64_sigtramp_frame_cache, ia64_sigtramp_frame_prev_register,
ia64_access_reg, ia64_access_rse_reg, ia64_libunwind_frame_this_id,
ia64_libunwind_frame_prev_register,
ia64_libunwind_sigtramp_frame_this_id,
ia64_libunwind_sigtramp_frame_prev_register, ia64_find_global_pointer,
find_extant_func_descr, find_func_descr,
ia64_convert_from_func_ptr_addr, ia64_push_dummy_call, ia64_dummy_id,
ia64_unwind_pc): Update.
* iq2000-tdep.c (iq2000_pointer_to_address, iq2000_address_to_pointer,
iq2000_scan_prologue, iq2000_extract_return_value,
iq2000_push_dummy_call): Update.
* irix5nat.c (fill_gregset): Update.
* jv-lang.c (evaluate_subexp_java): Update.
* jv-valprint.c (java_value_print): Update.
* lm32-tdep.c (lm32_analyze_prologue, lm32_push_dummy_call,
lm32_extract_return_value, lm32_store_return_value): Update.
* m32c-tdep.c (m32c_push_dummy_call, m32c_return_value,
m32c_skip_trampoline_code, m32c_m16c_address_to_pointer,
m32c_m16c_pointer_to_address): Update.
* m32r-tdep.c (m32r_store_return_value, decode_prologue,
m32r_skip_prologue, m32r_push_dummy_call, m32r_extract_return_value):
Update.
* m68hc11-tdep.c (m68hc11_pseudo_register_read,
m68hc11_pseudo_register_write, m68hc11_analyze_instruction,
m68hc11_push_dummy_call): Update.
* m68linux-tdep.c (m68k_linux_pc_in_sigtramp,
m68k_linux_get_sigtramp_info, m68k_linux_sigtramp_frame_cache):
Update.
* m68k-tdep.c (m68k_push_dummy_call, m68k_analyze_frame_setup,
m68k_analyze_register_saves, m68k_analyze_prologue, m68k_frame_cache,
m68k_get_longjmp_target): Update.
* m88k-tdep.c (m88k_fetch_instruction): Update.
* mep-tdep.c (mep_pseudo_cr32_read, mep_pseudo_csr_write,
mep_pseudo_cr32_write, mep_get_insn, mep_push_dummy_call): Update.
* mi/mi-main.c (mi_cmd_data_write_memory): Update.
* mips-linux-tdep.c (mips_linux_get_longjmp_target, supply_32bit_reg,
mips64_linux_get_longjmp_target, mips64_fill_gregset,
mips64_fill_fpregset, mips_linux_in_dynsym_stub): Update.
* mipsnbdsd-tdep.c (mipsnbsd_get_longjmp_target): Update.
* mips-tdep.c (mips_fetch_instruction, fetch_mips_16,
mips_eabi_push_dummy_call, mips_n32n64_push_dummy_call,
mips_o32_push_dummy_call, mips_o64_push_dummy_call,
mips_single_step_through_delay, mips_skip_pic_trampoline_code,
mips_integer_to_address): Update.
* mn10300-tdep.c (mn10300_analyze_prologue, mn10300_push_dummy_call):
Update.
* monitor.c (monitor_supply_register, monitor_write_memory,
monitor_read_memory_single): Update.
* moxie-tdep.c (moxie_store_return_value, moxie_extract_return_value,
moxie_analyze_prologue): Update.
* mt-tdep.c (mt_return_value, mt_skip_prologue, mt_select_coprocessor,
mt_pseudo_register_read, mt_pseudo_register_write, mt_registers_info,
mt_push_dummy_call): Update.
* objc-lang.c (read_objc_method, read_objc_methlist_nmethods,
read_objc_methlist_method, read_objc_object, read_objc_super,
read_objc_class, find_implementation_from_class): Update.
* ppc64-linux-tdep.c (ppc64_desc_entry_point,
ppc64_linux_convert_from_func_ptr_addr, ppc_linux_sigtramp_cache):
Update.
* ppcobsd-tdep.c (ppcobsd_sigtramp_frame_sniffer,
ppcobsd_sigtramp_frame_cache): Update.
* ppc-sysv-tdep.c (ppc_sysv_abi_push_dummy_call,
do_ppc_sysv_return_value, ppc64_sysv_abi_push_dummy_call,
ppc64_sysv_abi_return_value): Update.
* ppc-linux-nat.c (ppc_linux_auxv_parse): Update.
* procfs.c (procfs_auxv_parse): Update.
* p-valprint.c (pascal_val_print): Update.
* regcache.c (regcache_raw_read_signed, regcache_raw_read_unsigned,
regcache_raw_write_signed, regcache_raw_write_unsigned,
regcache_cooked_read_signed, regcache_cooked_read_unsigned,
regcache_cooked_write_signed, regcache_cooked_write_unsigned): Update.
* remote-m32r-sdi.c (m32r_fetch_register): Update.
* remote-mips.c (mips_wait, mips_fetch_registers, mips_xfer_memory):
Update.
* rs6000-aix-tdep.c (rs6000_push_dummy_call, rs6000_return_value,
rs6000_convert_from_func_ptr_addr, branch_dest,
rs6000_software_single_step): Update.
* rs6000-tdep.c (rs6000_in_function_epilogue_p,
ppc_displaced_step_fixup, ppc_deal_with_atomic_sequence,
bl_to_blrl_insn_p, rs6000_fetch_instruction, skip_prologue,
rs6000_skip_main_prologue, rs6000_skip_trampoline_code,
rs6000_frame_cache): Update.
* s390-tdep.c (s390_pseudo_register_read, s390_pseudo_register_write,
s390x_pseudo_register_read, s390x_pseudo_register_write, s390_load,
s390_backchain_frame_unwind_cache, s390_sigtramp_frame_unwind_cache,
extend_simple_arg, s390_push_dummy_call, s390_return_value): Update.
* scm-exp.c (scm_lreadr): Update.
* scm-lang.c (scm_get_field, scm_unpack): Update.
* scm-valprint.c (scm_val_print): Update.
* score-tdep.c (score_breakpoint_from_pc, score_push_dummy_call,
score_fetch_inst): Update.
* sh64-tdep.c (look_for_args_moves, sh64_skip_prologue_hard_way,
sh64_analyze_prologue, sh64_push_dummy_call, sh64_extract_return_value,
sh64_pseudo_register_read, sh64_pseudo_register_write,
sh64_frame_prev_register): Update:
* sh-tdep.c (sh_analyze_prologue, sh_push_dummy_call_fpu,
sh_push_dummy_call_nofpu, sh_extract_return_value_nofpu,
sh_store_return_value_nofpu, sh_in_function_epilogue_p): Update.
* solib-darwin.c (darwin_load_image_infos): Update.
* solib-frv.c (fetch_loadmap, lm_base, frv_current_sos, enable_break2,
find_canonical_descriptor_in_load_object): Update.
* solib-irix.c (extract_mips_address, fetch_lm_info, irix_current_sos,
irix_open_symbol_file_object): Update.
* solib-som.c (som_solib_create_inferior_hook, link_map_start,
som_current_sos, som_open_symbol_file_object): Update.
* solib-sunos.c (SOLIB_EXTRACT_ADDRESS, LM_ADDR, LM_NEXT, LM_NAME):
Update.
* solib-svr4.c (read_program_header, scan_dyntag_auxv,
solib_svr4_r_ldsomap): Update.
* sparc64-linux-tdep.c (sparc64_linux_step_trap): Update.
* sparc64obsd-tdep.c (sparc64obsd_supply_uthread,
sparc64obsd_collect_uthread): Update.
* sparc64-tdep.c (sparc64_pseudo_register_read,
sparc64_pseudo_register_write, sparc64_supply_gregset,
sparc64_collect_gregset): Update.
* sparc-linux-tdep.c (sparc32_linux_step_trap): Update.
* sparcobsd-tdep.c (sparc32obsd_supply_uthread,
sparc32obsd_collect_uthread): Update.
* sparc-tdep.c (sparc_fetch_wcookie, sparc32_push_dummy_code,
sparc32_store_arguments, sparc32_return_value, sparc_supply_rwindow,
sparc_collect_rwindow): Update.
* spu-linux-nat.c (parse_spufs_run): Update.
* spu-tdep.c (spu_pseudo_register_read_spu,
spu_pseudo_register_write_spu, spu_pointer_to_address,
spu_analyze_prologue, spu_in_function_epilogue_p,
spu_frame_unwind_cache, spu_push_dummy_call, spu_software_single_step,
spu_get_longjmp_target, spu_get_overlay_table, spu_overlay_update_osect,
info_spu_signal_command, info_spu_mailbox_list, info_spu_dma_cmdlist,
info_spu_dma_command, info_spu_proxydma_command): Update.
* stack.c (print_frame_nameless_args, frame_info): Update.
* symfile.c (read_target_long_array, simple_read_overlay_table,
simple_read_overlay_region_table): Update.
* target.c (debug_print_register): Update.
* tramp-frame.c (tramp_frame_start): Update.
* v850-tdep.c (v850_analyze_prologue, v850_push_dummy_call,
v850_extract_return_value, v850_store_return_value,
* valarith.c (value_binop, value_bit_index): Update.
* valops.c (value_cast): Update.
* valprint.c (val_print_type_code_int, val_print_string,
read_string): Update.
* value.c (unpack_long, unpack_double, unpack_field_as_long,
modify_field, pack_long): Update.
* vax-tdep.c (vax_store_arguments, vax_push_dummy_call,
vax_skip_prologue): Update.
* xstormy16-tdep.c (xstormy16_push_dummy_call,
xstormy16_analyze_prologue, xstormy16_in_function_epilogue_p,
xstormy16_resolve_jmp_table_entry, xstormy16_find_jmp_table_entry,
xstormy16_pointer_to_address, xstormy16_address_to_pointer): Update.
* xtensa-tdep.c (extract_call_winsize, xtensa_pseudo_register_read,
xtensa_pseudo_register_write, xtensa_frame_cache,
xtensa_push_dummy_call, call0_track_op, call0_frame_cache): Update.
* dfp.h (decimal_to_string, decimal_from_string, decimal_from_integral,
decimal_from_floating, decimal_to_doublest, decimal_is_zero): Add
BYTE_ORDER parameter.
(decimal_binop): Add BYTE_ORDER_X, BYTE_ORDER_Y, and BYTE_ORDER_RESULT
parameters.
(decimal_compare): Add BYTE_ORDER_X and BYTE_ORDER_Y parameters.
(decimal_convert): Add BYTE_ORDER_FROM and BYTE_ORDER_TO parameters.
* dfp.c (match_endianness): Add BYTE_ORDER parameter. Use it
instead of current_gdbarch.
(decimal_to_string, decimal_from_integral, decimal_from_floating,
decimal_to_doublest, decimal_is_zero): Add BYTE_ORDER parameter.
Pass it to match_endianness.
(decimal_binop): Add BYTE_ORDER_X, BYTE_ORDER_Y, and BYTE_ORDER_RESULT
parameters. Pass them to match_endianness.
(decimal_compare): Add BYTE_ORDER_X and BYTE_ORDER_Y parameters.
Pass them to match_endianness.
(decimal_convert): Add BYTE_ORDER_FROM and BYTE_ORDER_TO parameters.
Pass them to match_endianness.
* valarith.c (value_args_as_decimal): Add BYTE_ORDER_X and
BYTE_ORDER_Y output parameters.
(value_binop): Update call to value_args_as_decimal.
Update calls to decimal_to_string, decimal_from_string,
decimal_from_integral, decimal_from_floating, decimal_to_doublest,
decimal_is_zero, decimal_binop, decimal_compare and decimal_convert
to pass/receive byte order:
* c-exp.y (parse_number): Update.
* printcmd.c (printf_command): Update.
* valarith.c (value_args_as_decimal, value_binop, value_logical_not,
value_equal, value_less): Update.
* valops.c (value_cast, value_one): Update.
* valprint.c (print_decimal_floating): Update.
* value.c (unpack_long, unpack_double): Update.
* python/python-value.c (valpy_nonzero): Update.
* ada-valprint.c (char_at): Add BYTE_ORDER parameter.
(printstr): Update calls to char_at.
(ada_val_print_array): Likewise.
* valprint.c (read_string): Add BYTE_ORDER parameter.
(val_print_string): Update call to read_string.
* c-lang.c (c_get_string): Likewise.
* charset.h (target_wide_charset): Add BYTE_ORDER parameter.
* charset.c (target_wide_charset): Add BYTE_ORDER parameter.
Use it instead of current_gdbarch.
* printcmd.c (printf_command): Update calls to target_wide_charset.
* c-lang.c (charset_for_string_type): Add BYTE_ORDER parameter.
Pass to target_wide_charset. Use it instead of current_gdbarch.
(classify_type): Add BYTE_ORDER parameter. Pass to
charset_for_string_type. Allow NULL encoding pointer.
(print_wchar): Add BYTE_ORDER parameter.
(c_emit_char): Update calls to classify_type and print_wchar.
(c_printchar, c_printstr): Likewise.
* gdbarch.sh (in_solib_return_trampoline): Convert to type "m".
* gdbarch.c, gdbarch.h: Regenerate.
* arch-utils.h (generic_in_solib_return_trampoline): Add GDBARCH
parameter.
* arch-utils.c (generic_in_solib_return_trampoline): Likewise.
* hppa-hpux-tdep.c (hppa_hpux_in_solib_return_trampoline): Likewise.
* rs6000-tdep.c (rs6000_in_solib_return_trampoline): Likewise.
(rs6000_skip_trampoline_code): Update call.
* alpha-tdep.h (struct gdbarch_tdep): Add GDBARCH parameter to
dynamic_sigtramp_offset and pc_in_sigtramp callbacks.
(alpha_read_insn): Add GDBARCH parameter.
* alpha-tdep.c (alpha_lds, alpha_sts): Add GDBARCH parameter.
(alpha_register_to_value): Pass architecture to alpha_sts.
(alpha_extract_return_value): Likewise.
(alpha_value_to_register): Pass architecture to alpha_lds.
(alpha_store_return_value): Likewise.
(alpha_read_insn): Add GDBARCH parameter.
(alpha_skip_prologue): Pass architecture to alpha_read_insn.
(alpha_heuristic_proc_start): Likewise.
(alpha_heuristic_frame_unwind_cache): Likewise.
(alpha_next_pc): Likewise.
(alpha_sigtramp_frame_this_id): Pass architecture to
tdep->dynamic_sigtramp_offset callback.
(alpha_sigtramp_frame_sniffer): Pass architecture to
tdep->pc_in_sigtramp callback.
* alphafbsd-tdep.c (alphafbsd_pc_in_sigtramp): Add GDBARCH parameter.
(alphafbsd_sigtramp_offset): Likewise.
* alpha-linux-tdep.c (alpha_linux_sigtramp_offset_1): Add GDBARCH
parameter. Pass to alpha_read_insn.
(alpha_linux_sigtramp_offset): Add GDBARCH parameter. Pass to
alpha_linux_sigtramp_offset_1.
(alpha_linux_pc_in_sigtramp): Add GDBARCH parameter. Pass to
alpha_linux_sigtramp_offset.
(alpha_linux_sigcontext_addr): Pass architecture to alpha_read_insn
and alpha_linux_sigtramp_offset.
* alphanbsd-tdep.c (alphanbsd_sigtramp_offset): Add GDBARCH parameter.
(alphanbsd_pc_in_sigtramp): Add GDBARCH parameter. Pass to
alphanbsd_sigtramp_offset.
* alphaobsd-tdep.c (alphaobsd_sigtramp_offset): Add GDBARCH parameter.
(alphaobsd_pc_in_sigtramp): Add GDBARCH parameter. Pass to
alpha_read_insn.
(alphaobsd_sigcontext_addr): Pass architecture to
alphaobsd_sigtramp_offset.
* alpha-osf1-tdep.c (alpha_osf1_pc_in_sigtramp): Add GDBARCH
parameter.
* amd64-tdep.c (amd64_analyze_prologue): Add GDBARCH parameter.
(amd64_skip_prologue): Pass architecture to amd64_analyze_prologue.
(amd64_frame_cache): Likewise.
* arm-tdep.c (SWAP_SHORT, SWAP_INT): Remove.
(thumb_analyze_prologue, arm_skip_prologue, arm_scan_prologue,
thumb_get_next_pc, arm_get_next_pc): Do not use SWAP_ macros.
* arm-wince-tdep.c: Include "frame.h".
* avr-tdep.c (EXTRACT_INSN): Remove.
(avr_scan_prologue): Add GDBARCH argument, inline EXTRACT_INSN.
(avr_skip_prologue): Pass architecture to avr_scan_prologue.
(avr_frame_unwind_cache): Likewise.
* cris-tdep.c (struct instruction_environment): Add BYTE_ORDER member.
(find_step_target): Initialize it.
(get_data_from_address): Add BYTE_ORDER parameter.
(bdap_prefix): Pass byte order to get_data_from_address.
(handle_prefix_assign_mode_for_aritm_op): Likewise.
(three_operand_add_sub_cmp_and_or_op): Likewise.
(handle_inc_and_index_mode_for_aritm_op): Likewise.
* frv-linux-tdep.c (frv_linux_pc_in_sigtramp): Add GDBARCH parameter.
(frv_linux_sigcontext_reg_addr): Pass architecture to
frv_linux_pc_in_sigtramp.
(frv_linux_sigtramp_frame_sniffer): Likewise.
* h8300-tdep.c (h8300_is_argument_spill): Add GDBARCH parameter.
(h8300_analyze_prologue): Add GDBARCH parameter. Pass to
h8300_is_argument_spill.
(h8300_frame_cache, h8300_skip_prologue): Pass architecture
to h8300_analyze_prologue.
* hppa-tdep.h (struct gdbarch_tdep): Add GDBARCH parameter to
in_solib_call_trampoline callback.
(hppa_in_solib_call_trampoline): Add GDBARCH parameter.
* hppa-tdep.c (hppa64_convert_code_addr_to_fptr): Add GDBARCH
parameter.
(hppa64_push_dummy_call): Pass architecture to
hppa64_convert_code_addr_to_fptr.
(hppa_match_insns): Add GDBARCH parameter.
(hppa_match_insns_relaxed): Add GDBARCH parameter. Pass to
hppa_match_insns.
(hppa_skip_trampoline_code): Pass architecture to hppa_match_insns.
(hppa_in_solib_call_trampoline): Add GDBARCH parameter. Pass to
hppa_match_insns_relaxed.
(hppa_stub_unwind_sniffer): Pass architecture to
tdep->in_solib_call_trampoline callback.
* hppa-hpux-tdep.c (hppa_hpux_search_pattern): Add GDBARCH parameter.
(hppa32_hpux_search_dummy_call_sequence): Pass architecture to
hppa_hpux_search_pattern.
* hppa-linux-tdep.c (insns_match_pattern): Add GDBARCH parameter.
(hppa_linux_sigtramp_find_sigcontext): Add GDBARCH parameter.
Pass to insns_match_pattern.
(hppa_linux_sigtramp_frame_unwind_cache): Pass architecture to
hppa_linux_sigtramp_find_sigcontext.
(hppa_linux_sigtramp_frame_sniffer): Likewise.
(hppa32_hpux_in_solib_call_trampoline): Add GDBARCH parameter.
(hppa64_hpux_in_solib_call_trampoline): Likewise.
* i386-tdep.c (i386_follow_jump): Add GDBARCH parameter.
(i386_analyze_frame_setup): Add GDBARCH parameter.
(i386_analyze_prologue): Add GDBARCH parameter. Pass to
i386_follow_jump and i386_analyze_frame_setup.
(i386_skip_prologue): Pass architecture to i386_analyze_prologue
and i386_follow_jump.
(i386_frame_cache): Pass architecture to i386_analyze_prologue.
(i386_pe_skip_trampoline_code): Add FRAME parameter.
* i386-tdep.h (i386_pe_skip_trampoline_code): Add FRAME parameter.
* i386-cygwin-tdep.c (i386_cygwin_skip_trampoline_code): Pass
frame to i386_pe_skip_trampoline_code.
* ia64-tdep.h (struct gdbarch_tdep): Add GDBARCH parameter
to sigcontext_register_address callback.
* ia64-tdep.c (ia64_find_global_pointer): Add GDBARCH parameter.
(ia64_find_unwind_table): Pass architecture to
ia64_find_global_pointer.
(find_extant_func_descr): Add GDBARCH parameter.
(find_func_descr): Pass architecture to find_extant_func_descr
and ia64_find_global_pointer.
(ia64_sigtramp_frame_init_saved_regs): Pass architecture to
tdep->sigcontext_register_address callback.
* ia64-linux-tdep.c (ia64_linux_sigcontext_register_address): Add
GDBARCH parameter.
* iq2000-tdep.c (iq2000_scan_prologue): Add GDBARCH parameter.
(iq2000_frame_cache): Pass architecture to iq2000_scan_prologue.
* lm32-tdep.c (lm32_analyze_prologue): Add GDBARCH parameter.
(lm32_skip_prologue, lm32_frame_cache): Pass architecture to
lm32_analyze_prologue.
* m32r-tdep.c (decode_prologue): Add GDBARCH parameter.
(m32r_skip_prologue): Pass architecture to decode_prologue.
* m68hc11-tdep.c (m68hc11_analyze_instruction): Add GDBARCH parameter.
(m68hc11_scan_prologue): Pass architecture to
m68hc11_analyze_instruction.
* m68k-tdep.c (m68k_analyze_frame_setup): Add GDBARCH parameter.
(m68k_analyze_prologue): Pass architecture to
m68k_analyze_frame_setup.
* m88k-tdep.c (m88k_fetch_instruction): Add BYTE_ORDER parameter.
(m88k_analyze_prologue): Add GDBARCH parameter. Pass byte order
to m88k_fetch_instruction.
(m88k_skip_prologue): Pass architecture to m88k_analyze_prologue.
(m88k_frame_cache): Likewise.
* mep-tdep.c (mep_get_insn): Add GDBARCH parameter.
(mep_analyze_prologue): Pass architecture to mep_get_insn.
* mips-tdep.c (mips_fetch_instruction): Add GDBARCH parameter.
(mips32_next_pc): Pass architecture to mips_fetch_instruction.
(deal_with_atomic_sequence): Likewise.
(unpack_mips16): Add GDBARCH parameter, pass to mips_fetch_instruction.
(mips16_scan_prologue): Likewise.
(mips32_scan_prologue): Likewise.
(mips16_in_function_epilogue_p): Likewise.
(mips32_in_function_epilogue_p): Likewise.
(mips_about_to_return): Likewise.
(mips_insn16_frame_cache): Pass architecture to mips16_scan_prologue.
(mips_insn32_frame_cache): Pass architecture to mips32_scan_prologue.
(mips_skip_prologue): Pass architecture to mips16_scan_prologue
and mips32_scan_prologue.
(mips_in_function_epilogue_p): Pass architecture to
mips16_in_function_epilogue_p and
mips32_in_function_epilogue_p.
(heuristic_proc_start): Pass architecture to mips_fetch_instruction
and mips_about_to_return.
(mips_skip_mips16_trampoline_code): Pass architecture to
mips_fetch_instruction.
(fetch_mips_16): Add GDBARCH parameter.
(mips16_next_pc): Pass architecture to fetch_mips_16.
(extended_mips16_next_pc): Pass architecture to unpack_mips16 and
fetch_mips_16.
* objc-lang.c (read_objc_method, read_objc_methlist_nmethods,
read_objc_methlist_method, read_objc_object, read_objc_super,
read_objc_class): Add GDBARCH parameter.
(find_implementation_from_class): Add GDBARCH parameter, pass
to read_objc_class, read_objc_methlist_nmethods, and
read_objc_methlist_method.
(find_implementation): Add GDBARCH parameter, pass to
read_objc_object and find_implementation_from_class.
(resolve_msgsend, resolve_msgsend_stret): Pass architecture
to find_implementation.
(resolve_msgsend_super, resolve_msgsend_super_stret): Pass
architecture to read_objc_super and find_implementation_from_class.
* ppc64-linux-tdep.c (ppc64_desc_entry_point): Add GDBARCH parameter.
(ppc64_standard_linkage1_target, ppc64_standard_linkage2_target,
ppc64_standard_linkage3_target): Pass architecture to
ppc64_desc_entry_point.
* rs6000-tdep.c (bl_to_blrl_insn_p): Add BYTE_ORDER parameter.
(skip_prologue): Pass byte order to bl_to_blrl_insn_p.
(rs6000_fetch_instruction): Add GDBARCH parameter.
(rs6000_skip_stack_check): Add GDBARCH parameter, pass to
rs6000_fetch_instruction.
(skip_prologue): Pass architecture to rs6000_fetch_instruction.
* remote-mips.c (mips_store_word): Return old_contents as host
integer value instead of target bytes.
* s390-tdep.c (struct s390_prologue_data): Add BYTE_ORDER member.
(s390_analyze_prologue): Initialize it.
(extend_simple_arg): Add GDBARCH parameter.
(s390_push_dummy_call): Pass architecture to extend_simple_arg.
* scm-lang.c (scm_get_field): Add BYTE_ORDER parameter.
* scm-lang.h (scm_get_field): Add BYTE_ORDER parameter.
(SCM_CAR, SCM_CDR): Pass SCM_BYTE_ORDER to scm_get_field.
* scm-valprint.c (scm_scmval_print): Likewise.
(scm_scmlist_print, scm_ipruk, scm_scmval_print): Define
SCM_BYTE_ORDER.
* sh64-tdep.c (look_for_args_moves): Add GDBARCH parameter.
(sh64_skip_prologue_hard_way): Add GDBARCH parameter, pass to
look_for_args_moves.
(sh64_skip_prologue): Pass architecture to
sh64_skip_prologue_hard_way.
* sh-tdep.c (sh_analyze_prologue): Add GDBARCH parameter.
(sh_skip_prologue): Pass architecture to sh_analyze_prologue.
(sh_frame_cache): Likewise.
* solib-irix.c (extract_mips_address): Add GDBARCH parameter.
(fetch_lm_info, irix_current_sos, irix_open_symbol_file_object):
Pass architecture to extract_mips_address.
* sparc-tdep.h (sparc_fetch_wcookie): Add GDBARCH parameter.
* sparc-tdep.c (sparc_fetch_wcookie): Add GDBARCH parameter.
(sparc_supply_rwindow, sparc_collect_rwindow): Pass architecture
to sparc_fetch_wcookie.
(sparc32_frame_prev_register): Likewise.
* sparc64-tdep.c (sparc64_frame_prev_register): Likewise.
* sparc32nbsd-tdep.c (sparc32nbsd_sigcontext_saved_regs): Likewise.
* sparc64nbsd-tdep.c (sparc64nbsd_sigcontext_saved_regs): Likewise.
* spu-tdep.c (spu_analyze_prologue): Add GDBARCH parameter.
(spu_skip_prologue): Pass architecture to spu_analyze_prologue.
(spu_virtual_frame_pointer): Likewise.
(spu_frame_unwind_cache): Likewise.
(info_spu_mailbox_list): Add BYTE_ORER parameter.
(info_spu_mailbox_command): Pass byte order to info_spu_mailbox_list.
(info_spu_dma_cmdlist): Add BYTE_ORER parameter.
(info_spu_dma_command, info_spu_proxydma_command): Pass byte order
to info_spu_dma_cmdlist.
* symfile.c (read_target_long_array): Add GDBARCH parameter.
(simple_read_overlay_table, simple_read_overlay_region_table,
simple_overlay_update_1): Pass architecture to read_target_long_array.
* v850-tdep.c (v850_analyze_prologue): Add GDBARCH parameter.
(v850_frame_cache): Pass architecture to v850_analyze_prologue.
* xstormy16-tdep.c (xstormy16_analyze_prologue): Add GDBARCH
parameter.
(xstormy16_skip_prologue, xstormy16_frame_cache): Pass architecture
to xstormy16_analyze_prologue.
(xstormy16_resolve_jmp_table_entry): Add GDBARCH parameter.
(xstormy16_find_jmp_table_entry): Likewise.
(xstormy16_skip_trampoline_code): Pass architecture to
xstormy16_resolve_jmp_table_entry.
(xstormy16_pointer_to_address): Likewise.
(xstormy16_address_to_pointer): Pass architecture to
xstormy16_find_jmp_table_entry.
* xtensa-tdep.c (call0_track_op): Add GDBARCH parameter.
(call0_analyze_prologue): Add GDBARCH parameter, pass to
call0_track_op.
(call0_frame_cache): Pass architecture to call0_analyze_prologue.
(xtensa_skip_prologue): Likewise.
2009-07-03 01:25:59 +08:00
|
|
|
|
sp = extract_unsigned_integer (buf, 8, byte_order);
|
* x86-64-tdep.h (x86_64_num_regs, x86_64_num_gregs): Remove
variable declarations.
(x86_64_register_number, x86_64_register_name): Remove prototypes.
(x86_64_linux_frame_saved_pc, x86_64_linux+saved_pc_after_call,
x86_64_linux_in_sigtramp, x86_64_linux_frame_chain,
x86_64_init_frame_pc, x86_64_init_frame_pc,
x86_64_function_has_prologue): Remove prototypes.
(X86_64_NUM_GREGS): New define.
(x86_64_supply_fxsave, x86_64_fill_fxsave): New prototypes.
* x86-64-tdep.c: Don't include "dwarf2cfi.h". Include
"dummy_frame.h", "frame.h", "frame-base.h", "frame-unwind.h".
(RAX_REGNUM, RDX_REGNUM, RDI_REGNUM, EFLAGS_REGNUM, ST0_REGNUM,
XMM1_REGNUM): Remove defines.
(X86_64_RAX_REGNUM, X86_64_RDX_REGNUM, X86_64_RDI_REGNUM,
X86_64_RBP_REGNUM, X86_64_RSP_REGNUM, X86_64_RIP_REGNUM,
X86_64_EFLAGS_REGNUM, X86_64_ST0_REGNUM, X86_64_XMM0_REGNUM,
X86_64_XMM1_REGNUM): New defines.
(struct x86_64_register_info): Renamed from `struct
register_info'. Remove `size' member.
(x86_64_register_info_table): Remove variable.
(x86_64_register_info): New variable.
(X86_64_NUM_REGS): New define.
(X86_64_NUM_GREGS): Remove define.
(x86_64_num_regs, x86_64_num_gregs): Remove variables.
(x86_64_dwarf2gdb_regno_map, x86_64_dwarf2gdb_regno_map_length):
Remove variables.
(x86_54_dwarf2_reg_to_regnum): Remove function.
(x86_64_dwarf_regmap, x86_64_dwarf_regmap_len): New variables.
(x86_64_dwarf_reg_to_regnum): New function.
(x86_64_register_name): Rewrite.
(x86_64_register_raw_size): Remove function.
(x86_64_register_byte_table): Remove variable.
(x86_64_register_byte): Remove function.
(x86_64_register_virtual_type): Remove function.
(x86_64_register_type): New function.
(x86_64_register_convertible, x86_64_register_convert_to_virtual,
x86_64_register_convert_to_raw): Remove functions.
(x86_64_push_return_address, x86_64_pop_frame): Remove functon.
(x86_64_use_struct_convention): Make static. Adjust for renamed
defines.
(x86_64_frame_init_saved_regs): Remove function.
(x86_64_push_arguments): Make static. Change to accept a regcache
as argument.
(x86_64_store_return_value, x86_64_extract_return_value): Make
static. Rewrite based on i386 counterparts.
(x86_64_push_dummy_call): New function.
(X86_64_NUM_SAVED_REGS): New define.
(x86_64_register_number): Remove function.
(x86_64_store_struct_return): Remove function.
(x86_64_frameless_function_invocation,
x86_64_function_has_prologue): Remove functions.
(PROLOG_BUFSIZE): Remove define.
(struct x86_64_frame_cache): New structure.
(x86_64_alloc_frame_cache, x86_64_analyze_prologue,
x86_64_frame_cache, x86_64_frame_this_id,
x86_64_frame_prev_register, x86_64_frame_p,
x86_64_sigtramp_frame_cache, x86_64_sigtramp_frame_this_id,
x86_64_sigtramp_frame_prev_register, x86_sigtramp_frame_p): New
functions.
(x86_64_frame_unwind, x86_64_sigtramp_frame_unwind): New
variables.
(x86_64_skip_prologue): Rewrite in terms of
x86_64_analyze_prologue.
(x86_64_frame_base_address): New function.
(x86_64_frame_base): New variable.
(x86_64_save_dummy_frame_tos, x86_64_unwind_dummy_id): Rewrite.
(x86_64_init_abi): Set register_type and push_dummy_call. Don't
set deprecated_fp_regnum, deprecated_register_size,
deprecated_register_bytes, register_raw_size, register_byte,
register_virtual_type, register_convertiable,
register_convert_to_virtual, convert_to_raw,
deprecated_get_saved_register, deprecated_target_read_fp,
deprecated_push_arguments, deprecated_push_return_address,
deprecated_pop_frame, deprecated_store_struct_return,
deprecated_frame_init_saved_regs, deprecated_frame_chain,
frameless_function_invocation, deprecated_frame_saved_pc,
deprecated_saved_pc_after_call, frame_num_args, pc_in_sigtramp,
dwarf2_build_frame_info, deprecated_init_extra_frame_info,
deprecated_init_frame_pc and virtual_frame_pointer. Call
frame_unwind_append_predicate to register x86_64_sigtramp_frame_p
and x86_64_frame_p. Call frame_base_set_default to register
x86_64_frame_base.
(I387_FISEG_REGNUM, I387_FOSEG_REGNUM): New defines.
(x86_64_supply_fxsave, x86_64_fill_fxsave): New functions.
(_initialize_x86_64_tdep): Remove function.
* x86-64-linux-tdep.c: Don't include "dwarf2cfi.h".
(LINUX_SIGINFO_SIZE, LINUX_UCONTEXT_SIGCONTEXT_OFFSET,
LINUX_SIGCONTEXT_PC_OFFSET, LINUX_SIGCONTEXT_FP_OFFSET): Don't
define.
(X86_64_LINUX_UCONTEXT_SIGCONTEXT_OFFSET): Define.
(x86_64_linux_sigcontext_addr): Rewrite.
(x86_64_linux_sigtramp_saved_pc, x86_64_linux_saved_pc_after_call,
x86_64_linux_frame_saved_pc): Remove functions.
(x86_64_linux_pc_in_sigtramp): Renamed from
x86_64_linux_in_sigtramp. Try harder to recognize a signal
trampoline.
(x86_64_linux_frame_chain, x86_64_init_frame_pc):
Remove_functions.
(x86_64_linux_init_abi): Set pc_in_sigtramp. Initialize
TDEP->sigcontext_addr, TDEP->sc_pc_offset and TDEP->sc_sp_offset.
* x86-64-linux-nat.c: Sync with i386-linux-tdep.c.
(x86_64_regmap): Rename to regmap.
(GETREGS_SUPPLIES): Use X86_64_NUM_GREGS instead of
x86_64_num_gregs.
(supply_gregset, fill_gregset): Likewise. Use regmap instead of
x86_64_regmap.
(x86_64_fxsave_offset): Remove function.
(supply_fpregset): Simply call x86_64_supply_fxsave.
(fill_fpregset): Simply call x86_64_fill_fxsave.
(fetch_inferior_registers, store_inferior_registers): Avoid
asignment in if-statement.
(LINUX_SYSCALL_LEN, LINUX_SYSCALL_REGNUM, SYS_Sigreturn,
SYS_rt_sigreturn, LINUX_SIGCONTEXT_EFLAGS_OFFSET,
LINUX_UCONTEXT_SIGCONTEXT_OFFSET): Remove defines.
(fetch_core_registers): Remove function.
(linux_elf_core_fns): Remove.
(offsetoff): Don't define.
(_initialize_x86_64_linux_nat, kernel_u_size): Remove functions.
* config/i386/x86-64linux.mt (TDEPFILES): Add i386-linux-tdep.o.
* config/i386/x86-64linux.mh (NATDEPFILES): Remove core-aout.o,
add core-regset.o.
* config/i386/nm-x86-64linux.h: Use NM_X86_64_LINUX_H for
protection against multiple includes instead of NM_X86_64_h. Add
various comments. Include "config/nm-linux.h". Don't include
<signal.h>.
(REGISTER_U_ADDR, KERNEL_U_SIZE, U_REGS_OFFSET, KERN_U_ADDR,
GET_THREAD_SIGNALS): Remove defines.
(x86_64_register_u_addr, kernel_u_size,
lin_thread_get_thread_signals): Remove prototypes.
(PTRACE_ARG3_TYPE, PTRACE_XFER_TYPE): Define to `long'.
[HAVE_LINK_H]: Don't include "solib.h".
[HAVE_LINK_H] (SVR4_SHARED_LIBS): Remove define.
* config/i386/tm-x86-64linux.h: Fix comments.
* Makefile.in (x86-64-linux-nat.o, x86_64-linux-tdep.o,
x86-64-tdep.o): Update dependencies.
2003-05-31 16:15:38 +08:00
|
|
|
|
|
|
|
|
|
/* The sigcontext structure is part of the user context. A pointer
|
|
|
|
|
to the user context is passed as the third argument to the signal
|
|
|
|
|
handler, i.e. in %rdx. Unfortunately %rdx isn't preserved across
|
|
|
|
|
function calls so we can't use it. Fortunately the user context
|
|
|
|
|
is part of the signal frame and the unwound %rsp directly points
|
|
|
|
|
at it. */
|
2004-02-23 04:29:48 +08:00
|
|
|
|
return sp + AMD64_LINUX_UCONTEXT_SIGCONTEXT_OFFSET;
|
2002-10-24 Michal Ludvig <mludvig@suse.cz>
* dwarf2cfi.c (struct context)
(struct context_reg): Moved to dwarf2cfi.h
(context_alloc, frame_state_alloc, context_cpy):
Made extern instead of static, removed prototypes.
* dwarf2cfi.h (struct context)
(struct context_reg): New, moved from dwarf2cfi.c
(context_alloc, frame_state_alloc, context_cpy):
New prototypes.
* x86-64-linux-tdep.c (x86_64_linux_sigtramp_saved_pc):
Changed from static to extern.
(LINUX_SIGINFO_SIZE, LINUX_SIGCONTEXT_PC_OFFSET)
(LINUX_SIGCONTEXT_FP_OFFSET)
(LINUX_UCONTEXT_SIGCONTEXT_OFFSET): Adjusted.
(x86_64_linux_in_sigtramp, x86_64_linux_frame_chain)
(x86_64_init_frame_pc, x86_64_init_extra_frame_info): New.
* x86-64-tdep.c (x86_64_gdbarch_init): Several
set_gdbarch_*() calls now use x86-64 specific functions
instead of DWARF2 CFI ones.
* x86-64-tdep.h (x86_64_linux_in_sigtramp)
(x86_64_linux_frame_chain, x86_64_init_frame_pc)
(x86_64_init_extra_frame_info): New prototypes.
2002-10-24 09:27:43 +08:00
|
|
|
|
}
|
2002-12-22 05:09:58 +08:00
|
|
|
|
|
|
|
|
|
|
2009-09-15 11:30:08 +08:00
|
|
|
|
static LONGEST
|
|
|
|
|
amd64_linux_get_syscall_number (struct gdbarch *gdbarch,
|
|
|
|
|
ptid_t ptid)
|
|
|
|
|
{
|
|
|
|
|
struct regcache *regcache = get_thread_regcache (ptid);
|
|
|
|
|
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
|
|
|
|
|
/* The content of a register. */
|
|
|
|
|
gdb_byte buf[8];
|
|
|
|
|
/* The result. */
|
|
|
|
|
LONGEST ret;
|
|
|
|
|
|
|
|
|
|
/* Getting the system call number from the register.
|
|
|
|
|
When dealing with x86_64 architecture, this information
|
|
|
|
|
is stored at %rax register. */
|
|
|
|
|
regcache_cooked_read (regcache, AMD64_LINUX_ORIG_RAX_REGNUM, buf);
|
|
|
|
|
|
|
|
|
|
ret = extract_signed_integer (buf, 8, byte_order);
|
|
|
|
|
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
2003-06-01 00:11:47 +08:00
|
|
|
|
/* From <asm/sigcontext.h>. */
|
2004-02-23 04:29:48 +08:00
|
|
|
|
static int amd64_linux_sc_reg_offset[] =
|
2003-06-01 00:11:47 +08:00
|
|
|
|
{
|
|
|
|
|
13 * 8, /* %rax */
|
|
|
|
|
11 * 8, /* %rbx */
|
|
|
|
|
14 * 8, /* %rcx */
|
|
|
|
|
12 * 8, /* %rdx */
|
|
|
|
|
9 * 8, /* %rsi */
|
|
|
|
|
8 * 8, /* %rdi */
|
|
|
|
|
10 * 8, /* %rbp */
|
|
|
|
|
15 * 8, /* %rsp */
|
|
|
|
|
0 * 8, /* %r8 */
|
|
|
|
|
1 * 8, /* %r9 */
|
|
|
|
|
2 * 8, /* %r10 */
|
|
|
|
|
3 * 8, /* %r11 */
|
|
|
|
|
4 * 8, /* %r12 */
|
|
|
|
|
5 * 8, /* %r13 */
|
|
|
|
|
6 * 8, /* %r14 */
|
|
|
|
|
7 * 8, /* %r15 */
|
|
|
|
|
16 * 8, /* %rip */
|
|
|
|
|
17 * 8, /* %eflags */
|
|
|
|
|
|
2004-01-10 20:52:41 +08:00
|
|
|
|
/* FIXME: kettenis/2002030531: The registers %cs, %fs and %gs are
|
2003-06-01 00:11:47 +08:00
|
|
|
|
available in `struct sigcontext'. However, they only occupy two
|
|
|
|
|
bytes instead of four, which makes using them here rather
|
|
|
|
|
difficult. Leave them out for now. */
|
2004-01-10 20:52:41 +08:00
|
|
|
|
-1, /* %cs */
|
|
|
|
|
-1, /* %ss */
|
|
|
|
|
-1, /* %ds */
|
|
|
|
|
-1, /* %es */
|
2003-06-01 00:11:47 +08:00
|
|
|
|
-1, /* %fs */
|
|
|
|
|
-1 /* %gs */
|
|
|
|
|
};
|
|
|
|
|
|
2006-08-19 23:15:18 +08:00
|
|
|
|
static int
|
|
|
|
|
amd64_linux_register_reggroup_p (struct gdbarch *gdbarch, int regnum,
|
|
|
|
|
struct reggroup *group)
|
|
|
|
|
{
|
|
|
|
|
if (regnum == AMD64_LINUX_ORIG_RAX_REGNUM)
|
|
|
|
|
return (group == system_reggroup
|
|
|
|
|
|| group == save_reggroup
|
|
|
|
|
|| group == restore_reggroup);
|
2010-02-11 05:11:42 +08:00
|
|
|
|
return i386_register_reggroup_p (gdbarch, regnum, group);
|
2006-08-19 23:15:18 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Set the program counter for process PTID to PC. */
|
|
|
|
|
|
|
|
|
|
static void
|
2007-06-16 06:44:56 +08:00
|
|
|
|
amd64_linux_write_pc (struct regcache *regcache, CORE_ADDR pc)
|
2006-08-19 23:15:18 +08:00
|
|
|
|
{
|
2007-06-16 06:44:56 +08:00
|
|
|
|
regcache_cooked_write_unsigned (regcache, AMD64_RIP_REGNUM, pc);
|
2006-08-19 23:15:18 +08:00
|
|
|
|
|
|
|
|
|
/* We must be careful with modifying the program counter. If we
|
|
|
|
|
just interrupted a system call, the kernel might try to restart
|
|
|
|
|
it when we resume the inferior. On restarting the system call,
|
|
|
|
|
the kernel will try backing up the program counter even though it
|
|
|
|
|
no longer points at the system call. This typically results in a
|
|
|
|
|
SIGSEGV or SIGILL. We can prevent this by writing `-1' in the
|
|
|
|
|
"orig_rax" pseudo-register.
|
|
|
|
|
|
|
|
|
|
Note that "orig_rax" is saved when setting up a dummy call frame.
|
|
|
|
|
This means that it is properly restored when that frame is
|
|
|
|
|
popped, and that the interrupted system call will be restarted
|
|
|
|
|
when we resume the inferior on return from a function call from
|
|
|
|
|
within GDB. In all other cases the system call will not be
|
|
|
|
|
restarted. */
|
2007-06-16 06:44:56 +08:00
|
|
|
|
regcache_cooked_write_unsigned (regcache, AMD64_LINUX_ORIG_RAX_REGNUM, -1);
|
2006-08-19 23:15:18 +08:00
|
|
|
|
}
|
|
|
|
|
|
2009-09-21 13:57:09 +08:00
|
|
|
|
/* Record all registers but IP register for process-record. */
|
2009-08-10 11:06:34 +08:00
|
|
|
|
|
2009-09-21 13:57:09 +08:00
|
|
|
|
static int
|
|
|
|
|
amd64_all_but_ip_registers_record (struct regcache *regcache)
|
|
|
|
|
{
|
2013-03-11 16:45:54 +08:00
|
|
|
|
if (record_full_arch_list_add_reg (regcache, AMD64_RAX_REGNUM))
|
2009-09-21 13:57:09 +08:00
|
|
|
|
return -1;
|
2013-03-11 16:45:54 +08:00
|
|
|
|
if (record_full_arch_list_add_reg (regcache, AMD64_RCX_REGNUM))
|
2009-09-21 13:57:09 +08:00
|
|
|
|
return -1;
|
2013-03-11 16:45:54 +08:00
|
|
|
|
if (record_full_arch_list_add_reg (regcache, AMD64_RDX_REGNUM))
|
2009-09-21 13:57:09 +08:00
|
|
|
|
return -1;
|
2013-03-11 16:45:54 +08:00
|
|
|
|
if (record_full_arch_list_add_reg (regcache, AMD64_RBX_REGNUM))
|
2009-09-21 13:57:09 +08:00
|
|
|
|
return -1;
|
2013-03-11 16:45:54 +08:00
|
|
|
|
if (record_full_arch_list_add_reg (regcache, AMD64_RSP_REGNUM))
|
2009-09-21 13:57:09 +08:00
|
|
|
|
return -1;
|
2013-03-11 16:45:54 +08:00
|
|
|
|
if (record_full_arch_list_add_reg (regcache, AMD64_RBP_REGNUM))
|
2009-09-21 13:57:09 +08:00
|
|
|
|
return -1;
|
2013-03-11 16:45:54 +08:00
|
|
|
|
if (record_full_arch_list_add_reg (regcache, AMD64_RSI_REGNUM))
|
2009-09-21 13:57:09 +08:00
|
|
|
|
return -1;
|
2013-03-11 16:45:54 +08:00
|
|
|
|
if (record_full_arch_list_add_reg (regcache, AMD64_RDI_REGNUM))
|
2009-09-21 13:57:09 +08:00
|
|
|
|
return -1;
|
2013-03-11 16:45:54 +08:00
|
|
|
|
if (record_full_arch_list_add_reg (regcache, AMD64_R8_REGNUM))
|
2009-09-21 13:57:09 +08:00
|
|
|
|
return -1;
|
2013-03-11 16:45:54 +08:00
|
|
|
|
if (record_full_arch_list_add_reg (regcache, AMD64_R9_REGNUM))
|
2009-09-21 13:57:09 +08:00
|
|
|
|
return -1;
|
2013-03-11 16:45:54 +08:00
|
|
|
|
if (record_full_arch_list_add_reg (regcache, AMD64_R10_REGNUM))
|
2009-09-21 13:57:09 +08:00
|
|
|
|
return -1;
|
2013-03-11 16:45:54 +08:00
|
|
|
|
if (record_full_arch_list_add_reg (regcache, AMD64_R11_REGNUM))
|
2009-09-21 13:57:09 +08:00
|
|
|
|
return -1;
|
2013-03-11 16:45:54 +08:00
|
|
|
|
if (record_full_arch_list_add_reg (regcache, AMD64_R12_REGNUM))
|
2009-09-21 13:57:09 +08:00
|
|
|
|
return -1;
|
2013-03-11 16:45:54 +08:00
|
|
|
|
if (record_full_arch_list_add_reg (regcache, AMD64_R13_REGNUM))
|
2009-09-21 13:57:09 +08:00
|
|
|
|
return -1;
|
2013-03-11 16:45:54 +08:00
|
|
|
|
if (record_full_arch_list_add_reg (regcache, AMD64_R14_REGNUM))
|
2009-09-21 13:57:09 +08:00
|
|
|
|
return -1;
|
2013-03-11 16:45:54 +08:00
|
|
|
|
if (record_full_arch_list_add_reg (regcache, AMD64_R15_REGNUM))
|
2009-09-21 13:57:09 +08:00
|
|
|
|
return -1;
|
2013-03-11 16:45:54 +08:00
|
|
|
|
if (record_full_arch_list_add_reg (regcache, AMD64_EFLAGS_REGNUM))
|
2009-09-21 13:57:09 +08:00
|
|
|
|
return -1;
|
2009-08-10 11:06:34 +08:00
|
|
|
|
|
2009-09-21 13:57:09 +08:00
|
|
|
|
return 0;
|
|
|
|
|
}
|
2009-08-10 11:06:34 +08:00
|
|
|
|
|
2009-09-09 06:50:59 +08:00
|
|
|
|
/* amd64_canonicalize_syscall maps from the native amd64 Linux set
|
|
|
|
|
of syscall ids into a canonical set of syscall ids used by
|
|
|
|
|
process record. */
|
|
|
|
|
|
|
|
|
|
static enum gdb_syscall
|
2011-12-11 10:34:26 +08:00
|
|
|
|
amd64_canonicalize_syscall (enum amd64_syscall syscall_number)
|
2009-09-09 06:50:59 +08:00
|
|
|
|
{
|
2011-12-11 10:34:26 +08:00
|
|
|
|
switch (syscall_number) {
|
2009-09-09 06:50:59 +08:00
|
|
|
|
case amd64_sys_read:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_read:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_read;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_write:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_write:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_write;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_open:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_open:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_open;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_close:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_close:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_close;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_newstat:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_newstat:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_newstat;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_newfstat:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_newfstat:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_newfstat;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_newlstat:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_newlstat:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_newlstat;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_poll:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_poll:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_poll;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_lseek:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_lseek:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_lseek;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_mmap:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_mmap:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_mmap2;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_mprotect:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_mprotect:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_mprotect;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_munmap:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_munmap:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_munmap;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_brk:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_brk:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_brk;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_rt_sigaction:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_rt_sigaction:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_rt_sigaction;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_rt_sigprocmask:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_rt_sigprocmask:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_rt_sigprocmask;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_rt_sigreturn:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_rt_sigreturn:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_rt_sigreturn;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_ioctl:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_ioctl:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_ioctl;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_pread64:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_pread64:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_pread64;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_pwrite64:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_pwrite64:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_pwrite64;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_readv:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_readv:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_readv;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_writev:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_writev:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_writev;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_access:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_access:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_access;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_pipe:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_pipe:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_pipe;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_select:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_select:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_select;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_sched_yield:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_sched_yield:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_sched_yield;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_mremap:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_mremap:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_mremap;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_msync:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_msync:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_msync;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_mincore:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_mincore:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_mincore;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_madvise:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_madvise:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_madvise;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_shmget:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_shmget:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_shmget;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_shmat:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_shmat:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_shmat;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_shmctl:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_shmctl:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_shmctl;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_dup:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_dup:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_dup;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_dup2:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_dup2:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_dup2;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_pause:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_pause:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_pause;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_nanosleep:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_nanosleep:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_nanosleep;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_getitimer:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_getitimer:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_getitimer;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_alarm:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_alarm:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_alarm;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_setitimer:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_setitimer:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_setitimer;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_getpid:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_getpid:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_getpid;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_sendfile64:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_sendfile64:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_sendfile64;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_socket:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_socket:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_socket;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_connect:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_connect:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_connect;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_accept:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_accept:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_accept;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_sendto:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_sendto:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_sendto;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_recvfrom:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_recvfrom:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_recvfrom;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_sendmsg:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_sendmsg:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_sendmsg;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_recvmsg:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_recvmsg:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_recvmsg;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_shutdown:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_shutdown:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_shutdown;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_bind:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_bind:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_bind;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_listen:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_listen:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_listen;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_getsockname:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_getsockname:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_getsockname;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_getpeername:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_getpeername:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_getpeername;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_socketpair:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_socketpair:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_socketpair;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_setsockopt:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_setsockopt:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_setsockopt;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_getsockopt:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_getsockopt:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_getsockopt;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_clone:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_clone:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_clone;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_fork:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_fork:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_fork;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_vfork:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_vfork:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_vfork;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_execve:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_execve:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_execve;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_exit:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_exit:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_exit;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_wait4:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_wait4:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_wait4;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_kill:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_kill:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_kill;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_uname:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_uname:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_uname;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_semget:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_semget:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_semget;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_semop:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_semop:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_semop;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_semctl:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_semctl:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_semctl;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_shmdt:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_shmdt:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_shmdt;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_msgget:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_msgget:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_msgget;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_msgsnd:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_msgsnd:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_msgsnd;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_msgrcv:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_msgrcv:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_msgrcv;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_msgctl:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_msgctl:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_msgctl;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_fcntl:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_fcntl:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_fcntl;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_flock:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_flock:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_flock;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_fsync:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_fsync:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_fsync;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_fdatasync:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_fdatasync:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_fdatasync;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_truncate:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_truncate:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_truncate;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_ftruncate:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_ftruncate:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_ftruncate;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_getdents:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_getdents:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_getdents;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_getcwd:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_getcwd:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_getcwd;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_chdir:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_chdir:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_chdir;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_fchdir:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_fchdir:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_fchdir;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_rename:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_rename:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_rename;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_mkdir:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_mkdir:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_mkdir;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_rmdir:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_rmdir:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_rmdir;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_creat:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_creat:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_creat;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_link:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_link:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_link;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_unlink:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_unlink:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_unlink;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_symlink:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_symlink:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_symlink;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_readlink:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_readlink:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_readlink;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_chmod:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_chmod:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_chmod;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_fchmod:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_fchmod:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_fchmod;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_chown:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_chown:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_chown;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_fchown:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_fchown:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_fchown;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_lchown:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_lchown:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_lchown;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_umask:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_umask:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_umask;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_gettimeofday:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_gettimeofday:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_gettimeofday;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_getrlimit:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_getrlimit:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_getrlimit;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_getrusage:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_getrusage:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_getrusage;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_sysinfo:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_sysinfo:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_sysinfo;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_times:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_times:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_times;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_ptrace:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_ptrace:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_ptrace;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_getuid:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_getuid:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_getuid;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_syslog:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_syslog:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_syslog;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_getgid:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_getgid:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_getgid;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_setuid:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_setuid:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_setuid;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_setgid:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_setgid:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_setgid;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_geteuid:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_geteuid:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_geteuid;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_getegid:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_getegid:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_getegid;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_setpgid:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_setpgid:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_setpgid;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_getppid:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_getppid:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_getppid;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_getpgrp:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_getpgrp:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_getpgrp;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_setsid:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_setsid:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_setsid;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_setreuid:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_setreuid:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_setreuid;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_setregid:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_setregid:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_setregid;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_getgroups:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_getgroups:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_getgroups;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_setgroups:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_setgroups:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_setgroups;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_setresuid:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_setresuid:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_setresuid;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_getresuid:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_getresuid:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_getresuid;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_setresgid:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_setresgid:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_setresgid;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_getresgid:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_getresgid:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_getresgid;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_getpgid:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_getpgid:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_getpgid;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_setfsuid:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_setfsuid:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_setfsuid;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_setfsgid:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_setfsgid:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_setfsgid;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_getsid:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_getsid:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_getsid;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_capget:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_capget:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_capget;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_capset:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_capset:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_capset;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_rt_sigpending:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_rt_sigpending:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_rt_sigpending;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_rt_sigtimedwait:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_rt_sigtimedwait:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_rt_sigtimedwait;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_rt_sigqueueinfo:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_rt_sigqueueinfo:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_rt_sigqueueinfo;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_rt_sigsuspend:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_rt_sigsuspend:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_rt_sigsuspend;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_sigaltstack:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_sigaltstack:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_sigaltstack;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_utime:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_utime:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_utime;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_mknod:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_mknod:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_mknod;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_personality:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_personality:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_personality;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_ustat:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_ustat:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_ustat;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_statfs:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_statfs:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_statfs;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_fstatfs:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_fstatfs:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_fstatfs;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_sysfs:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_sysfs:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_sysfs;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_getpriority:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_getpriority:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_getpriority;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_setpriority:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_setpriority:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_setpriority;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_sched_setparam:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_sched_setparam:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_sched_setparam;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_sched_getparam:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_sched_getparam:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_sched_getparam;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_sched_setscheduler:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_sched_setscheduler:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_sched_setscheduler;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_sched_getscheduler:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_sched_getscheduler:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_sched_getscheduler;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_sched_get_priority_max:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_sched_get_priority_max:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_sched_get_priority_max;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_sched_get_priority_min:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_sched_get_priority_min:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_sched_get_priority_min;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_sched_rr_get_interval:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_sched_rr_get_interval:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_sched_rr_get_interval;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_mlock:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_mlock:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_mlock;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_munlock:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_munlock:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_munlock;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_mlockall:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_mlockall:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_mlockall;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_munlockall:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_munlockall:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_munlockall;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_vhangup:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_vhangup:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_vhangup;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_modify_ldt:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_modify_ldt:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_modify_ldt;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_pivot_root:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_pivot_root:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_pivot_root;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_sysctl:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_sysctl:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_sysctl;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_prctl:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_prctl:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_prctl;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_arch_prctl:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_arch_prctl:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return -1; /* Note */
|
|
|
|
|
|
|
|
|
|
case amd64_sys_adjtimex:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_adjtimex:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_adjtimex;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_setrlimit:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_setrlimit:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_setrlimit;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_chroot:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_chroot:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_chroot;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_sync:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_sync:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_sync;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_acct:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_acct:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_acct;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_settimeofday:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_settimeofday:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_settimeofday;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_mount:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_mount:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_mount;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_umount:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_umount:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_umount;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_swapon:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_swapon:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_swapon;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_swapoff:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_swapoff:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_swapoff;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_reboot:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_reboot:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_reboot;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_sethostname:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_sethostname:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_sethostname;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_setdomainname:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_setdomainname:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_setdomainname;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_iopl:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_iopl:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_iopl;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_ioperm:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_ioperm:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_ioperm;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_init_module:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_init_module:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_init_module;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_delete_module:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_delete_module:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_delete_module;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_quotactl:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_quotactl:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_quotactl;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_nfsservctl:
|
|
|
|
|
return gdb_sys_nfsservctl;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_gettid:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_gettid:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_gettid;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_readahead:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_readahead:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_readahead;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_setxattr:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_setxattr:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_setxattr;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_lsetxattr:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_lsetxattr:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_lsetxattr;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_fsetxattr:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_fsetxattr:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_fsetxattr;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_getxattr:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_getxattr:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_getxattr;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_lgetxattr:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_lgetxattr:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_lgetxattr;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_fgetxattr:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_fgetxattr:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_fgetxattr;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_listxattr:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_listxattr:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_listxattr;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_llistxattr:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_llistxattr:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_llistxattr;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_flistxattr:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_flistxattr:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_flistxattr;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_removexattr:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_removexattr:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_removexattr;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_lremovexattr:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_lremovexattr:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_lremovexattr;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_fremovexattr:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_fremovexattr:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_fremovexattr;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_tkill:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_tkill:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_tkill;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_time:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_time:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_time;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_futex:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_futex:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_futex;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_sched_setaffinity:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_sched_setaffinity:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_sched_setaffinity;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_sched_getaffinity:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_sched_getaffinity:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_sched_getaffinity;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_io_setup:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_io_setup:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_io_setup;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_io_destroy:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_io_destroy:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_io_destroy;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_io_getevents:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_io_getevents:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_io_getevents;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_io_submit:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_io_submit:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_io_submit;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_io_cancel:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_io_cancel:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_io_cancel;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_lookup_dcookie:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_lookup_dcookie:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_lookup_dcookie;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_epoll_create:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_epoll_create:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_epoll_create;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_remap_file_pages:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_remap_file_pages:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_remap_file_pages;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_getdents64:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_getdents64:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_getdents64;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_set_tid_address:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_set_tid_address:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_set_tid_address;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_restart_syscall:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_restart_syscall:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_restart_syscall;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_semtimedop:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_semtimedop:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_semtimedop;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_fadvise64:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_fadvise64:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_fadvise64;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_timer_create:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_timer_create:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_timer_create;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_timer_settime:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_timer_settime:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_timer_settime;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_timer_gettime:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_timer_gettime:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_timer_gettime;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_timer_getoverrun:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_timer_getoverrun:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_timer_getoverrun;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_timer_delete:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_timer_delete:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_timer_delete;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_clock_settime:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_clock_settime:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_clock_settime;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_clock_gettime:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_clock_gettime:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_clock_gettime;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_clock_getres:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_clock_getres:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_clock_getres;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_clock_nanosleep:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_clock_nanosleep:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_clock_nanosleep;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_exit_group:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_exit_group:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_exit_group;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_epoll_wait:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_epoll_wait:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_epoll_wait;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_epoll_ctl:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_epoll_ctl:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_epoll_ctl;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_tgkill:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_tgkill:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_tgkill;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_utimes:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_utimes:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_utimes;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_mbind:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_mbind:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_mbind;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_set_mempolicy:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_set_mempolicy:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_set_mempolicy;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_get_mempolicy:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_get_mempolicy:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_get_mempolicy;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_mq_open:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_mq_open:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_mq_open;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_mq_unlink:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_mq_unlink:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_mq_unlink;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_mq_timedsend:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_mq_timedsend:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_mq_timedsend;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_mq_timedreceive:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_mq_timedreceive:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_mq_timedreceive;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_mq_notify:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_mq_notify:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_mq_notify;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_mq_getsetattr:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_mq_getsetattr:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_mq_getsetattr;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_kexec_load:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_kexec_load:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_kexec_load;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_waitid:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_waitid:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_waitid;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_add_key:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_add_key:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_add_key;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_request_key:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_request_key:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_request_key;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_keyctl:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_keyctl:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_keyctl;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_ioprio_set:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_ioprio_set:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_ioprio_set;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_ioprio_get:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_ioprio_get:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_ioprio_get;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_inotify_init:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_inotify_init:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_inotify_init;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_inotify_add_watch:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_inotify_add_watch:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_inotify_add_watch;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_inotify_rm_watch:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_inotify_rm_watch:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_inotify_rm_watch;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_migrate_pages:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_migrate_pages:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_migrate_pages;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_openat:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_openat:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_openat;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_mkdirat:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_mkdirat:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_mkdirat;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_mknodat:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_mknodat:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_mknodat;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_fchownat:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_fchownat:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_fchownat;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_futimesat:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_futimesat:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_futimesat;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_newfstatat:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_newfstatat:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_newfstatat;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_unlinkat:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_unlinkat:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_unlinkat;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_renameat:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_renameat:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_renameat;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_linkat:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_linkat:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_linkat;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_symlinkat:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_symlinkat:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_symlinkat;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_readlinkat:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_readlinkat:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_readlinkat;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_fchmodat:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_fchmodat:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_fchmodat;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_faccessat:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_faccessat:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_faccessat;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_pselect6:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_pselect6:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_pselect6;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_ppoll:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_ppoll:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_ppoll;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_unshare:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_unshare:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_unshare;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_set_robust_list:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_set_robust_list:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_set_robust_list;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_get_robust_list:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_get_robust_list:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_get_robust_list;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_splice:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_splice:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_splice;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_tee:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_tee:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_tee;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_sync_file_range:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_sync_file_range:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_sync_file_range;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_vmsplice:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_vmsplice:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_vmsplice;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_move_pages:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_move_pages:
|
2009-09-09 06:50:59 +08:00
|
|
|
|
return gdb_sys_move_pages;
|
|
|
|
|
|
|
|
|
|
default:
|
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2009-09-21 13:57:09 +08:00
|
|
|
|
/* Parse the arguments of current system call instruction and record
|
|
|
|
|
the values of the registers and memory that will be changed into
|
2013-03-11 16:45:54 +08:00
|
|
|
|
"record_full_arch_list". This instruction is "syscall".
|
2009-09-21 13:57:09 +08:00
|
|
|
|
|
|
|
|
|
Return -1 if something wrong. */
|
|
|
|
|
|
|
|
|
|
static struct linux_record_tdep amd64_linux_record_tdep;
|
2013-12-20 06:17:48 +08:00
|
|
|
|
static struct linux_record_tdep amd64_x32_linux_record_tdep;
|
2009-09-21 13:57:09 +08:00
|
|
|
|
|
|
|
|
|
#define RECORD_ARCH_GET_FS 0x1003
|
|
|
|
|
#define RECORD_ARCH_GET_GS 0x1004
|
|
|
|
|
|
2009-08-10 11:06:34 +08:00
|
|
|
|
static int
|
2013-12-20 06:17:48 +08:00
|
|
|
|
amd64_linux_syscall_record_common (struct regcache *regcache,
|
|
|
|
|
struct linux_record_tdep *linux_record_tdep_p)
|
2009-08-10 11:06:34 +08:00
|
|
|
|
{
|
2009-09-09 06:50:59 +08:00
|
|
|
|
int ret;
|
|
|
|
|
ULONGEST syscall_native;
|
|
|
|
|
enum gdb_syscall syscall_gdb = -1;
|
|
|
|
|
|
|
|
|
|
regcache_raw_read_unsigned (regcache, AMD64_RAX_REGNUM, &syscall_native);
|
2009-08-10 11:06:34 +08:00
|
|
|
|
|
2009-09-21 13:57:09 +08:00
|
|
|
|
switch (syscall_native)
|
2009-08-10 11:06:34 +08:00
|
|
|
|
{
|
2009-09-21 13:57:09 +08:00
|
|
|
|
case amd64_sys_rt_sigreturn:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_rt_sigreturn:
|
2009-09-21 13:57:09 +08:00
|
|
|
|
if (amd64_all_but_ip_registers_record (regcache))
|
|
|
|
|
return -1;
|
|
|
|
|
return 0;
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case amd64_sys_arch_prctl:
|
2013-12-20 06:17:48 +08:00
|
|
|
|
case amd64_x32_sys_arch_prctl:
|
2011-02-27 03:41:35 +08:00
|
|
|
|
{
|
|
|
|
|
ULONGEST arg3;
|
2013-12-20 06:17:48 +08:00
|
|
|
|
regcache_raw_read_unsigned (regcache, linux_record_tdep_p->arg3,
|
2011-02-27 03:41:35 +08:00
|
|
|
|
&arg3);
|
|
|
|
|
if (arg3 == RECORD_ARCH_GET_FS || arg3 == RECORD_ARCH_GET_GS)
|
|
|
|
|
{
|
|
|
|
|
CORE_ADDR addr;
|
|
|
|
|
|
|
|
|
|
regcache_raw_read_unsigned (regcache,
|
2013-12-20 06:17:48 +08:00
|
|
|
|
linux_record_tdep_p->arg2,
|
2011-02-27 03:41:35 +08:00
|
|
|
|
&addr);
|
2013-03-11 16:45:54 +08:00
|
|
|
|
if (record_full_arch_list_add_mem
|
2013-12-20 06:17:48 +08:00
|
|
|
|
(addr, linux_record_tdep_p->size_ulong))
|
2011-02-27 03:41:35 +08:00
|
|
|
|
return -1;
|
|
|
|
|
}
|
|
|
|
|
goto record_regs;
|
|
|
|
|
}
|
2009-09-21 13:57:09 +08:00
|
|
|
|
break;
|
2009-09-09 06:50:59 +08:00
|
|
|
|
}
|
|
|
|
|
|
2009-09-21 13:57:09 +08:00
|
|
|
|
syscall_gdb = amd64_canonicalize_syscall (syscall_native);
|
|
|
|
|
|
2009-09-09 06:50:59 +08:00
|
|
|
|
if (syscall_gdb < 0)
|
|
|
|
|
{
|
2009-08-10 11:06:34 +08:00
|
|
|
|
printf_unfiltered (_("Process record and replay target doesn't "
|
2009-09-09 06:50:59 +08:00
|
|
|
|
"support syscall number %s\n"),
|
|
|
|
|
pulongest (syscall_native));
|
2009-08-10 11:06:34 +08:00
|
|
|
|
return -1;
|
|
|
|
|
}
|
2009-09-09 06:50:59 +08:00
|
|
|
|
else
|
2009-08-10 11:06:34 +08:00
|
|
|
|
{
|
2009-09-09 06:50:59 +08:00
|
|
|
|
ret = record_linux_system_call (syscall_gdb, regcache,
|
2013-12-20 06:17:48 +08:00
|
|
|
|
linux_record_tdep_p);
|
2009-08-10 11:06:34 +08:00
|
|
|
|
if (ret)
|
|
|
|
|
return ret;
|
|
|
|
|
}
|
|
|
|
|
|
2009-09-09 06:50:59 +08:00
|
|
|
|
record_regs:
|
2009-08-10 11:06:34 +08:00
|
|
|
|
/* Record the return value of the system call. */
|
2013-03-11 16:45:54 +08:00
|
|
|
|
if (record_full_arch_list_add_reg (regcache, AMD64_RCX_REGNUM))
|
2009-08-10 11:06:34 +08:00
|
|
|
|
return -1;
|
2013-03-11 16:45:54 +08:00
|
|
|
|
if (record_full_arch_list_add_reg (regcache, AMD64_R11_REGNUM))
|
2009-08-10 11:06:34 +08:00
|
|
|
|
return -1;
|
|
|
|
|
|
2009-09-21 13:57:09 +08:00
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
2013-12-20 06:17:48 +08:00
|
|
|
|
static int
|
|
|
|
|
amd64_linux_syscall_record (struct regcache *regcache)
|
|
|
|
|
{
|
|
|
|
|
return amd64_linux_syscall_record_common (regcache,
|
|
|
|
|
&amd64_linux_record_tdep);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
|
amd64_x32_linux_syscall_record (struct regcache *regcache)
|
|
|
|
|
{
|
|
|
|
|
return amd64_linux_syscall_record_common (regcache,
|
|
|
|
|
&amd64_x32_linux_record_tdep);
|
|
|
|
|
}
|
|
|
|
|
|
2009-09-21 13:57:09 +08:00
|
|
|
|
#define AMD64_LINUX_redzone 128
|
|
|
|
|
#define AMD64_LINUX_xstate 512
|
|
|
|
|
#define AMD64_LINUX_frame_size 560
|
|
|
|
|
|
2012-03-01 Pedro Alves <palves@redhat.com>
* amd64-linux-tdep.c (amd64_linux_record_signal): Make static.
* breakpoint.c (create_exception_master_breakpoint, trace_command)
(ftrace_command, strace_command): Make static.
* d-lang.c (_initialize_d_language): Declare.
* dwarf2expr.c (_initialize_dwarf2expr): Declare.
* dwarf2loc.c (_initialize_dwarf2loc):
* dwarf2read.c (process_psymtab_comp_unit): Make static.
* exec.c (exec_get_section_table): Make static.
* i386-linux-tdep.c (i386_linux_record_signal): Make static.
* infcmd.c (ensure_valid_thread, ensure_not_tfind_mode): Make static.
* inferior.c (remove_inferior_command, add_inferior_command)
(clone_inferior_command): Make static.
* linux-nat.c (linux_nat_thread_address_space)
(linux_nat_core_of_thread): Make static.
* linux-tdep.c (_initialize_linux_tdep): Declare.
* objc-lang.c (_initialize_objc_lang): Declare.
* opencl-lang.c (builtin_opencl_type, opencl_language_arch_info):
Make static.
(_initialize_opencl_language): Declare.
* record.c (_initialize_record): Declare.
* remote.c (demand_private_info, remote_get_tib_address)
(remote_supports_cond_tracepoints)
(remote_supports_fast_tracepoints, remote_get_tracepoint_status):
Make static.
* skip.c (_initialize_step_skip): Declare.
* symtab.c (skip_prologue_using_lineinfo): Make static.
* tracepoint.c (delete_trace_state_variable)
(trace_variable_command, delete_trace_variable_command)
(get_uploaded_tsv, find_matching_tracepoint_location)
(find_matching_tsv, create_tsv_from_upload, get_traceframe_info):
Make static.
* value.c (pack_unsigned_long): Make static.
* varobj.c (varobj_ensure_python_env): Make static.
* windows-tdep.c (_initialize_windows_tdep): Declare.
* xml-syscall.c (make_cleanup_free_syscalls_info): Make static.
2012-03-02 05:14:00 +08:00
|
|
|
|
static int
|
2009-09-21 13:57:09 +08:00
|
|
|
|
amd64_linux_record_signal (struct gdbarch *gdbarch,
|
|
|
|
|
struct regcache *regcache,
|
2012-05-25 00:39:15 +08:00
|
|
|
|
enum gdb_signal signal)
|
2009-09-21 13:57:09 +08:00
|
|
|
|
{
|
|
|
|
|
ULONGEST rsp;
|
|
|
|
|
|
|
|
|
|
if (amd64_all_but_ip_registers_record (regcache))
|
|
|
|
|
return -1;
|
|
|
|
|
|
2013-03-11 16:45:54 +08:00
|
|
|
|
if (record_full_arch_list_add_reg (regcache, AMD64_RIP_REGNUM))
|
2009-09-21 13:57:09 +08:00
|
|
|
|
return -1;
|
|
|
|
|
|
|
|
|
|
/* Record the change in the stack. */
|
|
|
|
|
regcache_raw_read_unsigned (regcache, AMD64_RSP_REGNUM, &rsp);
|
|
|
|
|
/* redzone
|
|
|
|
|
sp -= 128; */
|
|
|
|
|
rsp -= AMD64_LINUX_redzone;
|
|
|
|
|
/* This is for xstate.
|
|
|
|
|
sp -= sizeof (struct _fpstate); */
|
|
|
|
|
rsp -= AMD64_LINUX_xstate;
|
|
|
|
|
/* This is for frame_size.
|
|
|
|
|
sp -= sizeof (struct rt_sigframe); */
|
|
|
|
|
rsp -= AMD64_LINUX_frame_size;
|
2013-03-11 16:45:54 +08:00
|
|
|
|
if (record_full_arch_list_add_mem (rsp, AMD64_LINUX_redzone
|
2009-09-21 13:57:09 +08:00
|
|
|
|
+ AMD64_LINUX_xstate
|
|
|
|
|
+ AMD64_LINUX_frame_size))
|
|
|
|
|
return -1;
|
|
|
|
|
|
2013-03-11 16:45:54 +08:00
|
|
|
|
if (record_full_arch_list_add_end ())
|
2009-09-21 13:57:09 +08:00
|
|
|
|
return -1;
|
2009-08-10 11:06:34 +08:00
|
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
|
2010-03-01 23:33:32 +08:00
|
|
|
|
/* Get Linux/x86 target description from core dump. */
|
|
|
|
|
|
|
|
|
|
static const struct target_desc *
|
|
|
|
|
amd64_linux_core_read_description (struct gdbarch *gdbarch,
|
|
|
|
|
struct target_ops *target,
|
|
|
|
|
bfd *abfd)
|
|
|
|
|
{
|
|
|
|
|
/* Linux/x86-64. */
|
2013-07-23 15:02:03 +08:00
|
|
|
|
uint64_t xcr0 = i386_linux_core_read_xcr0 (abfd);
|
2013-11-20 20:02:37 +08:00
|
|
|
|
|
Rename 32- and 64-bit Intel files from "i386" to "x86"
This commit renames nine files that contain code used by both 32- and
64-bit Intel ports such that their names are prefixed with "x86"
rather than "i386". All types, functions and variables within these
files are likewise renamed such that their names are prefixed with
"x86" rather than "i386". This makes GDB follow the convention used
by gdbserver such that 32-bit Intel code lives in files called
"i386-*", 64-bit Intel code lives in files called "amd64-*", and code
for both 32- and 64-bit Intel lives in files called "x86-*".
This commit only renames OS-independent files. The Linux ports of
both GDB and gdbserver now follow the i386/amd64/x86 convention fully.
Some ports still use the old convention where "i386" in file/function/
type/variable names can mean "32-bit only" or "32- and 64-bit" but I
don't want to touch ports I can't fully test except where absolutely
necessary.
gdb/ChangeLog:
* i386-nat.h: Renamed as...
* x86-nat.h: New file. All type, function and variable name
prefixes changed from "i386_" to "x86_". All references updated.
* i386-nat.c: Renamed as...
* x86-nat.c: New file. All type, function and variable name
prefixes changed from "i386_" to "x86_". All references updated.
* common/i386-xstate.h: Renamed as...
* common/x86-xstate.h: New file. All type, function and variable
name prefixes changed from "i386_" to "x86_". All references
updated.
* nat/i386-cpuid.h: Renamed as...
* nat/x86-cpuid.h: New file. All type, function and variable name
prefixes changed from "i386_" to "x86_". All references updated.
* nat/i386-gcc-cpuid.h: Renamed as...
* nat/x86-gcc-cpuid.h: New file. All type, function and variable
name prefixes changed from "i386_" to "x86_". All references
updated.
* nat/i386-dregs.h: Renamed as...
* nat/x86-dregs.h: New file. All type, function and variable name
prefixes changed from "i386_" to "x86_". All references updated.
* nat/i386-dregs.c: Renamed as...
* nat/x86-dregs.c: New file. All type, function and variable name
prefixes changed from "i386_" to "x86_". All references updated.
gdb/gdbserver/ChangeLog:
* i386-low.h: Renamed as...
* x86-low.h: New file. All type, function and variable name
prefixes changed from "i386_" to "x86_". All references updated.
* i386-low.c: Renamed as...
* x86-low.c: New file. All type, function and variable name
prefixes changed from "i386_" to "x86_". All references updated.
2014-08-19 22:16:11 +08:00
|
|
|
|
switch (xcr0 & X86_XSTATE_ALL_MASK)
|
2010-04-22 04:22:20 +08:00
|
|
|
|
{
|
Rename 32- and 64-bit Intel files from "i386" to "x86"
This commit renames nine files that contain code used by both 32- and
64-bit Intel ports such that their names are prefixed with "x86"
rather than "i386". All types, functions and variables within these
files are likewise renamed such that their names are prefixed with
"x86" rather than "i386". This makes GDB follow the convention used
by gdbserver such that 32-bit Intel code lives in files called
"i386-*", 64-bit Intel code lives in files called "amd64-*", and code
for both 32- and 64-bit Intel lives in files called "x86-*".
This commit only renames OS-independent files. The Linux ports of
both GDB and gdbserver now follow the i386/amd64/x86 convention fully.
Some ports still use the old convention where "i386" in file/function/
type/variable names can mean "32-bit only" or "32- and 64-bit" but I
don't want to touch ports I can't fully test except where absolutely
necessary.
gdb/ChangeLog:
* i386-nat.h: Renamed as...
* x86-nat.h: New file. All type, function and variable name
prefixes changed from "i386_" to "x86_". All references updated.
* i386-nat.c: Renamed as...
* x86-nat.c: New file. All type, function and variable name
prefixes changed from "i386_" to "x86_". All references updated.
* common/i386-xstate.h: Renamed as...
* common/x86-xstate.h: New file. All type, function and variable
name prefixes changed from "i386_" to "x86_". All references
updated.
* nat/i386-cpuid.h: Renamed as...
* nat/x86-cpuid.h: New file. All type, function and variable name
prefixes changed from "i386_" to "x86_". All references updated.
* nat/i386-gcc-cpuid.h: Renamed as...
* nat/x86-gcc-cpuid.h: New file. All type, function and variable
name prefixes changed from "i386_" to "x86_". All references
updated.
* nat/i386-dregs.h: Renamed as...
* nat/x86-dregs.h: New file. All type, function and variable name
prefixes changed from "i386_" to "x86_". All references updated.
* nat/i386-dregs.c: Renamed as...
* nat/x86-dregs.c: New file. All type, function and variable name
prefixes changed from "i386_" to "x86_". All references updated.
gdb/gdbserver/ChangeLog:
* i386-low.h: Renamed as...
* x86-low.h: New file. All type, function and variable name
prefixes changed from "i386_" to "x86_". All references updated.
* i386-low.c: Renamed as...
* x86-low.c: New file. All type, function and variable name
prefixes changed from "i386_" to "x86_". All references updated.
2014-08-19 22:16:11 +08:00
|
|
|
|
case X86_XSTATE_MPX_AVX512_MASK:
|
|
|
|
|
case X86_XSTATE_AVX512_MASK:
|
Add AVX512 registers support to GDB and GDBserver.
This patch adds support for the Intel(R) Advanced Vector
Extensions 512 (Intel(R) AVX-512) registers. Native and remote
debugging are covered by this patch.
Intel(R) AVX-512 is an extension to AVX to support 512-bit wide
SIMD registers in 64-bit mode (XMM0-XMM31, YMM0-YMM31, ZMM0-ZMM31).
The number of available registers in 32-bit mode is still 8
(XMM0-7, YMM0-7, ZMM0-7). The lower 256-bits of the ZMM registers
are aliased to the respective 256-bit YMM registers. The lower
128-bits are aliased to the respective 128-bit XMM registers.
There are also 8 new, dedicated mask registers (K0-K7) in both 32-bit
mode and 64-bit mode.
For more information please see
Intel(R) Developer Zone: Intel(R) AVX
http://software.intel.com/en-us/intel-isa-extensions#pid-16007-1495
Intel(R) Architecture Instruction Set Extensions Programming Reference:
http://software.intel.com/en-us/file/319433-017pdf
2014-04-24 Michael Sturm <michael.sturm@mintel.com>
Walfred Tedeschi <walfred.tedeschi@intel.com>
* amd64-linux-nat.c (amd64_linux_gregset32_reg_offset): Add
AVX512 registers.
(amd64_linux_read_description): Add code to handle AVX512 xstate
mask and return respective tdesc.
* amd64-linux-tdep.c: Include features/i386/amd64-avx512-linux.c
and features/i386/x32-avx512-linux.c.
(amd64_linux_gregset_reg_offset): Add AVX512 registers.
(amd64_linux_core_read_description): Add code to handle AVX512
xstate mask and return respective tdesc.
(_initialize_amd64_linux_tdep): Initialize AVX512 tdesc.
* amd64-linux-tdep.h (AMD64_LINUX_ORIG_RAX_REGNUM): Adjust regnum
calculation.
(AMD64_LINUX_NUM_REGS): Adjust to new number of registers.
(tdesc_amd64_avx512_linux): New prototype.
(tdesc_x32_avx512_linux): Likewise.
* amd64-tdep.c: Include features/i386/amd64-avx512.c and
features/i386/x32-avx512.c.
(amd64_ymm_avx512_names): New register names for pseudo
registers YMM16-31.
(amd64_ymmh_avx512_names): New register names for raw registers
YMMH16-31.
(amd64_k_names): New register names for K registers.
(amd64_zmmh_names): New register names for ZMM raw registers.
(amd64_zmm_names): New registers names for ZMM pseudo registers.
(amd64_xmm_avx512_names): New register names for XMM16-31
registers.
(amd64_pseudo_register_name): Add code to return AVX512 pseudo
registers.
(amd64_init_abi): Add code to intitialize AVX512 tdep variables
if feature is present.
(_initialize_amd64_tdep): Call AVX512 tdesc initializers.
* amd64-tdep.h (enum amd64_regnum): Add AVX512 registers.
(AMD64_NUM_REGS): Adjust to new number of registers.
* i386-linux-nat.c (GETXSTATEREGS_SUPPLIES): Extend range of
registers supplied via XSTATE by AVX512 registers.
(i386_linux_read_description): Add case for AVX512.
* i386-linux-tdep.c: Include i386-avx512-linux.c.
(i386_linux_gregset_reg_offset): Add AVX512 registers.
(i386_linux_core_read_description): Add case for AVX512.
(i386_linux_init_abi): Install supported register note section
for AVX512.
(_initialize_i386_linux_tdep): Add call to tdesc init function for
AVX512.
* i386-linux-tdep.h (I386_LINUX_NUM_REGS): Set number of
registers to be number of zmm7h + 1.
(tdesc_i386_avx512_linux): Add tdesc for AVX512 registers.
* i386-tdep.c: Include features/i386/i386-avx512.c.
(i386_zmm_names): Add ZMM pseudo register names array.
(i386_zmmh_names): Add ZMM raw register names array.
(i386_k_names): Add K raw register names array.
(num_lower_zmm_regs): Add constant for the number of lower ZMM
registers. AVX512 has 16 more ZMM registers than there are YMM
registers.
(i386_zmmh_regnum_p): Add function to look up register number of
ZMM raw registers.
(i386_zmm_regnum_p): Likewise for ZMM pseudo registers.
(i386_k_regnum_p): Likewise for K raw registers.
(i386_ymmh_avx512_regnum_p): Likewise for additional YMM raw
registers added by AVX512.
(i386_ymm_avx512_regnum_p): Likewise for additional YMM pseudo
registers added by AVX512.
(i386_xmm_avx512_regnum_p): Likewise for additional XMM registers
added by AVX512.
(i386_register_name): Add code to hide YMMH16-31 and ZMMH0-31.
(i386_pseudo_register_name): Add ZMM pseudo registers.
(i386_zmm_type): Construct and return vector registers type for ZMM
registers.
(i386_pseudo_register_type): Return appropriate type for YMM16-31,
ZMM0-31 pseudo registers and K registers.
(i386_pseudo_register_read_into_value): Add code to read K, ZMM
and YMM16-31 registers from register cache.
(i386_pseudo_register_write): Add code to write K, ZMM and
YMM16-31 registers.
(i386_register_reggroup_p): Add code to include/exclude AVX512
registers in/from respective register groups.
(i386_validate_tdesc_p): Handle AVX512 feature, add AVX512
registers if feature is present in xcr0.
(i386_gdbarch_init): Add code to initialize AVX512 feature
variables in tdep structure, wire in pseudo registers and call
initialize_tdesc_i386_avx512.
* i386-tdep.h (struct gdbarch_tdep): Add AVX512 related
variables.
(i386_regnum): Add AVX512 registers.
(I386_SSE_NUM_REGS): New define for number of SSE registers.
(I386_AVX_NUM_REGS): Likewise for AVX registers.
(I386_AVX512_NUM_REGS): Likewise for AVX512 registers.
(I386_MAX_REGISTER_SIZE): Change to 64 bytes, ZMM registers are
512 bits wide.
(i386_xmm_avx512_regnum_p): New prototype for register look up.
(i386_ymm_avx512_regnum_p): Likewise.
(i386_k_regnum_p): Likewise.
(i386_zmm_regnum_p): Likewise.
(i386_zmmh_regnum_p): Likewise.
* i387-tdep.c : Update year in copyright notice.
(xsave_ymm_avx512_offset): New table for YMM16-31 offsets in
XSAVE buffer.
(XSAVE_YMM_AVX512_ADDR): New macro.
(xsave_xmm_avx512_offset): New table for XMM16-31 offsets in
XSAVE buffer.
(XSAVE_XMM_AVX512_ADDR): New macro.
(xsave_avx512_k_offset): New table for K register offsets in
XSAVE buffer.
(XSAVE_AVX512_K_ADDR): New macro.
(xsave_avx512_zmm_h_offset): New table for ZMM register offsets
in XSAVE buffer.
(XSAVE_AVX512_ZMM_H_ADDR): New macro.
(i387_supply_xsave): Add code to supply AVX512 registers to XSAVE
buffer.
(i387_collect_xsave): Add code to collect AVX512 registers from
XSAVE buffer.
* i387-tdep.h (I387_NUM_XMM_AVX512_REGS): New define for number
of XMM16-31 registers.
(I387_NUM_K_REGS): New define for number of K registers.
(I387_K0_REGNUM): New define for K0 register number.
(I387_NUM_ZMMH_REGS): New define for number of ZMMH registers.
(I387_ZMM0H_REGNUM): New define for ZMM0H register number.
(I387_NUM_YMM_AVX512_REGS): New define for number of YMM16-31
registers.
(I387_YMM16H_REGNUM): New define for YMM16H register number.
(I387_XMM16_REGNUM): New define for XMM16 register number.
(I387_YMM0_REGNUM): New define for YMM0 register number.
(I387_KEND_REGNUM): New define for last K register number.
(I387_ZMMENDH_REGNUM): New define for last ZMMH register number.
(I387_YMMH_AVX512_END_REGNUM): New define for YMM31 register
number.
(I387_XMM_AVX512_END_REGNUM): New define for XMM31 register
number.
* common/i386-xstate.h: Add AVX 3.1 feature bits, mask and XSTATE
size.
* features/Makefile: Add AVX512 related files.
* features/i386/32bit-avx512.xml: New file.
* features/i386/64bit-avx512.xml: Likewise.
* features/i386/amd64-avx512-linux.c: Likewise.
* features/i386/amd64-avx512-linux.xml: Likewise.
* features/i386/amd64-avx512.c: Likewise.
* features/i386/amd64-avx512.xml: Likewise.
* features/i386/i386-avx512-linux.c: Likewise.
* features/i386/i386-avx512-linux.xml: Likewise.
* features/i386/i386-avx512.c: Likewise.
* features/i386/i386-avx512.xml: Likewise.
* features/i386/x32-avx512-linux.c: Likewise.
* features/i386/x32-avx512-linux.xml: Likewise.
* features/i386/x32-avx512.c: Likewise.
* features/i386/x32-avx512.xml: Likewise.
* regformats/i386/amd64-avx512-linux.dat: New file.
* regformats/i386/amd64-avx512.dat: Likewise.
* regformats/i386/i386-avx512-linux.dat: Likewise.
* regformats/i386/i386-avx512.dat: Likewise.
* regformats/i386/x32-avx512-linux.dat: Likewise.
* regformats/i386/x32-avx512.dat: Likewise.
* NEWS: Add note about new support for AVX512.
testsuite/
* Makefile.in (EXECUTABLES): Added i386-avx512.
* gdb.arch/i386-avx512.c: New file.
* gdb.arch/i386-avx512.exp: Likewise.
gdbserver/
* Makefile.in: Added rules to handle new files
i386-avx512.c i386-avx512-linux.c amd64-avx512.c
amd64-avx512-linux.c x32-avx512.c x32-avx512-linux.c.
* configure.srv (srv_i386_regobj): Add i386-avx512.o.
(srv_i386_linux_regobj): Add i386-avx512-linux.o.
(srv_amd64_regobj): Add amd64-avx512.o and x32-avx512.o.
(srv_amd64_linux_regobj): Add amd64-avx512-linux.o and
x32-avx512-linux.o.
(srv_i386_32bit_xmlfiles): Add i386/32bit-avx512.xml.
(srv_i386_64bit_xmlfiles): Add i386/64bit-avx512.xml.
(srv_amd64_xmlfiles): Add i386/amd64-avx512.xml and
i386/x32-avx512.xml.
(srv_i386_linux_xmlfiles): Add i386/i386-avx512-linux.xml.
(srv_amd64_linux_xmlfiles): Add i386/amd64-avx512-linux.xml and
i386/x32-avx512-linux.xml.
* i387-fp.c (num_avx512_k_registers): New constant for number
of K registers.
(num_avx512_zmmh_low_registers): New constant for number of
lower ZMM registers (0-15).
(num_avx512_zmmh_high_registers): New constant for number of
higher ZMM registers (16-31).
(num_avx512_ymmh_registers): New contant for number of higher
YMM registers (ymm16-31 added by avx521 on x86_64).
(num_avx512_xmm_registers): New constant for number of higher
XMM registers (xmm16-31 added by AVX512 on x86_64).
(struct i387_xsave): Add space for AVX512 registers.
(i387_cache_to_xsave): Change raw buffer size to 64 characters.
Add code to handle AVX512 registers.
(i387_xsave_to_cache): Add code to handle AVX512 registers.
* linux-x86-low.c (init_registers_amd64_avx512_linux): New
prototypei from generated file.
(tdesc_amd64_avx512_linux): Likewise.
(init_registers_x32_avx512_linux): Likewise.
(tdesc_x32_avx512_linux): Likewise.
(init_registers_i386_avx512_linux): Likewise.
(tdesc_i386_avx512_linux): Likewise.
(x86_64_regmap): Add AVX512 registers.
(x86_linux_read_description): Add code to handle AVX512 XSTATE
mask.
(initialize_low_arch): Add code to initialize AVX512 registers.
doc/
* gdb.texinfo (i386 Features): Add description of AVX512
registers.
Change-Id: Ifc4c08c76b85dbec18d02efdbe6182e851584438
Signed-off-by: Michael Sturm <michael.sturm@intel.com>
2013-12-16 23:43:05 +08:00
|
|
|
|
if (gdbarch_ptr_bit (gdbarch) == 32)
|
|
|
|
|
return tdesc_x32_avx512_linux;
|
|
|
|
|
else
|
|
|
|
|
return tdesc_amd64_avx512_linux;
|
Rename 32- and 64-bit Intel files from "i386" to "x86"
This commit renames nine files that contain code used by both 32- and
64-bit Intel ports such that their names are prefixed with "x86"
rather than "i386". All types, functions and variables within these
files are likewise renamed such that their names are prefixed with
"x86" rather than "i386". This makes GDB follow the convention used
by gdbserver such that 32-bit Intel code lives in files called
"i386-*", 64-bit Intel code lives in files called "amd64-*", and code
for both 32- and 64-bit Intel lives in files called "x86-*".
This commit only renames OS-independent files. The Linux ports of
both GDB and gdbserver now follow the i386/amd64/x86 convention fully.
Some ports still use the old convention where "i386" in file/function/
type/variable names can mean "32-bit only" or "32- and 64-bit" but I
don't want to touch ports I can't fully test except where absolutely
necessary.
gdb/ChangeLog:
* i386-nat.h: Renamed as...
* x86-nat.h: New file. All type, function and variable name
prefixes changed from "i386_" to "x86_". All references updated.
* i386-nat.c: Renamed as...
* x86-nat.c: New file. All type, function and variable name
prefixes changed from "i386_" to "x86_". All references updated.
* common/i386-xstate.h: Renamed as...
* common/x86-xstate.h: New file. All type, function and variable
name prefixes changed from "i386_" to "x86_". All references
updated.
* nat/i386-cpuid.h: Renamed as...
* nat/x86-cpuid.h: New file. All type, function and variable name
prefixes changed from "i386_" to "x86_". All references updated.
* nat/i386-gcc-cpuid.h: Renamed as...
* nat/x86-gcc-cpuid.h: New file. All type, function and variable
name prefixes changed from "i386_" to "x86_". All references
updated.
* nat/i386-dregs.h: Renamed as...
* nat/x86-dregs.h: New file. All type, function and variable name
prefixes changed from "i386_" to "x86_". All references updated.
* nat/i386-dregs.c: Renamed as...
* nat/x86-dregs.c: New file. All type, function and variable name
prefixes changed from "i386_" to "x86_". All references updated.
gdb/gdbserver/ChangeLog:
* i386-low.h: Renamed as...
* x86-low.h: New file. All type, function and variable name
prefixes changed from "i386_" to "x86_". All references updated.
* i386-low.c: Renamed as...
* x86-low.c: New file. All type, function and variable name
prefixes changed from "i386_" to "x86_". All references updated.
2014-08-19 22:16:11 +08:00
|
|
|
|
case X86_XSTATE_MPX_MASK:
|
2013-11-20 20:02:37 +08:00
|
|
|
|
if (gdbarch_ptr_bit (gdbarch) == 32)
|
|
|
|
|
return tdesc_x32_avx_linux; /* No x32 MPX falling back to AVX. */
|
|
|
|
|
else
|
|
|
|
|
return tdesc_amd64_mpx_linux;
|
Rename 32- and 64-bit Intel files from "i386" to "x86"
This commit renames nine files that contain code used by both 32- and
64-bit Intel ports such that their names are prefixed with "x86"
rather than "i386". All types, functions and variables within these
files are likewise renamed such that their names are prefixed with
"x86" rather than "i386". This makes GDB follow the convention used
by gdbserver such that 32-bit Intel code lives in files called
"i386-*", 64-bit Intel code lives in files called "amd64-*", and code
for both 32- and 64-bit Intel lives in files called "x86-*".
This commit only renames OS-independent files. The Linux ports of
both GDB and gdbserver now follow the i386/amd64/x86 convention fully.
Some ports still use the old convention where "i386" in file/function/
type/variable names can mean "32-bit only" or "32- and 64-bit" but I
don't want to touch ports I can't fully test except where absolutely
necessary.
gdb/ChangeLog:
* i386-nat.h: Renamed as...
* x86-nat.h: New file. All type, function and variable name
prefixes changed from "i386_" to "x86_". All references updated.
* i386-nat.c: Renamed as...
* x86-nat.c: New file. All type, function and variable name
prefixes changed from "i386_" to "x86_". All references updated.
* common/i386-xstate.h: Renamed as...
* common/x86-xstate.h: New file. All type, function and variable
name prefixes changed from "i386_" to "x86_". All references
updated.
* nat/i386-cpuid.h: Renamed as...
* nat/x86-cpuid.h: New file. All type, function and variable name
prefixes changed from "i386_" to "x86_". All references updated.
* nat/i386-gcc-cpuid.h: Renamed as...
* nat/x86-gcc-cpuid.h: New file. All type, function and variable
name prefixes changed from "i386_" to "x86_". All references
updated.
* nat/i386-dregs.h: Renamed as...
* nat/x86-dregs.h: New file. All type, function and variable name
prefixes changed from "i386_" to "x86_". All references updated.
* nat/i386-dregs.c: Renamed as...
* nat/x86-dregs.c: New file. All type, function and variable name
prefixes changed from "i386_" to "x86_". All references updated.
gdb/gdbserver/ChangeLog:
* i386-low.h: Renamed as...
* x86-low.h: New file. All type, function and variable name
prefixes changed from "i386_" to "x86_". All references updated.
* i386-low.c: Renamed as...
* x86-low.c: New file. All type, function and variable name
prefixes changed from "i386_" to "x86_". All references updated.
2014-08-19 22:16:11 +08:00
|
|
|
|
case X86_XSTATE_AVX_MASK:
|
2012-05-12 06:33:28 +08:00
|
|
|
|
if (gdbarch_ptr_bit (gdbarch) == 32)
|
|
|
|
|
return tdesc_x32_avx_linux;
|
|
|
|
|
else
|
|
|
|
|
return tdesc_amd64_avx_linux;
|
2010-04-22 04:22:20 +08:00
|
|
|
|
default:
|
2012-05-12 06:33:28 +08:00
|
|
|
|
if (gdbarch_ptr_bit (gdbarch) == 32)
|
|
|
|
|
return tdesc_x32_linux;
|
|
|
|
|
else
|
|
|
|
|
return tdesc_amd64_linux;
|
2010-04-22 04:22:20 +08:00
|
|
|
|
}
|
2010-03-01 23:33:32 +08:00
|
|
|
|
}
|
|
|
|
|
|
Add 'regset' parameter to 'iterate_over_regset_sections_cb'
This adds the 'regset' parameter to the iterator callback.
Consequently the 'regset_from_core_section' method is dropped for all
targets that provide the iterator method.
This change prepares for replacing regset_from_core_section
everywhere, thereby eliminating one gdbarch interface. Since the
iterator is usually no more complex than regset_from_core_section
alone, targets that previously didn't define core_regset_sections will
then gain multi-arch capable core file generation support without
increased complexity.
gdb/ChangeLog:
* gdbarch.sh (iterate_over_regset_sections_cb): Add regset
parameter.
* gdbarch.h: Regenerate.
* corelow.c (sniff_core_bfd): Don't sniff if gdbarch has a regset
iterator.
(get_core_register_section): Add parameter 'regset' and use it, if
set. Add parameter 'min_size' and verify the bfd section size
against it.
(get_core_registers_cb): Add parameter 'regset' and pass it to
get_core_register section. For the "standard" register sections
".reg" and ".reg2", set an appropriate default for human_name.
(get_core_registers): Don't abort when the gdbarch has an iterator
but no regset_from_core_section. Add NULL/0 for parameters
'regset'/'min_size' in calls to get_core_register_section.
* linux-tdep.c (linux_collect_regset_section_cb): Add parameter
'regset' and use it instead of calling the
regset_from_core_section gdbarch method.
* i386-tdep.h (struct gdbarch_tdep): Add field 'fpregset'.
* i386-tdep.c (i386_supply_xstateregset)
(i386_collect_xstateregset, i386_xstateregset): Moved to
i386-linux-tdep.c.
(i386_regset_from_core_section): Drop handling for .reg-xfp and
.reg-xstate.
(i386_gdbarch_init): Set tdep field 'fpregset'. Enable generic
core file support only if the regset iterator hasn't been set.
* i386-linux-tdep.c (i386_linux_supply_xstateregset)
(i386_linux_collect_xstateregset, i386_linux_xstateregset): New.
Moved from i386-tdep.c and renamed to *_linux*.
(i386_linux_iterate_over_regset_sections): Add regset parameter to
each callback invocation. Allow any .reg-xstate size when reading
from a core file.
* amd64-tdep.c (amd64_supply_xstateregset)
(amd64_collect_xstateregset, amd64_xstateregset): Moved to
amd64-linux-tdep.c.
(amd64_regset_from_core_section): Remove.
(amd64_init_abi): Set new tdep field 'fpregset'. No longer
install an amd64-specific regset_from_core_section gdbarch method.
* amd64-linux-tdep.c (amd64_linux_supply_xstateregset)
(amd64_linux_collect_xstateregset, amd64_linux_xstateregset): New.
Moved from amd64-tdep.c and renamed to *_linux*.
(amd64_linux_iterate_over_regset_sections): Add regset parameter
to each callback invocation. Allow any .reg-xstate size when
reading from a core file.
* arm-linux-tdep.c (arm_linux_regset_from_core_section): Remove.
(arm_linux_iterate_over_regset_sections): Add regset parameter to
each callback invocation.
(arm_linux_init_abi): No longer set the regset_from_core_section
gdbarch method.
* ppc-linux-tdep.c (ppc_linux_regset_from_core_section): Remove.
(ppc_linux_iterate_over_regset_sections): Add regset parameter to
each callback invocation.
(ppc_linux_init_abi): No longer set the regset_from_core_section
gdbarch method.
* s390-linux-tdep.c (struct gdbarch_tdep): Remove the fields
gregset, sizeof_gregset, fpregset, and sizeof_fpregset.
(s390_regset_from_core_section): Remove.
(s390_iterate_over_regset_sections): Add regset parameter to each
callback invocation.
(s390_gdbarch_init): No longer set the regset_from_core_section
gdbarch method. Drop initialization of deleted tdep fields.
2014-09-12 16:42:48 +08:00
|
|
|
|
/* Similar to amd64_supply_fpregset, but use XSAVE extended state. */
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
|
amd64_linux_supply_xstateregset (const struct regset *regset,
|
|
|
|
|
struct regcache *regcache, int regnum,
|
|
|
|
|
const void *xstateregs, size_t len)
|
|
|
|
|
{
|
|
|
|
|
amd64_supply_xsave (regcache, regnum, xstateregs);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/* Similar to amd64_collect_fpregset, but use XSAVE extended state. */
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
|
amd64_linux_collect_xstateregset (const struct regset *regset,
|
|
|
|
|
const struct regcache *regcache,
|
|
|
|
|
int regnum, void *xstateregs, size_t len)
|
|
|
|
|
{
|
|
|
|
|
amd64_collect_xsave (regcache, regnum, xstateregs, 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static const struct regset amd64_linux_xstateregset =
|
|
|
|
|
{
|
|
|
|
|
NULL,
|
|
|
|
|
amd64_linux_supply_xstateregset,
|
|
|
|
|
amd64_linux_collect_xstateregset
|
|
|
|
|
};
|
|
|
|
|
|
Replace 'core_regset_sections' by iterator method
The core_regset_sections list in gdbarch (needed for multi-arch
capable core file generation support) is replaced by an iterator
method. Overall, this reduces the code a bit, and it allows for more
flexibility.
gdb/ChangeLog:
* amd64-linux-tdep.c (amd64_linux_regset_sections): Remove.
(amd64_linux_iterate_over_regset_sections): New.
(amd64_linux_init_abi_common): Don't install the regset section
list, but the new iterator in gdbarch.
* arm-linux-tdep.c (arm_linux_fpa_regset_sections)
(arm_linux_vfp_regset_sections): Remove. Move combined logic...
(arm_linux_iterate_over_regset_sections): ...here. New function.
(arm_linux_init_abi): Set iterator instead of section list.
* corelow.c (get_core_registers_cb): New function, logic moved
from...
(get_core_registers): ...loop body here. Use new iterator method
instead of walking through the regset section list.
* gdbarch.sh: Remove 'core_regset_sections'. New method
'iterate_over_regset_sections'. New typedef
'iterate_over_regset_sections_cb'.
* gdbarch.c: Regenerate.
* gdbarch.h: Likewise.
* i386-linux-tdep.c (i386_linux_regset_sections)
(i386_linux_sse_regset_sections, i386_linux_avx_regset_sections):
Remove.
(i386_linux_iterate_over_regset_sections): New.
(i386_linux_init_abi): Don't choose a regset section list, but
install new iterator in gdbarch.
* linux-tdep.c (struct linux_collect_regset_section_cb_data): New.
(linux_collect_regset_section_cb): New function, logic moved
from...
(linux_collect_thread_registers): ...loop body here. Use iterator
method instead of walking through list.
(linux_make_corefile_notes_1): Check for presence of iterator
method instead of regset section list.
* ppc-linux-tdep.c (ppc_linux_vsx_regset_sections)
(ppc_linux_vmx_regset_sections, ppc_linux_fp_regset_sections)
(ppc64_linux_vsx_regset_sections, ppc64_linux_vmx_regset_sections)
(ppc64_linux_fp_regset_sections): Remove. Move combined logic...
(ppc_linux_iterate_over_regset_sections): ...here. New function.
(ppc_linux_init_abi): Don't choose from above regset section
lists, but install new iterator in gdbarch.
* regset.h (struct core_regset_section): Remove.
* s390-linux-tdep.c (struct gdbarch_tdep): Add new fields
have_linux_v1, have_linux_v2, and have_tdb.
(s390_linux32_regset_sections, s390_linux32v1_regset_sections)
(s390_linux32v2_regset_sections, s390_linux64_regset_sections)
(s390_linux64v1_regset_sections, s390_linux64v2_regset_sections)
(s390x_linux64_regset_sections, s390x_linux64v1_regset_sections)
(s390x_linux64v2_regset_sections): Remove. Move combined logic...
(s390_iterate_over_regset_sections): ...here. New function. Use
new tdep fields.
(s390_gdbarch_init): Set new tdep fields. Don't choose from above
regset section lists, but install new iterator.
2014-09-04 23:26:43 +08:00
|
|
|
|
/* Iterate over core file register note sections. */
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
|
amd64_linux_iterate_over_regset_sections (struct gdbarch *gdbarch,
|
|
|
|
|
iterate_over_regset_sections_cb *cb,
|
|
|
|
|
void *cb_data,
|
|
|
|
|
const struct regcache *regcache)
|
|
|
|
|
{
|
Add 'regset' parameter to 'iterate_over_regset_sections_cb'
This adds the 'regset' parameter to the iterator callback.
Consequently the 'regset_from_core_section' method is dropped for all
targets that provide the iterator method.
This change prepares for replacing regset_from_core_section
everywhere, thereby eliminating one gdbarch interface. Since the
iterator is usually no more complex than regset_from_core_section
alone, targets that previously didn't define core_regset_sections will
then gain multi-arch capable core file generation support without
increased complexity.
gdb/ChangeLog:
* gdbarch.sh (iterate_over_regset_sections_cb): Add regset
parameter.
* gdbarch.h: Regenerate.
* corelow.c (sniff_core_bfd): Don't sniff if gdbarch has a regset
iterator.
(get_core_register_section): Add parameter 'regset' and use it, if
set. Add parameter 'min_size' and verify the bfd section size
against it.
(get_core_registers_cb): Add parameter 'regset' and pass it to
get_core_register section. For the "standard" register sections
".reg" and ".reg2", set an appropriate default for human_name.
(get_core_registers): Don't abort when the gdbarch has an iterator
but no regset_from_core_section. Add NULL/0 for parameters
'regset'/'min_size' in calls to get_core_register_section.
* linux-tdep.c (linux_collect_regset_section_cb): Add parameter
'regset' and use it instead of calling the
regset_from_core_section gdbarch method.
* i386-tdep.h (struct gdbarch_tdep): Add field 'fpregset'.
* i386-tdep.c (i386_supply_xstateregset)
(i386_collect_xstateregset, i386_xstateregset): Moved to
i386-linux-tdep.c.
(i386_regset_from_core_section): Drop handling for .reg-xfp and
.reg-xstate.
(i386_gdbarch_init): Set tdep field 'fpregset'. Enable generic
core file support only if the regset iterator hasn't been set.
* i386-linux-tdep.c (i386_linux_supply_xstateregset)
(i386_linux_collect_xstateregset, i386_linux_xstateregset): New.
Moved from i386-tdep.c and renamed to *_linux*.
(i386_linux_iterate_over_regset_sections): Add regset parameter to
each callback invocation. Allow any .reg-xstate size when reading
from a core file.
* amd64-tdep.c (amd64_supply_xstateregset)
(amd64_collect_xstateregset, amd64_xstateregset): Moved to
amd64-linux-tdep.c.
(amd64_regset_from_core_section): Remove.
(amd64_init_abi): Set new tdep field 'fpregset'. No longer
install an amd64-specific regset_from_core_section gdbarch method.
* amd64-linux-tdep.c (amd64_linux_supply_xstateregset)
(amd64_linux_collect_xstateregset, amd64_linux_xstateregset): New.
Moved from amd64-tdep.c and renamed to *_linux*.
(amd64_linux_iterate_over_regset_sections): Add regset parameter
to each callback invocation. Allow any .reg-xstate size when
reading from a core file.
* arm-linux-tdep.c (arm_linux_regset_from_core_section): Remove.
(arm_linux_iterate_over_regset_sections): Add regset parameter to
each callback invocation.
(arm_linux_init_abi): No longer set the regset_from_core_section
gdbarch method.
* ppc-linux-tdep.c (ppc_linux_regset_from_core_section): Remove.
(ppc_linux_iterate_over_regset_sections): Add regset parameter to
each callback invocation.
(ppc_linux_init_abi): No longer set the regset_from_core_section
gdbarch method.
* s390-linux-tdep.c (struct gdbarch_tdep): Remove the fields
gregset, sizeof_gregset, fpregset, and sizeof_fpregset.
(s390_regset_from_core_section): Remove.
(s390_iterate_over_regset_sections): Add regset parameter to each
callback invocation.
(s390_gdbarch_init): No longer set the regset_from_core_section
gdbarch method. Drop initialization of deleted tdep fields.
2014-09-12 16:42:48 +08:00
|
|
|
|
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", regcache ? X86_XSTATE_MAX_SIZE : 0,
|
|
|
|
|
&amd64_linux_xstateregset, "XSAVE extended state", cb_data);
|
Replace 'core_regset_sections' by iterator method
The core_regset_sections list in gdbarch (needed for multi-arch
capable core file generation support) is replaced by an iterator
method. Overall, this reduces the code a bit, and it allows for more
flexibility.
gdb/ChangeLog:
* amd64-linux-tdep.c (amd64_linux_regset_sections): Remove.
(amd64_linux_iterate_over_regset_sections): New.
(amd64_linux_init_abi_common): Don't install the regset section
list, but the new iterator in gdbarch.
* arm-linux-tdep.c (arm_linux_fpa_regset_sections)
(arm_linux_vfp_regset_sections): Remove. Move combined logic...
(arm_linux_iterate_over_regset_sections): ...here. New function.
(arm_linux_init_abi): Set iterator instead of section list.
* corelow.c (get_core_registers_cb): New function, logic moved
from...
(get_core_registers): ...loop body here. Use new iterator method
instead of walking through the regset section list.
* gdbarch.sh: Remove 'core_regset_sections'. New method
'iterate_over_regset_sections'. New typedef
'iterate_over_regset_sections_cb'.
* gdbarch.c: Regenerate.
* gdbarch.h: Likewise.
* i386-linux-tdep.c (i386_linux_regset_sections)
(i386_linux_sse_regset_sections, i386_linux_avx_regset_sections):
Remove.
(i386_linux_iterate_over_regset_sections): New.
(i386_linux_init_abi): Don't choose a regset section list, but
install new iterator in gdbarch.
* linux-tdep.c (struct linux_collect_regset_section_cb_data): New.
(linux_collect_regset_section_cb): New function, logic moved
from...
(linux_collect_thread_registers): ...loop body here. Use iterator
method instead of walking through list.
(linux_make_corefile_notes_1): Check for presence of iterator
method instead of regset section list.
* ppc-linux-tdep.c (ppc_linux_vsx_regset_sections)
(ppc_linux_vmx_regset_sections, ppc_linux_fp_regset_sections)
(ppc64_linux_vsx_regset_sections, ppc64_linux_vmx_regset_sections)
(ppc64_linux_fp_regset_sections): Remove. Move combined logic...
(ppc_linux_iterate_over_regset_sections): ...here. New function.
(ppc_linux_init_abi): Don't choose from above regset section
lists, but install new iterator in gdbarch.
* regset.h (struct core_regset_section): Remove.
* s390-linux-tdep.c (struct gdbarch_tdep): Add new fields
have_linux_v1, have_linux_v2, and have_tdb.
(s390_linux32_regset_sections, s390_linux32v1_regset_sections)
(s390_linux32v2_regset_sections, s390_linux64_regset_sections)
(s390_linux64v1_regset_sections, s390_linux64v2_regset_sections)
(s390x_linux64_regset_sections, s390x_linux64v1_regset_sections)
(s390x_linux64v2_regset_sections): Remove. Move combined logic...
(s390_iterate_over_regset_sections): ...here. New function. Use
new tdep fields.
(s390_gdbarch_init): Set new tdep fields. Don't choose from above
regset section lists, but install new iterator.
2014-09-04 23:26:43 +08:00
|
|
|
|
}
|
|
|
|
|
|
2002-12-22 05:09:58 +08:00
|
|
|
|
static void
|
2012-06-14 04:36:48 +08:00
|
|
|
|
amd64_linux_init_abi_common(struct gdbarch_info info, struct gdbarch *gdbarch)
|
2002-12-22 05:09:58 +08:00
|
|
|
|
{
|
* x86-64-tdep.h (x86_64_num_regs, x86_64_num_gregs): Remove
variable declarations.
(x86_64_register_number, x86_64_register_name): Remove prototypes.
(x86_64_linux_frame_saved_pc, x86_64_linux+saved_pc_after_call,
x86_64_linux_in_sigtramp, x86_64_linux_frame_chain,
x86_64_init_frame_pc, x86_64_init_frame_pc,
x86_64_function_has_prologue): Remove prototypes.
(X86_64_NUM_GREGS): New define.
(x86_64_supply_fxsave, x86_64_fill_fxsave): New prototypes.
* x86-64-tdep.c: Don't include "dwarf2cfi.h". Include
"dummy_frame.h", "frame.h", "frame-base.h", "frame-unwind.h".
(RAX_REGNUM, RDX_REGNUM, RDI_REGNUM, EFLAGS_REGNUM, ST0_REGNUM,
XMM1_REGNUM): Remove defines.
(X86_64_RAX_REGNUM, X86_64_RDX_REGNUM, X86_64_RDI_REGNUM,
X86_64_RBP_REGNUM, X86_64_RSP_REGNUM, X86_64_RIP_REGNUM,
X86_64_EFLAGS_REGNUM, X86_64_ST0_REGNUM, X86_64_XMM0_REGNUM,
X86_64_XMM1_REGNUM): New defines.
(struct x86_64_register_info): Renamed from `struct
register_info'. Remove `size' member.
(x86_64_register_info_table): Remove variable.
(x86_64_register_info): New variable.
(X86_64_NUM_REGS): New define.
(X86_64_NUM_GREGS): Remove define.
(x86_64_num_regs, x86_64_num_gregs): Remove variables.
(x86_64_dwarf2gdb_regno_map, x86_64_dwarf2gdb_regno_map_length):
Remove variables.
(x86_54_dwarf2_reg_to_regnum): Remove function.
(x86_64_dwarf_regmap, x86_64_dwarf_regmap_len): New variables.
(x86_64_dwarf_reg_to_regnum): New function.
(x86_64_register_name): Rewrite.
(x86_64_register_raw_size): Remove function.
(x86_64_register_byte_table): Remove variable.
(x86_64_register_byte): Remove function.
(x86_64_register_virtual_type): Remove function.
(x86_64_register_type): New function.
(x86_64_register_convertible, x86_64_register_convert_to_virtual,
x86_64_register_convert_to_raw): Remove functions.
(x86_64_push_return_address, x86_64_pop_frame): Remove functon.
(x86_64_use_struct_convention): Make static. Adjust for renamed
defines.
(x86_64_frame_init_saved_regs): Remove function.
(x86_64_push_arguments): Make static. Change to accept a regcache
as argument.
(x86_64_store_return_value, x86_64_extract_return_value): Make
static. Rewrite based on i386 counterparts.
(x86_64_push_dummy_call): New function.
(X86_64_NUM_SAVED_REGS): New define.
(x86_64_register_number): Remove function.
(x86_64_store_struct_return): Remove function.
(x86_64_frameless_function_invocation,
x86_64_function_has_prologue): Remove functions.
(PROLOG_BUFSIZE): Remove define.
(struct x86_64_frame_cache): New structure.
(x86_64_alloc_frame_cache, x86_64_analyze_prologue,
x86_64_frame_cache, x86_64_frame_this_id,
x86_64_frame_prev_register, x86_64_frame_p,
x86_64_sigtramp_frame_cache, x86_64_sigtramp_frame_this_id,
x86_64_sigtramp_frame_prev_register, x86_sigtramp_frame_p): New
functions.
(x86_64_frame_unwind, x86_64_sigtramp_frame_unwind): New
variables.
(x86_64_skip_prologue): Rewrite in terms of
x86_64_analyze_prologue.
(x86_64_frame_base_address): New function.
(x86_64_frame_base): New variable.
(x86_64_save_dummy_frame_tos, x86_64_unwind_dummy_id): Rewrite.
(x86_64_init_abi): Set register_type and push_dummy_call. Don't
set deprecated_fp_regnum, deprecated_register_size,
deprecated_register_bytes, register_raw_size, register_byte,
register_virtual_type, register_convertiable,
register_convert_to_virtual, convert_to_raw,
deprecated_get_saved_register, deprecated_target_read_fp,
deprecated_push_arguments, deprecated_push_return_address,
deprecated_pop_frame, deprecated_store_struct_return,
deprecated_frame_init_saved_regs, deprecated_frame_chain,
frameless_function_invocation, deprecated_frame_saved_pc,
deprecated_saved_pc_after_call, frame_num_args, pc_in_sigtramp,
dwarf2_build_frame_info, deprecated_init_extra_frame_info,
deprecated_init_frame_pc and virtual_frame_pointer. Call
frame_unwind_append_predicate to register x86_64_sigtramp_frame_p
and x86_64_frame_p. Call frame_base_set_default to register
x86_64_frame_base.
(I387_FISEG_REGNUM, I387_FOSEG_REGNUM): New defines.
(x86_64_supply_fxsave, x86_64_fill_fxsave): New functions.
(_initialize_x86_64_tdep): Remove function.
* x86-64-linux-tdep.c: Don't include "dwarf2cfi.h".
(LINUX_SIGINFO_SIZE, LINUX_UCONTEXT_SIGCONTEXT_OFFSET,
LINUX_SIGCONTEXT_PC_OFFSET, LINUX_SIGCONTEXT_FP_OFFSET): Don't
define.
(X86_64_LINUX_UCONTEXT_SIGCONTEXT_OFFSET): Define.
(x86_64_linux_sigcontext_addr): Rewrite.
(x86_64_linux_sigtramp_saved_pc, x86_64_linux_saved_pc_after_call,
x86_64_linux_frame_saved_pc): Remove functions.
(x86_64_linux_pc_in_sigtramp): Renamed from
x86_64_linux_in_sigtramp. Try harder to recognize a signal
trampoline.
(x86_64_linux_frame_chain, x86_64_init_frame_pc):
Remove_functions.
(x86_64_linux_init_abi): Set pc_in_sigtramp. Initialize
TDEP->sigcontext_addr, TDEP->sc_pc_offset and TDEP->sc_sp_offset.
* x86-64-linux-nat.c: Sync with i386-linux-tdep.c.
(x86_64_regmap): Rename to regmap.
(GETREGS_SUPPLIES): Use X86_64_NUM_GREGS instead of
x86_64_num_gregs.
(supply_gregset, fill_gregset): Likewise. Use regmap instead of
x86_64_regmap.
(x86_64_fxsave_offset): Remove function.
(supply_fpregset): Simply call x86_64_supply_fxsave.
(fill_fpregset): Simply call x86_64_fill_fxsave.
(fetch_inferior_registers, store_inferior_registers): Avoid
asignment in if-statement.
(LINUX_SYSCALL_LEN, LINUX_SYSCALL_REGNUM, SYS_Sigreturn,
SYS_rt_sigreturn, LINUX_SIGCONTEXT_EFLAGS_OFFSET,
LINUX_UCONTEXT_SIGCONTEXT_OFFSET): Remove defines.
(fetch_core_registers): Remove function.
(linux_elf_core_fns): Remove.
(offsetoff): Don't define.
(_initialize_x86_64_linux_nat, kernel_u_size): Remove functions.
* config/i386/x86-64linux.mt (TDEPFILES): Add i386-linux-tdep.o.
* config/i386/x86-64linux.mh (NATDEPFILES): Remove core-aout.o,
add core-regset.o.
* config/i386/nm-x86-64linux.h: Use NM_X86_64_LINUX_H for
protection against multiple includes instead of NM_X86_64_h. Add
various comments. Include "config/nm-linux.h". Don't include
<signal.h>.
(REGISTER_U_ADDR, KERNEL_U_SIZE, U_REGS_OFFSET, KERN_U_ADDR,
GET_THREAD_SIGNALS): Remove defines.
(x86_64_register_u_addr, kernel_u_size,
lin_thread_get_thread_signals): Remove prototypes.
(PTRACE_ARG3_TYPE, PTRACE_XFER_TYPE): Define to `long'.
[HAVE_LINK_H]: Don't include "solib.h".
[HAVE_LINK_H] (SVR4_SHARED_LIBS): Remove define.
* config/i386/tm-x86-64linux.h: Fix comments.
* Makefile.in (x86-64-linux-nat.o, x86_64-linux-tdep.o,
x86-64-tdep.o): Update dependencies.
2003-05-31 16:15:38 +08:00
|
|
|
|
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
* amd64-linux-tdep.h: Remove file.
* amd64-linux-tdep.c: Don't include "inferior.h" and
"amd64-linux-tdep.h". Include "frame.h" and "solib-svr4.h".
(USER_R15, USER_R14, USER_R13, USER_R12, USER_RBP, USER_RBX)
(USER_R11, USER_R10, USER_R9, USER_R8, USER_RAX, USER_RCX)
(USER_RDX, USER_RSI, USER_RDI, USER_RIP, USER_CS, USER_EFLAGS)
(USER_RSP, USER_SS, USER_DS, USER_ES, USER_FS, USER_GS): Remove
macros.
(user_to_gdb_regmap): Remove variable.
(amd64_linux_gregset_reg_offset): New variable.
(amd64_core_fns): Remove variable.
(fetch_core_registers): Remove function.
(amd64_linux_supply_gregset, amd64_linux_fill_gregset): Remove
functions.
(_initialize_amd64_linux_tdep): Don't set add_core_fns.
* amd64-linux-nat.c: Don't include "amd64-linux-tdep.h".
* Makefile.in (amd64_linux_tdep_h): Remove.
(amd64-linux-nat.o): Update dependencies.
(amd64-linux-tdep.o): Update dependencies.
2004-03-15 06:39:26 +08:00
|
|
|
|
|
2010-08-04 23:27:57 +08:00
|
|
|
|
linux_init_abi (info, gdbarch);
|
|
|
|
|
|
* amd64-tdep.c (amd64_sigtramp_frame_sniffer): Rewrite to use new
sigtramp_p member of `struct gdbarch_tdep'. Also check whether
the program counter is in the range specified by `struct
gdbarch_tdep'.
* amd64-linux-tdep.c: Include "symtab.h".
(amd64_linux_pc_in_sigtramp): Remove function.
(amd64_linux_sigtramp_p): New function.
(amd64_linux_init_abi): Initialize TDEP->sigtramp_p. Don't set
deprecated_pc_in_sigtramp.
* amd64nbsd-tdep.c: Include "symtab.h".
(amd64nbsd_sigtramp_p): New function.
(amd64nbsd_init_abi): Initialize TDEP->sigtramp_p. Don't set
deprecated_pc_in_sigtramp.
* amd64obsd-tdep.c: Include "symtab.h" and "objfiles.h". Add a
few comments.
(amd64obsd_pc_in_sigtramp): Remove function.
(amd64obsd_sigtramp_p): New function.
(amd64obsd_init_abi): Initialize TDEP->sigtramp_p. Don't set
deprecated_pc_in_sigtramp.
* i386-tdep.h (struct gdbarch_tdep): Add sigtramp_p member.
(i386bsd_pc_ins_sigtramp): Remove prototype.
(i386bsd_sigtramp_start, i386bsd_sigtramp_end): Remove prototypes.
* i386-tdep.c (i386_sigtramp_frame_sniffer): Rewrite to use new
sigtramp_p member of `struct gdbarch_tdep'. Also check whether
the program counter is in the range specified by `struct
gdbarch_tdep'.
(i386_pc_in_sigtramp, i386_svr4_pc_in_sigtramp): Remove functions.
(i386_sigtramp_p, i386_svr4_sigtramp_p): New functions.
(i386_go32_pc_in_sigtramp): Remove function.
(i386_svr4_init_abi): Don't set deprecated_pc_in_sigtramp.
Initialize TDEP->sigtramp_p.
(i386_go32_init_abi): Initialize TDEP->sigtramp_p to NULL.
(i386_gdbarch_init): Initialize TDEP->sigtramp_p. Don't set
deprecated_pc_in_sigtramp.
* i386-linux-tdep.c: Adjust comments.
(i386_linux_pc_in_sigtramp): Remove function.
(i386_linux_sigtramp_p): New function.
(i386_linux_init_abi): Initialize TDEP->sigtramp_p. Don't set
deprecated_pc_in_sigtramp.
* i386-nto-tdep.c: Update copyright year.
(i386nto_pc_in_sigtramp): Remove function.
(i386nto_sigtramp_p): New function.
(i386nto_sigcontext_addr): Use I386_ESP_REGNUM instead of
SP_REGNUM.
(i386nto_init_abi): Initialize TDEP->sigtramp_p. Don't set
deprecated_pc_in_sigtramp.
* i386-sol2-tdep.c: Update copyright year.
(i386_sol2_pc_in_sigtramp): Remove function.
(i386_sol2_sigtramp_p): New function.
(i386_sol2_init_abi): Initialize TDEP->sigtramp_p. Don't set
deprecated_pc_in_sigtramp.
* i386bsd-tdep.c (i386bsd_pc_in_sigtramp): Remove function.
(i386bsd_sigtramp_start, i386bsd_sigtramp_end): Remove functions.
(i386bsd_init_abi): Don't set deprecated_pc_in_sigtramp,
deprecated_sigtramp_start and deprecated_sigtramp_end.
* i386nbsd-tdep.c: Include "frame.h" and "symtab.h".
(i386nbsd_pc_in_sigtramp): Remove function.
(i386nbsd_sigtramp_p): New function.
(i386nbsd_init_abi): Don't set deprecated_pc_in_sigtramp,
deprecated_sigtramp_start, deprecated_sigtramp_end. Initialize
TDEP->sigtramp_start, TDEP->sigtramp_end and TDEP->sigtramp_p.
* i386obsd-tdep.c: Include "frame.h", "symtab.h" and "objfiles.h".
(i386obsd_pc_in_sigtramp): Remove function.
(i386obsd_sigtramp_p): New function.
(i386obsd_sigtramp_start, i386obsd_sigtramp_end): Remove
functions.
(i386bsd_init_abi): Don't set deprecated_pc_in_sigtramp,
deprecated_sigtramp_start, deprecated_sigtramp_end. Initialize
TDEP->sigtramp_p.
* Makefile.in (amd64-linux-tdep.o, amd64nbsd-tdep.o,
amd64obsd-tdep.o, i386nbsd-tdep.o, i386obsd-tdep.o): Update
dependencies.
2004-04-10 00:28:50 +08:00
|
|
|
|
tdep->sigtramp_p = amd64_linux_sigtramp_p;
|
2004-02-23 04:29:48 +08:00
|
|
|
|
tdep->sigcontext_addr = amd64_linux_sigcontext_addr;
|
|
|
|
|
tdep->sc_reg_offset = amd64_linux_sc_reg_offset;
|
|
|
|
|
tdep->sc_num_regs = ARRAY_SIZE (amd64_linux_sc_reg_offset);
|
* amd64-linux-tdep.h: Remove file.
* amd64-linux-tdep.c: Don't include "inferior.h" and
"amd64-linux-tdep.h". Include "frame.h" and "solib-svr4.h".
(USER_R15, USER_R14, USER_R13, USER_R12, USER_RBP, USER_RBX)
(USER_R11, USER_R10, USER_R9, USER_R8, USER_RAX, USER_RCX)
(USER_RDX, USER_RSI, USER_RDI, USER_RIP, USER_CS, USER_EFLAGS)
(USER_RSP, USER_SS, USER_DS, USER_ES, USER_FS, USER_GS): Remove
macros.
(user_to_gdb_regmap): Remove variable.
(amd64_linux_gregset_reg_offset): New variable.
(amd64_core_fns): Remove variable.
(fetch_core_registers): Remove function.
(amd64_linux_supply_gregset, amd64_linux_fill_gregset): Remove
functions.
(_initialize_amd64_linux_tdep): Don't set add_core_fns.
* amd64-linux-nat.c: Don't include "amd64-linux-tdep.h".
* Makefile.in (amd64_linux_tdep_h): Remove.
(amd64-linux-nat.o): Update dependencies.
(amd64-linux-tdep.o): Update dependencies.
2004-03-15 06:39:26 +08:00
|
|
|
|
|
2010-04-08 02:46:50 +08:00
|
|
|
|
tdep->xsave_xcr0_offset = I386_LINUX_XSAVE_XCR0_OFFSET;
|
|
|
|
|
|
2006-08-19 23:15:18 +08:00
|
|
|
|
/* Add the %orig_rax register used for syscall restarting. */
|
|
|
|
|
set_gdbarch_write_pc (gdbarch, amd64_linux_write_pc);
|
2010-03-01 23:33:32 +08:00
|
|
|
|
|
|
|
|
|
tdep->register_reggroup_p = amd64_linux_register_reggroup_p;
|
2006-08-19 23:15:18 +08:00
|
|
|
|
|
2009-09-15 11:30:08 +08:00
|
|
|
|
/* Functions for 'catch syscall'. */
|
|
|
|
|
set_xml_syscall_file_name (XML_SYSCALL_FILENAME_AMD64);
|
|
|
|
|
set_gdbarch_get_syscall_number (gdbarch,
|
|
|
|
|
amd64_linux_get_syscall_number);
|
|
|
|
|
|
2005-04-01 03:58:26 +08:00
|
|
|
|
/* Enable TLS support. */
|
|
|
|
|
set_gdbarch_fetch_tls_load_module_address (gdbarch,
|
|
|
|
|
svr4_fetch_objfile_link_map);
|
* opcode/i386.h: Add multiple inclusion protection.
(EAX_REG_NUM,ECX_REG_NUM,EDX_REGNUM,EBX_REG_NUM,ESI_REG_NUM)
(EDI_REG_NUM): New macros.
(MODRM_MOD_FIELD,MODRM_REG_FIELD,MODRM_RM_FIELD): New macros.
(SIB_SCALE_FIELD,SIB_INDEX_FIELD,SIB_BASE_FIELD): New macros.
(REG_PREFIX_P): New macro.
* amd64-tdep.h (amd64_displaced_step_copy_insn): Declare.
(amd64_displaced_step_fixup): Declare.
* amd64-tdep.c: #include opcode/i386.h, dis-asm.h.
(amd64_arch_regmap): Move out of amd64_analyze_stack_align
and make static global.
(amd64_arch_regmap_len): New static global.
(amd64_arch_reg_to_regnum): New function.
(struct amd64_insn): New struct.
(struct displaced_step_closure): New struct.
(onebyte_has_modrm,twobyte_has_modrm): New static globals.
(rex_prefix_p,skip_prefixes)
(amd64_insn_length_fprintf,amd64_insn_length_init_dis)
(amd64_insn_length,amd64_get_unused_input_int_reg)
(amd64_get_insn_details,fixup_riprel,fixup_displaced_copy)
(amd64_displaced_step_copy_insn)
(amd64_absolute_jmp_p,amd64_absolute_call_p,amd64_ret_p)
(amd64_call_p,amd64_breakpoint_p,amd64_syscall_p)
(amd64_displaced_step_fixup): New functions.
* amd64-linux-tdep.c: #include arch-utils.h.
(amd64_linux_init_abi): Install displaced stepping support.
* gdb.arch/amd64-disp-step.S: New file.
* gdb.arch/amd64-disp-step.exp: New file.
* gdb.arch/i386-disp-step.S: New file.
* gdb.arch/i386-disp-step.exp: New file.
2009-01-29 08:29:57 +08:00
|
|
|
|
|
2009-08-18 02:23:45 +08:00
|
|
|
|
/* GNU/Linux uses SVR4-style shared libraries. */
|
|
|
|
|
set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target);
|
|
|
|
|
|
2012-05-07 18:47:22 +08:00
|
|
|
|
/* GNU/Linux uses the dynamic linker included in the GNU C Library. */
|
|
|
|
|
set_gdbarch_skip_solib_resolver (gdbarch, glibc_skip_solib_resolver);
|
|
|
|
|
|
Replace 'core_regset_sections' by iterator method
The core_regset_sections list in gdbarch (needed for multi-arch
capable core file generation support) is replaced by an iterator
method. Overall, this reduces the code a bit, and it allows for more
flexibility.
gdb/ChangeLog:
* amd64-linux-tdep.c (amd64_linux_regset_sections): Remove.
(amd64_linux_iterate_over_regset_sections): New.
(amd64_linux_init_abi_common): Don't install the regset section
list, but the new iterator in gdbarch.
* arm-linux-tdep.c (arm_linux_fpa_regset_sections)
(arm_linux_vfp_regset_sections): Remove. Move combined logic...
(arm_linux_iterate_over_regset_sections): ...here. New function.
(arm_linux_init_abi): Set iterator instead of section list.
* corelow.c (get_core_registers_cb): New function, logic moved
from...
(get_core_registers): ...loop body here. Use new iterator method
instead of walking through the regset section list.
* gdbarch.sh: Remove 'core_regset_sections'. New method
'iterate_over_regset_sections'. New typedef
'iterate_over_regset_sections_cb'.
* gdbarch.c: Regenerate.
* gdbarch.h: Likewise.
* i386-linux-tdep.c (i386_linux_regset_sections)
(i386_linux_sse_regset_sections, i386_linux_avx_regset_sections):
Remove.
(i386_linux_iterate_over_regset_sections): New.
(i386_linux_init_abi): Don't choose a regset section list, but
install new iterator in gdbarch.
* linux-tdep.c (struct linux_collect_regset_section_cb_data): New.
(linux_collect_regset_section_cb): New function, logic moved
from...
(linux_collect_thread_registers): ...loop body here. Use iterator
method instead of walking through list.
(linux_make_corefile_notes_1): Check for presence of iterator
method instead of regset section list.
* ppc-linux-tdep.c (ppc_linux_vsx_regset_sections)
(ppc_linux_vmx_regset_sections, ppc_linux_fp_regset_sections)
(ppc64_linux_vsx_regset_sections, ppc64_linux_vmx_regset_sections)
(ppc64_linux_fp_regset_sections): Remove. Move combined logic...
(ppc_linux_iterate_over_regset_sections): ...here. New function.
(ppc_linux_init_abi): Don't choose from above regset section
lists, but install new iterator in gdbarch.
* regset.h (struct core_regset_section): Remove.
* s390-linux-tdep.c (struct gdbarch_tdep): Add new fields
have_linux_v1, have_linux_v2, and have_tdb.
(s390_linux32_regset_sections, s390_linux32v1_regset_sections)
(s390_linux32v2_regset_sections, s390_linux64_regset_sections)
(s390_linux64v1_regset_sections, s390_linux64v2_regset_sections)
(s390x_linux64_regset_sections, s390x_linux64v1_regset_sections)
(s390x_linux64v2_regset_sections): Remove. Move combined logic...
(s390_iterate_over_regset_sections): ...here. New function. Use
new tdep fields.
(s390_gdbarch_init): Set new tdep fields. Don't choose from above
regset section lists, but install new iterator.
2014-09-04 23:26:43 +08:00
|
|
|
|
/* Iterate over core file register note sections. */
|
|
|
|
|
set_gdbarch_iterate_over_regset_sections
|
|
|
|
|
(gdbarch, amd64_linux_iterate_over_regset_sections);
|
2010-04-08 02:46:50 +08:00
|
|
|
|
|
2010-03-01 23:33:32 +08:00
|
|
|
|
set_gdbarch_core_read_description (gdbarch,
|
|
|
|
|
amd64_linux_core_read_description);
|
|
|
|
|
|
* opcode/i386.h: Add multiple inclusion protection.
(EAX_REG_NUM,ECX_REG_NUM,EDX_REGNUM,EBX_REG_NUM,ESI_REG_NUM)
(EDI_REG_NUM): New macros.
(MODRM_MOD_FIELD,MODRM_REG_FIELD,MODRM_RM_FIELD): New macros.
(SIB_SCALE_FIELD,SIB_INDEX_FIELD,SIB_BASE_FIELD): New macros.
(REG_PREFIX_P): New macro.
* amd64-tdep.h (amd64_displaced_step_copy_insn): Declare.
(amd64_displaced_step_fixup): Declare.
* amd64-tdep.c: #include opcode/i386.h, dis-asm.h.
(amd64_arch_regmap): Move out of amd64_analyze_stack_align
and make static global.
(amd64_arch_regmap_len): New static global.
(amd64_arch_reg_to_regnum): New function.
(struct amd64_insn): New struct.
(struct displaced_step_closure): New struct.
(onebyte_has_modrm,twobyte_has_modrm): New static globals.
(rex_prefix_p,skip_prefixes)
(amd64_insn_length_fprintf,amd64_insn_length_init_dis)
(amd64_insn_length,amd64_get_unused_input_int_reg)
(amd64_get_insn_details,fixup_riprel,fixup_displaced_copy)
(amd64_displaced_step_copy_insn)
(amd64_absolute_jmp_p,amd64_absolute_call_p,amd64_ret_p)
(amd64_call_p,amd64_breakpoint_p,amd64_syscall_p)
(amd64_displaced_step_fixup): New functions.
* amd64-linux-tdep.c: #include arch-utils.h.
(amd64_linux_init_abi): Install displaced stepping support.
* gdb.arch/amd64-disp-step.S: New file.
* gdb.arch/amd64-disp-step.exp: New file.
* gdb.arch/i386-disp-step.S: New file.
* gdb.arch/i386-disp-step.exp: New file.
2009-01-29 08:29:57 +08:00
|
|
|
|
/* Displaced stepping. */
|
|
|
|
|
set_gdbarch_displaced_step_copy_insn (gdbarch,
|
|
|
|
|
amd64_displaced_step_copy_insn);
|
|
|
|
|
set_gdbarch_displaced_step_fixup (gdbarch, amd64_displaced_step_fixup);
|
|
|
|
|
set_gdbarch_displaced_step_free_closure (gdbarch,
|
|
|
|
|
simple_displaced_step_free_closure);
|
|
|
|
|
set_gdbarch_displaced_step_location (gdbarch,
|
|
|
|
|
displaced_step_at_entry_point);
|
2009-02-07 06:59:01 +08:00
|
|
|
|
|
|
|
|
|
set_gdbarch_get_siginfo_type (gdbarch, linux_get_siginfo_type);
|
2009-08-10 11:06:34 +08:00
|
|
|
|
|
|
|
|
|
set_gdbarch_process_record (gdbarch, i386_process_record);
|
2009-09-21 13:57:09 +08:00
|
|
|
|
set_gdbarch_process_record_signal (gdbarch, amd64_linux_record_signal);
|
2013-12-20 06:17:48 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
|
amd64_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
|
|
|
|
|
{
|
|
|
|
|
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
|
|
|
|
const struct target_desc *tdesc = info.target_desc;
|
|
|
|
|
struct tdesc_arch_data *tdesc_data = (void *) info.tdep_info;
|
|
|
|
|
const struct tdesc_feature *feature;
|
|
|
|
|
int valid_p;
|
|
|
|
|
|
|
|
|
|
gdb_assert (tdesc_data);
|
|
|
|
|
|
|
|
|
|
tdep->gregset_reg_offset = amd64_linux_gregset_reg_offset;
|
|
|
|
|
tdep->gregset_num_regs = ARRAY_SIZE (amd64_linux_gregset_reg_offset);
|
|
|
|
|
tdep->sizeof_gregset = 27 * 8;
|
|
|
|
|
|
|
|
|
|
amd64_init_abi (info, gdbarch);
|
|
|
|
|
|
|
|
|
|
/* Reserve a number for orig_rax. */
|
|
|
|
|
set_gdbarch_num_regs (gdbarch, AMD64_LINUX_NUM_REGS);
|
|
|
|
|
|
|
|
|
|
if (! tdesc_has_registers (tdesc))
|
|
|
|
|
tdesc = tdesc_amd64_linux;
|
|
|
|
|
tdep->tdesc = tdesc;
|
|
|
|
|
|
|
|
|
|
feature = tdesc_find_feature (tdesc, "org.gnu.gdb.i386.linux");
|
|
|
|
|
if (feature == NULL)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
valid_p = tdesc_numbered_register (feature, tdesc_data,
|
|
|
|
|
AMD64_LINUX_ORIG_RAX_REGNUM,
|
|
|
|
|
"orig_rax");
|
|
|
|
|
if (!valid_p)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
amd64_linux_init_abi_common (info, gdbarch);
|
2009-08-10 11:06:34 +08:00
|
|
|
|
|
|
|
|
|
/* Initialize the amd64_linux_record_tdep. */
|
|
|
|
|
/* These values are the size of the type that will be used in a system
|
|
|
|
|
call. They are obtained from Linux Kernel source. */
|
|
|
|
|
amd64_linux_record_tdep.size_pointer
|
|
|
|
|
= gdbarch_ptr_bit (gdbarch) / TARGET_CHAR_BIT;
|
|
|
|
|
amd64_linux_record_tdep.size__old_kernel_stat = 32;
|
|
|
|
|
amd64_linux_record_tdep.size_tms = 32;
|
|
|
|
|
amd64_linux_record_tdep.size_loff_t = 8;
|
|
|
|
|
amd64_linux_record_tdep.size_flock = 32;
|
|
|
|
|
amd64_linux_record_tdep.size_oldold_utsname = 45;
|
|
|
|
|
amd64_linux_record_tdep.size_ustat = 32;
|
|
|
|
|
/* ADM64 doesn't need this size because it doesn't have sys_sigaction
|
|
|
|
|
but sys_rt_sigaction. */
|
|
|
|
|
amd64_linux_record_tdep.size_old_sigaction = 152;
|
|
|
|
|
/* ADM64 doesn't need this size because it doesn't have sys_sigpending
|
|
|
|
|
but sys_rt_sigpending. */
|
|
|
|
|
amd64_linux_record_tdep.size_old_sigset_t = 128;
|
|
|
|
|
amd64_linux_record_tdep.size_rlimit = 16;
|
|
|
|
|
amd64_linux_record_tdep.size_rusage = 144;
|
|
|
|
|
amd64_linux_record_tdep.size_timeval = 16;
|
|
|
|
|
amd64_linux_record_tdep.size_timezone = 8;
|
|
|
|
|
/* ADM64 doesn't need this size because it doesn't have sys_getgroups16
|
|
|
|
|
but sys_getgroups. */
|
|
|
|
|
amd64_linux_record_tdep.size_old_gid_t = 2;
|
|
|
|
|
/* ADM64 doesn't need this size because it doesn't have sys_getresuid16
|
|
|
|
|
but sys_getresuid. */
|
|
|
|
|
amd64_linux_record_tdep.size_old_uid_t = 2;
|
|
|
|
|
amd64_linux_record_tdep.size_fd_set = 128;
|
|
|
|
|
amd64_linux_record_tdep.size_dirent = 280;
|
|
|
|
|
amd64_linux_record_tdep.size_dirent64 = 280;
|
|
|
|
|
amd64_linux_record_tdep.size_statfs = 120;
|
|
|
|
|
amd64_linux_record_tdep.size_statfs64 = 120;
|
|
|
|
|
amd64_linux_record_tdep.size_sockaddr = 16;
|
|
|
|
|
amd64_linux_record_tdep.size_int
|
|
|
|
|
= gdbarch_int_bit (gdbarch) / TARGET_CHAR_BIT;
|
|
|
|
|
amd64_linux_record_tdep.size_long
|
|
|
|
|
= gdbarch_long_bit (gdbarch) / TARGET_CHAR_BIT;
|
|
|
|
|
amd64_linux_record_tdep.size_ulong
|
|
|
|
|
= gdbarch_long_bit (gdbarch) / TARGET_CHAR_BIT;
|
|
|
|
|
amd64_linux_record_tdep.size_msghdr = 56;
|
|
|
|
|
amd64_linux_record_tdep.size_itimerval = 32;
|
|
|
|
|
amd64_linux_record_tdep.size_stat = 144;
|
|
|
|
|
amd64_linux_record_tdep.size_old_utsname = 325;
|
|
|
|
|
amd64_linux_record_tdep.size_sysinfo = 112;
|
|
|
|
|
amd64_linux_record_tdep.size_msqid_ds = 120;
|
|
|
|
|
amd64_linux_record_tdep.size_shmid_ds = 112;
|
|
|
|
|
amd64_linux_record_tdep.size_new_utsname = 390;
|
|
|
|
|
amd64_linux_record_tdep.size_timex = 208;
|
|
|
|
|
amd64_linux_record_tdep.size_mem_dqinfo = 24;
|
|
|
|
|
amd64_linux_record_tdep.size_if_dqblk = 72;
|
|
|
|
|
amd64_linux_record_tdep.size_fs_quota_stat = 80;
|
|
|
|
|
amd64_linux_record_tdep.size_timespec = 16;
|
|
|
|
|
amd64_linux_record_tdep.size_pollfd = 8;
|
|
|
|
|
amd64_linux_record_tdep.size_NFS_FHSIZE = 32;
|
|
|
|
|
amd64_linux_record_tdep.size_knfsd_fh = 132;
|
|
|
|
|
amd64_linux_record_tdep.size_TASK_COMM_LEN = 16;
|
|
|
|
|
amd64_linux_record_tdep.size_sigaction = 152;
|
|
|
|
|
amd64_linux_record_tdep.size_sigset_t = 128;
|
|
|
|
|
amd64_linux_record_tdep.size_siginfo_t = 128;
|
|
|
|
|
amd64_linux_record_tdep.size_cap_user_data_t = 8;
|
|
|
|
|
amd64_linux_record_tdep.size_stack_t = 24;
|
|
|
|
|
amd64_linux_record_tdep.size_off_t = 8;
|
|
|
|
|
amd64_linux_record_tdep.size_stat64 = 144;
|
|
|
|
|
amd64_linux_record_tdep.size_gid_t = 4;
|
|
|
|
|
amd64_linux_record_tdep.size_uid_t = 4;
|
|
|
|
|
amd64_linux_record_tdep.size_PAGE_SIZE = 4096;
|
|
|
|
|
amd64_linux_record_tdep.size_flock64 = 32;
|
|
|
|
|
amd64_linux_record_tdep.size_user_desc = 16;
|
|
|
|
|
amd64_linux_record_tdep.size_io_event = 32;
|
|
|
|
|
amd64_linux_record_tdep.size_iocb = 64;
|
|
|
|
|
amd64_linux_record_tdep.size_epoll_event = 12;
|
|
|
|
|
amd64_linux_record_tdep.size_itimerspec = 32;
|
|
|
|
|
amd64_linux_record_tdep.size_mq_attr = 64;
|
|
|
|
|
amd64_linux_record_tdep.size_siginfo = 128;
|
|
|
|
|
amd64_linux_record_tdep.size_termios = 60;
|
|
|
|
|
amd64_linux_record_tdep.size_termios2 = 44;
|
|
|
|
|
amd64_linux_record_tdep.size_pid_t = 4;
|
|
|
|
|
amd64_linux_record_tdep.size_winsize = 8;
|
|
|
|
|
amd64_linux_record_tdep.size_serial_struct = 72;
|
|
|
|
|
amd64_linux_record_tdep.size_serial_icounter_struct = 80;
|
|
|
|
|
amd64_linux_record_tdep.size_hayes_esp_config = 12;
|
|
|
|
|
amd64_linux_record_tdep.size_size_t = 8;
|
|
|
|
|
amd64_linux_record_tdep.size_iovec = 16;
|
|
|
|
|
|
2013-12-20 06:17:48 +08:00
|
|
|
|
/* These values are the second argument of system call "sys_fcntl"
|
|
|
|
|
and "sys_fcntl64". They are obtained from Linux Kernel source. */
|
|
|
|
|
amd64_linux_record_tdep.fcntl_F_GETLK = 5;
|
|
|
|
|
amd64_linux_record_tdep.fcntl_F_GETLK64 = 12;
|
|
|
|
|
amd64_linux_record_tdep.fcntl_F_SETLK64 = 13;
|
|
|
|
|
amd64_linux_record_tdep.fcntl_F_SETLKW64 = 14;
|
|
|
|
|
|
|
|
|
|
amd64_linux_record_tdep.arg1 = AMD64_RDI_REGNUM;
|
|
|
|
|
amd64_linux_record_tdep.arg2 = AMD64_RSI_REGNUM;
|
|
|
|
|
amd64_linux_record_tdep.arg3 = AMD64_RDX_REGNUM;
|
|
|
|
|
amd64_linux_record_tdep.arg4 = AMD64_R10_REGNUM;
|
|
|
|
|
amd64_linux_record_tdep.arg5 = AMD64_R8_REGNUM;
|
|
|
|
|
amd64_linux_record_tdep.arg6 = AMD64_R9_REGNUM;
|
|
|
|
|
|
2009-08-10 11:06:34 +08:00
|
|
|
|
/* These values are the second argument of system call "sys_ioctl".
|
|
|
|
|
They are obtained from Linux Kernel source. */
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TCGETS = 0x5401;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TCSETS = 0x5402;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TCSETSW = 0x5403;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TCSETSF = 0x5404;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TCGETA = 0x5405;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TCSETA = 0x5406;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TCSETAW = 0x5407;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TCSETAF = 0x5408;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TCSBRK = 0x5409;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TCXONC = 0x540A;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TCFLSH = 0x540B;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCEXCL = 0x540C;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCNXCL = 0x540D;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCSCTTY = 0x540E;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCGPGRP = 0x540F;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCSPGRP = 0x5410;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCOUTQ = 0x5411;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCSTI = 0x5412;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCGWINSZ = 0x5413;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCSWINSZ = 0x5414;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCMGET = 0x5415;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCMBIS = 0x5416;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCMBIC = 0x5417;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCMSET = 0x5418;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCGSOFTCAR = 0x5419;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCSSOFTCAR = 0x541A;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_FIONREAD = 0x541B;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCINQ
|
|
|
|
|
= amd64_linux_record_tdep.ioctl_FIONREAD;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCLINUX = 0x541C;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCCONS = 0x541D;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCGSERIAL = 0x541E;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCSSERIAL = 0x541F;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCPKT = 0x5420;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_FIONBIO = 0x5421;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCNOTTY = 0x5422;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCSETD = 0x5423;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCGETD = 0x5424;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TCSBRKP = 0x5425;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCTTYGSTRUCT = 0x5426;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCSBRK = 0x5427;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCCBRK = 0x5428;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCGSID = 0x5429;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TCGETS2 = 0x802c542a;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TCSETS2 = 0x402c542b;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TCSETSW2 = 0x402c542c;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TCSETSF2 = 0x402c542d;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCGPTN = 0x80045430;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCSPTLCK = 0x40045431;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_FIONCLEX = 0x5450;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_FIOCLEX = 0x5451;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_FIOASYNC = 0x5452;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCSERCONFIG = 0x5453;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCSERGWILD = 0x5454;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCSERSWILD = 0x5455;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCGLCKTRMIOS = 0x5456;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCSLCKTRMIOS = 0x5457;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCSERGSTRUCT = 0x5458;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCSERGETLSR = 0x5459;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCSERGETMULTI = 0x545A;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCSERSETMULTI = 0x545B;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCMIWAIT = 0x545C;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCGICOUNT = 0x545D;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCGHAYESESP = 0x545E;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_TIOCSHAYESESP = 0x545F;
|
|
|
|
|
amd64_linux_record_tdep.ioctl_FIOQSIZE = 0x5460;
|
|
|
|
|
|
|
|
|
|
tdep->i386_syscall_record = amd64_linux_syscall_record;
|
2012-06-14 04:36:48 +08:00
|
|
|
|
|
|
|
|
|
/* GNU/Linux uses SVR4-style shared libraries. */
|
|
|
|
|
set_solib_svr4_fetch_link_map_offsets
|
|
|
|
|
(gdbarch, svr4_lp64_fetch_link_map_offsets);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
static void
|
|
|
|
|
amd64_x32_linux_init_abi(struct gdbarch_info info, struct gdbarch *gdbarch)
|
|
|
|
|
{
|
|
|
|
|
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
|
|
|
|
const struct target_desc *tdesc = info.target_desc;
|
|
|
|
|
struct tdesc_arch_data *tdesc_data = (void *) info.tdep_info;
|
|
|
|
|
const struct tdesc_feature *feature;
|
|
|
|
|
int valid_p;
|
|
|
|
|
|
|
|
|
|
gdb_assert (tdesc_data);
|
|
|
|
|
|
|
|
|
|
tdep->gregset_reg_offset = amd64_linux_gregset_reg_offset;
|
|
|
|
|
tdep->gregset_num_regs = ARRAY_SIZE (amd64_linux_gregset_reg_offset);
|
|
|
|
|
tdep->sizeof_gregset = 27 * 8;
|
|
|
|
|
|
|
|
|
|
amd64_x32_init_abi (info, gdbarch);
|
|
|
|
|
|
|
|
|
|
/* Reserve a number for orig_rax. */
|
|
|
|
|
set_gdbarch_num_regs (gdbarch, AMD64_LINUX_NUM_REGS);
|
|
|
|
|
|
|
|
|
|
if (! tdesc_has_registers (tdesc))
|
|
|
|
|
tdesc = tdesc_x32_linux;
|
|
|
|
|
tdep->tdesc = tdesc;
|
|
|
|
|
|
|
|
|
|
feature = tdesc_find_feature (tdesc, "org.gnu.gdb.i386.linux");
|
|
|
|
|
if (feature == NULL)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
valid_p = tdesc_numbered_register (feature, tdesc_data,
|
|
|
|
|
AMD64_LINUX_ORIG_RAX_REGNUM,
|
|
|
|
|
"orig_rax");
|
|
|
|
|
if (!valid_p)
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
|
|
amd64_linux_init_abi_common (info, gdbarch);
|
|
|
|
|
|
2013-12-20 06:17:48 +08:00
|
|
|
|
/* Initialize the amd64_x32_linux_record_tdep. */
|
|
|
|
|
/* These values are the size of the type that will be used in a system
|
|
|
|
|
call. They are obtained from Linux Kernel source. */
|
|
|
|
|
amd64_x32_linux_record_tdep.size_pointer
|
|
|
|
|
= gdbarch_ptr_bit (gdbarch) / TARGET_CHAR_BIT;
|
|
|
|
|
amd64_x32_linux_record_tdep.size__old_kernel_stat = 32;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_tms = 32;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_loff_t = 8;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_flock = 32;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_oldold_utsname = 45;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_ustat = 32;
|
|
|
|
|
/* ADM64 doesn't need this size because it doesn't have sys_sigaction
|
|
|
|
|
but sys_rt_sigaction. */
|
|
|
|
|
amd64_x32_linux_record_tdep.size_old_sigaction = 152;
|
|
|
|
|
/* ADM64 doesn't need this size because it doesn't have sys_sigpending
|
|
|
|
|
but sys_rt_sigpending. */
|
|
|
|
|
amd64_x32_linux_record_tdep.size_old_sigset_t = 128;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_rlimit = 16;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_rusage = 144;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_timeval = 16;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_timezone = 8;
|
|
|
|
|
/* ADM64 doesn't need this size because it doesn't have sys_getgroups16
|
|
|
|
|
but sys_getgroups. */
|
|
|
|
|
amd64_x32_linux_record_tdep.size_old_gid_t = 2;
|
|
|
|
|
/* ADM64 doesn't need this size because it doesn't have sys_getresuid16
|
|
|
|
|
but sys_getresuid. */
|
|
|
|
|
amd64_x32_linux_record_tdep.size_old_uid_t = 2;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_fd_set = 128;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_dirent = 280;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_dirent64 = 280;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_statfs = 120;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_statfs64 = 120;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_sockaddr = 16;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_int
|
|
|
|
|
= gdbarch_int_bit (gdbarch) / TARGET_CHAR_BIT;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_long
|
|
|
|
|
= 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_itimerval = 32;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_stat = 144;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_old_utsname = 325;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_sysinfo = 112;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_msqid_ds = 120;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_shmid_ds = 112;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_new_utsname = 390;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_timex = 208;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_mem_dqinfo = 24;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_if_dqblk = 72;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_fs_quota_stat = 80;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_timespec = 16;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_pollfd = 8;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_NFS_FHSIZE = 32;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_knfsd_fh = 132;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_TASK_COMM_LEN = 16;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_sigaction = 152;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_sigset_t = 128;
|
|
|
|
|
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_off_t = 8;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_stat64 = 144;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_gid_t = 4;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_uid_t = 4;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_PAGE_SIZE = 4096;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_flock64 = 32;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_user_desc = 16;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_io_event = 32;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_iocb = 64;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_epoll_event = 12;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_itimerspec = 32;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_mq_attr = 64;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_siginfo = 128;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_termios = 60;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_termios2 = 44;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_pid_t = 4;
|
|
|
|
|
amd64_x32_linux_record_tdep.size_winsize = 8;
|
|
|
|
|
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;
|
|
|
|
|
|
|
|
|
|
/* These values are the second argument of system call "sys_fcntl"
|
|
|
|
|
and "sys_fcntl64". They are obtained from Linux Kernel source. */
|
|
|
|
|
amd64_x32_linux_record_tdep.fcntl_F_GETLK = 5;
|
|
|
|
|
amd64_x32_linux_record_tdep.fcntl_F_GETLK64 = 12;
|
|
|
|
|
amd64_x32_linux_record_tdep.fcntl_F_SETLK64 = 13;
|
|
|
|
|
amd64_x32_linux_record_tdep.fcntl_F_SETLKW64 = 14;
|
|
|
|
|
|
|
|
|
|
amd64_x32_linux_record_tdep.arg1 = AMD64_RDI_REGNUM;
|
|
|
|
|
amd64_x32_linux_record_tdep.arg2 = AMD64_RSI_REGNUM;
|
|
|
|
|
amd64_x32_linux_record_tdep.arg3 = AMD64_RDX_REGNUM;
|
|
|
|
|
amd64_x32_linux_record_tdep.arg4 = AMD64_R10_REGNUM;
|
|
|
|
|
amd64_x32_linux_record_tdep.arg5 = AMD64_R8_REGNUM;
|
|
|
|
|
amd64_x32_linux_record_tdep.arg6 = AMD64_R9_REGNUM;
|
|
|
|
|
|
|
|
|
|
/* These values are the second argument of system call "sys_ioctl".
|
|
|
|
|
They are obtained from Linux Kernel source. */
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TCGETS = 0x5401;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TCSETS = 0x5402;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TCSETSW = 0x5403;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TCSETSF = 0x5404;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TCGETA = 0x5405;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TCSETA = 0x5406;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TCSETAW = 0x5407;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TCSETAF = 0x5408;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TCSBRK = 0x5409;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TCXONC = 0x540A;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TCFLSH = 0x540B;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCEXCL = 0x540C;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCNXCL = 0x540D;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCSCTTY = 0x540E;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCGPGRP = 0x540F;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCSPGRP = 0x5410;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCOUTQ = 0x5411;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCSTI = 0x5412;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCGWINSZ = 0x5413;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCSWINSZ = 0x5414;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCMGET = 0x5415;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCMBIS = 0x5416;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCMBIC = 0x5417;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCMSET = 0x5418;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCGSOFTCAR = 0x5419;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCSSOFTCAR = 0x541A;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_FIONREAD = 0x541B;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCINQ = amd64_x32_linux_record_tdep.ioctl_FIONREAD;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCLINUX = 0x541C;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCCONS = 0x541D;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCGSERIAL = 0x541E;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCSSERIAL = 0x541F;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCPKT = 0x5420;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_FIONBIO = 0x5421;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCNOTTY = 0x5422;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCSETD = 0x5423;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCGETD = 0x5424;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TCSBRKP = 0x5425;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCTTYGSTRUCT = 0x5426;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCSBRK = 0x5427;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCCBRK = 0x5428;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCGSID = 0x5429;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TCGETS2 = 0x802c542a;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TCSETS2 = 0x402c542b;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TCSETSW2 = 0x402c542c;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TCSETSF2 = 0x402c542d;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCGPTN = 0x80045430;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCSPTLCK = 0x40045431;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_FIONCLEX = 0x5450;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_FIOCLEX = 0x5451;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_FIOASYNC = 0x5452;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCSERCONFIG = 0x5453;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCSERGWILD = 0x5454;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCSERSWILD = 0x5455;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCGLCKTRMIOS = 0x5456;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCSLCKTRMIOS = 0x5457;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCSERGSTRUCT = 0x5458;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCSERGETLSR = 0x5459;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCSERGETMULTI = 0x545A;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCSERSETMULTI = 0x545B;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCMIWAIT = 0x545C;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCGICOUNT = 0x545D;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCGHAYESESP = 0x545E;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_TIOCSHAYESESP = 0x545F;
|
|
|
|
|
amd64_x32_linux_record_tdep.ioctl_FIOQSIZE = 0x5460;
|
|
|
|
|
|
|
|
|
|
tdep->i386_syscall_record = amd64_x32_linux_syscall_record;
|
|
|
|
|
|
2012-06-14 04:36:48 +08:00
|
|
|
|
/* GNU/Linux uses SVR4-style shared libraries. */
|
|
|
|
|
set_solib_svr4_fetch_link_map_offsets
|
|
|
|
|
(gdbarch, svr4_ilp32_fetch_link_map_offsets);
|
|
|
|
|
}
|
* x86-64-tdep.h (x86_64_num_regs, x86_64_num_gregs): Remove
variable declarations.
(x86_64_register_number, x86_64_register_name): Remove prototypes.
(x86_64_linux_frame_saved_pc, x86_64_linux+saved_pc_after_call,
x86_64_linux_in_sigtramp, x86_64_linux_frame_chain,
x86_64_init_frame_pc, x86_64_init_frame_pc,
x86_64_function_has_prologue): Remove prototypes.
(X86_64_NUM_GREGS): New define.
(x86_64_supply_fxsave, x86_64_fill_fxsave): New prototypes.
* x86-64-tdep.c: Don't include "dwarf2cfi.h". Include
"dummy_frame.h", "frame.h", "frame-base.h", "frame-unwind.h".
(RAX_REGNUM, RDX_REGNUM, RDI_REGNUM, EFLAGS_REGNUM, ST0_REGNUM,
XMM1_REGNUM): Remove defines.
(X86_64_RAX_REGNUM, X86_64_RDX_REGNUM, X86_64_RDI_REGNUM,
X86_64_RBP_REGNUM, X86_64_RSP_REGNUM, X86_64_RIP_REGNUM,
X86_64_EFLAGS_REGNUM, X86_64_ST0_REGNUM, X86_64_XMM0_REGNUM,
X86_64_XMM1_REGNUM): New defines.
(struct x86_64_register_info): Renamed from `struct
register_info'. Remove `size' member.
(x86_64_register_info_table): Remove variable.
(x86_64_register_info): New variable.
(X86_64_NUM_REGS): New define.
(X86_64_NUM_GREGS): Remove define.
(x86_64_num_regs, x86_64_num_gregs): Remove variables.
(x86_64_dwarf2gdb_regno_map, x86_64_dwarf2gdb_regno_map_length):
Remove variables.
(x86_54_dwarf2_reg_to_regnum): Remove function.
(x86_64_dwarf_regmap, x86_64_dwarf_regmap_len): New variables.
(x86_64_dwarf_reg_to_regnum): New function.
(x86_64_register_name): Rewrite.
(x86_64_register_raw_size): Remove function.
(x86_64_register_byte_table): Remove variable.
(x86_64_register_byte): Remove function.
(x86_64_register_virtual_type): Remove function.
(x86_64_register_type): New function.
(x86_64_register_convertible, x86_64_register_convert_to_virtual,
x86_64_register_convert_to_raw): Remove functions.
(x86_64_push_return_address, x86_64_pop_frame): Remove functon.
(x86_64_use_struct_convention): Make static. Adjust for renamed
defines.
(x86_64_frame_init_saved_regs): Remove function.
(x86_64_push_arguments): Make static. Change to accept a regcache
as argument.
(x86_64_store_return_value, x86_64_extract_return_value): Make
static. Rewrite based on i386 counterparts.
(x86_64_push_dummy_call): New function.
(X86_64_NUM_SAVED_REGS): New define.
(x86_64_register_number): Remove function.
(x86_64_store_struct_return): Remove function.
(x86_64_frameless_function_invocation,
x86_64_function_has_prologue): Remove functions.
(PROLOG_BUFSIZE): Remove define.
(struct x86_64_frame_cache): New structure.
(x86_64_alloc_frame_cache, x86_64_analyze_prologue,
x86_64_frame_cache, x86_64_frame_this_id,
x86_64_frame_prev_register, x86_64_frame_p,
x86_64_sigtramp_frame_cache, x86_64_sigtramp_frame_this_id,
x86_64_sigtramp_frame_prev_register, x86_sigtramp_frame_p): New
functions.
(x86_64_frame_unwind, x86_64_sigtramp_frame_unwind): New
variables.
(x86_64_skip_prologue): Rewrite in terms of
x86_64_analyze_prologue.
(x86_64_frame_base_address): New function.
(x86_64_frame_base): New variable.
(x86_64_save_dummy_frame_tos, x86_64_unwind_dummy_id): Rewrite.
(x86_64_init_abi): Set register_type and push_dummy_call. Don't
set deprecated_fp_regnum, deprecated_register_size,
deprecated_register_bytes, register_raw_size, register_byte,
register_virtual_type, register_convertiable,
register_convert_to_virtual, convert_to_raw,
deprecated_get_saved_register, deprecated_target_read_fp,
deprecated_push_arguments, deprecated_push_return_address,
deprecated_pop_frame, deprecated_store_struct_return,
deprecated_frame_init_saved_regs, deprecated_frame_chain,
frameless_function_invocation, deprecated_frame_saved_pc,
deprecated_saved_pc_after_call, frame_num_args, pc_in_sigtramp,
dwarf2_build_frame_info, deprecated_init_extra_frame_info,
deprecated_init_frame_pc and virtual_frame_pointer. Call
frame_unwind_append_predicate to register x86_64_sigtramp_frame_p
and x86_64_frame_p. Call frame_base_set_default to register
x86_64_frame_base.
(I387_FISEG_REGNUM, I387_FOSEG_REGNUM): New defines.
(x86_64_supply_fxsave, x86_64_fill_fxsave): New functions.
(_initialize_x86_64_tdep): Remove function.
* x86-64-linux-tdep.c: Don't include "dwarf2cfi.h".
(LINUX_SIGINFO_SIZE, LINUX_UCONTEXT_SIGCONTEXT_OFFSET,
LINUX_SIGCONTEXT_PC_OFFSET, LINUX_SIGCONTEXT_FP_OFFSET): Don't
define.
(X86_64_LINUX_UCONTEXT_SIGCONTEXT_OFFSET): Define.
(x86_64_linux_sigcontext_addr): Rewrite.
(x86_64_linux_sigtramp_saved_pc, x86_64_linux_saved_pc_after_call,
x86_64_linux_frame_saved_pc): Remove functions.
(x86_64_linux_pc_in_sigtramp): Renamed from
x86_64_linux_in_sigtramp. Try harder to recognize a signal
trampoline.
(x86_64_linux_frame_chain, x86_64_init_frame_pc):
Remove_functions.
(x86_64_linux_init_abi): Set pc_in_sigtramp. Initialize
TDEP->sigcontext_addr, TDEP->sc_pc_offset and TDEP->sc_sp_offset.
* x86-64-linux-nat.c: Sync with i386-linux-tdep.c.
(x86_64_regmap): Rename to regmap.
(GETREGS_SUPPLIES): Use X86_64_NUM_GREGS instead of
x86_64_num_gregs.
(supply_gregset, fill_gregset): Likewise. Use regmap instead of
x86_64_regmap.
(x86_64_fxsave_offset): Remove function.
(supply_fpregset): Simply call x86_64_supply_fxsave.
(fill_fpregset): Simply call x86_64_fill_fxsave.
(fetch_inferior_registers, store_inferior_registers): Avoid
asignment in if-statement.
(LINUX_SYSCALL_LEN, LINUX_SYSCALL_REGNUM, SYS_Sigreturn,
SYS_rt_sigreturn, LINUX_SIGCONTEXT_EFLAGS_OFFSET,
LINUX_UCONTEXT_SIGCONTEXT_OFFSET): Remove defines.
(fetch_core_registers): Remove function.
(linux_elf_core_fns): Remove.
(offsetoff): Don't define.
(_initialize_x86_64_linux_nat, kernel_u_size): Remove functions.
* config/i386/x86-64linux.mt (TDEPFILES): Add i386-linux-tdep.o.
* config/i386/x86-64linux.mh (NATDEPFILES): Remove core-aout.o,
add core-regset.o.
* config/i386/nm-x86-64linux.h: Use NM_X86_64_LINUX_H for
protection against multiple includes instead of NM_X86_64_h. Add
various comments. Include "config/nm-linux.h". Don't include
<signal.h>.
(REGISTER_U_ADDR, KERNEL_U_SIZE, U_REGS_OFFSET, KERN_U_ADDR,
GET_THREAD_SIGNALS): Remove defines.
(x86_64_register_u_addr, kernel_u_size,
lin_thread_get_thread_signals): Remove prototypes.
(PTRACE_ARG3_TYPE, PTRACE_XFER_TYPE): Define to `long'.
[HAVE_LINK_H]: Don't include "solib.h".
[HAVE_LINK_H] (SVR4_SHARED_LIBS): Remove define.
* config/i386/tm-x86-64linux.h: Fix comments.
* Makefile.in (x86-64-linux-nat.o, x86_64-linux-tdep.o,
x86-64-tdep.o): Update dependencies.
2003-05-31 16:15:38 +08:00
|
|
|
|
|
2002-12-22 05:09:58 +08:00
|
|
|
|
|
|
|
|
|
/* Provide a prototype to silence -Wmissing-prototypes. */
|
2004-02-23 04:29:48 +08:00
|
|
|
|
extern void _initialize_amd64_linux_tdep (void);
|
2002-12-22 05:09:58 +08:00
|
|
|
|
|
|
|
|
|
void
|
2004-02-23 04:29:48 +08:00
|
|
|
|
_initialize_amd64_linux_tdep (void)
|
2002-12-22 05:09:58 +08:00
|
|
|
|
{
|
2004-02-23 04:29:48 +08:00
|
|
|
|
gdbarch_register_osabi (bfd_arch_i386, bfd_mach_x86_64,
|
|
|
|
|
GDB_OSABI_LINUX, amd64_linux_init_abi);
|
2012-06-14 04:36:48 +08:00
|
|
|
|
gdbarch_register_osabi (bfd_arch_i386, bfd_mach_x64_32,
|
|
|
|
|
GDB_OSABI_LINUX, amd64_x32_linux_init_abi);
|
2010-03-01 23:33:32 +08:00
|
|
|
|
|
2011-01-08 03:36:19 +08:00
|
|
|
|
/* Initialize the Linux target description. */
|
2010-03-01 23:33:32 +08:00
|
|
|
|
initialize_tdesc_amd64_linux ();
|
2010-04-08 02:46:50 +08:00
|
|
|
|
initialize_tdesc_amd64_avx_linux ();
|
2013-11-20 20:02:37 +08:00
|
|
|
|
initialize_tdesc_amd64_mpx_linux ();
|
Add AVX512 registers support to GDB and GDBserver.
This patch adds support for the Intel(R) Advanced Vector
Extensions 512 (Intel(R) AVX-512) registers. Native and remote
debugging are covered by this patch.
Intel(R) AVX-512 is an extension to AVX to support 512-bit wide
SIMD registers in 64-bit mode (XMM0-XMM31, YMM0-YMM31, ZMM0-ZMM31).
The number of available registers in 32-bit mode is still 8
(XMM0-7, YMM0-7, ZMM0-7). The lower 256-bits of the ZMM registers
are aliased to the respective 256-bit YMM registers. The lower
128-bits are aliased to the respective 128-bit XMM registers.
There are also 8 new, dedicated mask registers (K0-K7) in both 32-bit
mode and 64-bit mode.
For more information please see
Intel(R) Developer Zone: Intel(R) AVX
http://software.intel.com/en-us/intel-isa-extensions#pid-16007-1495
Intel(R) Architecture Instruction Set Extensions Programming Reference:
http://software.intel.com/en-us/file/319433-017pdf
2014-04-24 Michael Sturm <michael.sturm@mintel.com>
Walfred Tedeschi <walfred.tedeschi@intel.com>
* amd64-linux-nat.c (amd64_linux_gregset32_reg_offset): Add
AVX512 registers.
(amd64_linux_read_description): Add code to handle AVX512 xstate
mask and return respective tdesc.
* amd64-linux-tdep.c: Include features/i386/amd64-avx512-linux.c
and features/i386/x32-avx512-linux.c.
(amd64_linux_gregset_reg_offset): Add AVX512 registers.
(amd64_linux_core_read_description): Add code to handle AVX512
xstate mask and return respective tdesc.
(_initialize_amd64_linux_tdep): Initialize AVX512 tdesc.
* amd64-linux-tdep.h (AMD64_LINUX_ORIG_RAX_REGNUM): Adjust regnum
calculation.
(AMD64_LINUX_NUM_REGS): Adjust to new number of registers.
(tdesc_amd64_avx512_linux): New prototype.
(tdesc_x32_avx512_linux): Likewise.
* amd64-tdep.c: Include features/i386/amd64-avx512.c and
features/i386/x32-avx512.c.
(amd64_ymm_avx512_names): New register names for pseudo
registers YMM16-31.
(amd64_ymmh_avx512_names): New register names for raw registers
YMMH16-31.
(amd64_k_names): New register names for K registers.
(amd64_zmmh_names): New register names for ZMM raw registers.
(amd64_zmm_names): New registers names for ZMM pseudo registers.
(amd64_xmm_avx512_names): New register names for XMM16-31
registers.
(amd64_pseudo_register_name): Add code to return AVX512 pseudo
registers.
(amd64_init_abi): Add code to intitialize AVX512 tdep variables
if feature is present.
(_initialize_amd64_tdep): Call AVX512 tdesc initializers.
* amd64-tdep.h (enum amd64_regnum): Add AVX512 registers.
(AMD64_NUM_REGS): Adjust to new number of registers.
* i386-linux-nat.c (GETXSTATEREGS_SUPPLIES): Extend range of
registers supplied via XSTATE by AVX512 registers.
(i386_linux_read_description): Add case for AVX512.
* i386-linux-tdep.c: Include i386-avx512-linux.c.
(i386_linux_gregset_reg_offset): Add AVX512 registers.
(i386_linux_core_read_description): Add case for AVX512.
(i386_linux_init_abi): Install supported register note section
for AVX512.
(_initialize_i386_linux_tdep): Add call to tdesc init function for
AVX512.
* i386-linux-tdep.h (I386_LINUX_NUM_REGS): Set number of
registers to be number of zmm7h + 1.
(tdesc_i386_avx512_linux): Add tdesc for AVX512 registers.
* i386-tdep.c: Include features/i386/i386-avx512.c.
(i386_zmm_names): Add ZMM pseudo register names array.
(i386_zmmh_names): Add ZMM raw register names array.
(i386_k_names): Add K raw register names array.
(num_lower_zmm_regs): Add constant for the number of lower ZMM
registers. AVX512 has 16 more ZMM registers than there are YMM
registers.
(i386_zmmh_regnum_p): Add function to look up register number of
ZMM raw registers.
(i386_zmm_regnum_p): Likewise for ZMM pseudo registers.
(i386_k_regnum_p): Likewise for K raw registers.
(i386_ymmh_avx512_regnum_p): Likewise for additional YMM raw
registers added by AVX512.
(i386_ymm_avx512_regnum_p): Likewise for additional YMM pseudo
registers added by AVX512.
(i386_xmm_avx512_regnum_p): Likewise for additional XMM registers
added by AVX512.
(i386_register_name): Add code to hide YMMH16-31 and ZMMH0-31.
(i386_pseudo_register_name): Add ZMM pseudo registers.
(i386_zmm_type): Construct and return vector registers type for ZMM
registers.
(i386_pseudo_register_type): Return appropriate type for YMM16-31,
ZMM0-31 pseudo registers and K registers.
(i386_pseudo_register_read_into_value): Add code to read K, ZMM
and YMM16-31 registers from register cache.
(i386_pseudo_register_write): Add code to write K, ZMM and
YMM16-31 registers.
(i386_register_reggroup_p): Add code to include/exclude AVX512
registers in/from respective register groups.
(i386_validate_tdesc_p): Handle AVX512 feature, add AVX512
registers if feature is present in xcr0.
(i386_gdbarch_init): Add code to initialize AVX512 feature
variables in tdep structure, wire in pseudo registers and call
initialize_tdesc_i386_avx512.
* i386-tdep.h (struct gdbarch_tdep): Add AVX512 related
variables.
(i386_regnum): Add AVX512 registers.
(I386_SSE_NUM_REGS): New define for number of SSE registers.
(I386_AVX_NUM_REGS): Likewise for AVX registers.
(I386_AVX512_NUM_REGS): Likewise for AVX512 registers.
(I386_MAX_REGISTER_SIZE): Change to 64 bytes, ZMM registers are
512 bits wide.
(i386_xmm_avx512_regnum_p): New prototype for register look up.
(i386_ymm_avx512_regnum_p): Likewise.
(i386_k_regnum_p): Likewise.
(i386_zmm_regnum_p): Likewise.
(i386_zmmh_regnum_p): Likewise.
* i387-tdep.c : Update year in copyright notice.
(xsave_ymm_avx512_offset): New table for YMM16-31 offsets in
XSAVE buffer.
(XSAVE_YMM_AVX512_ADDR): New macro.
(xsave_xmm_avx512_offset): New table for XMM16-31 offsets in
XSAVE buffer.
(XSAVE_XMM_AVX512_ADDR): New macro.
(xsave_avx512_k_offset): New table for K register offsets in
XSAVE buffer.
(XSAVE_AVX512_K_ADDR): New macro.
(xsave_avx512_zmm_h_offset): New table for ZMM register offsets
in XSAVE buffer.
(XSAVE_AVX512_ZMM_H_ADDR): New macro.
(i387_supply_xsave): Add code to supply AVX512 registers to XSAVE
buffer.
(i387_collect_xsave): Add code to collect AVX512 registers from
XSAVE buffer.
* i387-tdep.h (I387_NUM_XMM_AVX512_REGS): New define for number
of XMM16-31 registers.
(I387_NUM_K_REGS): New define for number of K registers.
(I387_K0_REGNUM): New define for K0 register number.
(I387_NUM_ZMMH_REGS): New define for number of ZMMH registers.
(I387_ZMM0H_REGNUM): New define for ZMM0H register number.
(I387_NUM_YMM_AVX512_REGS): New define for number of YMM16-31
registers.
(I387_YMM16H_REGNUM): New define for YMM16H register number.
(I387_XMM16_REGNUM): New define for XMM16 register number.
(I387_YMM0_REGNUM): New define for YMM0 register number.
(I387_KEND_REGNUM): New define for last K register number.
(I387_ZMMENDH_REGNUM): New define for last ZMMH register number.
(I387_YMMH_AVX512_END_REGNUM): New define for YMM31 register
number.
(I387_XMM_AVX512_END_REGNUM): New define for XMM31 register
number.
* common/i386-xstate.h: Add AVX 3.1 feature bits, mask and XSTATE
size.
* features/Makefile: Add AVX512 related files.
* features/i386/32bit-avx512.xml: New file.
* features/i386/64bit-avx512.xml: Likewise.
* features/i386/amd64-avx512-linux.c: Likewise.
* features/i386/amd64-avx512-linux.xml: Likewise.
* features/i386/amd64-avx512.c: Likewise.
* features/i386/amd64-avx512.xml: Likewise.
* features/i386/i386-avx512-linux.c: Likewise.
* features/i386/i386-avx512-linux.xml: Likewise.
* features/i386/i386-avx512.c: Likewise.
* features/i386/i386-avx512.xml: Likewise.
* features/i386/x32-avx512-linux.c: Likewise.
* features/i386/x32-avx512-linux.xml: Likewise.
* features/i386/x32-avx512.c: Likewise.
* features/i386/x32-avx512.xml: Likewise.
* regformats/i386/amd64-avx512-linux.dat: New file.
* regformats/i386/amd64-avx512.dat: Likewise.
* regformats/i386/i386-avx512-linux.dat: Likewise.
* regformats/i386/i386-avx512.dat: Likewise.
* regformats/i386/x32-avx512-linux.dat: Likewise.
* regformats/i386/x32-avx512.dat: Likewise.
* NEWS: Add note about new support for AVX512.
testsuite/
* Makefile.in (EXECUTABLES): Added i386-avx512.
* gdb.arch/i386-avx512.c: New file.
* gdb.arch/i386-avx512.exp: Likewise.
gdbserver/
* Makefile.in: Added rules to handle new files
i386-avx512.c i386-avx512-linux.c amd64-avx512.c
amd64-avx512-linux.c x32-avx512.c x32-avx512-linux.c.
* configure.srv (srv_i386_regobj): Add i386-avx512.o.
(srv_i386_linux_regobj): Add i386-avx512-linux.o.
(srv_amd64_regobj): Add amd64-avx512.o and x32-avx512.o.
(srv_amd64_linux_regobj): Add amd64-avx512-linux.o and
x32-avx512-linux.o.
(srv_i386_32bit_xmlfiles): Add i386/32bit-avx512.xml.
(srv_i386_64bit_xmlfiles): Add i386/64bit-avx512.xml.
(srv_amd64_xmlfiles): Add i386/amd64-avx512.xml and
i386/x32-avx512.xml.
(srv_i386_linux_xmlfiles): Add i386/i386-avx512-linux.xml.
(srv_amd64_linux_xmlfiles): Add i386/amd64-avx512-linux.xml and
i386/x32-avx512-linux.xml.
* i387-fp.c (num_avx512_k_registers): New constant for number
of K registers.
(num_avx512_zmmh_low_registers): New constant for number of
lower ZMM registers (0-15).
(num_avx512_zmmh_high_registers): New constant for number of
higher ZMM registers (16-31).
(num_avx512_ymmh_registers): New contant for number of higher
YMM registers (ymm16-31 added by avx521 on x86_64).
(num_avx512_xmm_registers): New constant for number of higher
XMM registers (xmm16-31 added by AVX512 on x86_64).
(struct i387_xsave): Add space for AVX512 registers.
(i387_cache_to_xsave): Change raw buffer size to 64 characters.
Add code to handle AVX512 registers.
(i387_xsave_to_cache): Add code to handle AVX512 registers.
* linux-x86-low.c (init_registers_amd64_avx512_linux): New
prototypei from generated file.
(tdesc_amd64_avx512_linux): Likewise.
(init_registers_x32_avx512_linux): Likewise.
(tdesc_x32_avx512_linux): Likewise.
(init_registers_i386_avx512_linux): Likewise.
(tdesc_i386_avx512_linux): Likewise.
(x86_64_regmap): Add AVX512 registers.
(x86_linux_read_description): Add code to handle AVX512 XSTATE
mask.
(initialize_low_arch): Add code to initialize AVX512 registers.
doc/
* gdb.texinfo (i386 Features): Add description of AVX512
registers.
Change-Id: Ifc4c08c76b85dbec18d02efdbe6182e851584438
Signed-off-by: Michael Sturm <michael.sturm@intel.com>
2013-12-16 23:43:05 +08:00
|
|
|
|
initialize_tdesc_amd64_avx512_linux ();
|
|
|
|
|
|
2012-05-12 16:54:03 +08:00
|
|
|
|
initialize_tdesc_x32_linux ();
|
|
|
|
|
initialize_tdesc_x32_avx_linux ();
|
Add AVX512 registers support to GDB and GDBserver.
This patch adds support for the Intel(R) Advanced Vector
Extensions 512 (Intel(R) AVX-512) registers. Native and remote
debugging are covered by this patch.
Intel(R) AVX-512 is an extension to AVX to support 512-bit wide
SIMD registers in 64-bit mode (XMM0-XMM31, YMM0-YMM31, ZMM0-ZMM31).
The number of available registers in 32-bit mode is still 8
(XMM0-7, YMM0-7, ZMM0-7). The lower 256-bits of the ZMM registers
are aliased to the respective 256-bit YMM registers. The lower
128-bits are aliased to the respective 128-bit XMM registers.
There are also 8 new, dedicated mask registers (K0-K7) in both 32-bit
mode and 64-bit mode.
For more information please see
Intel(R) Developer Zone: Intel(R) AVX
http://software.intel.com/en-us/intel-isa-extensions#pid-16007-1495
Intel(R) Architecture Instruction Set Extensions Programming Reference:
http://software.intel.com/en-us/file/319433-017pdf
2014-04-24 Michael Sturm <michael.sturm@mintel.com>
Walfred Tedeschi <walfred.tedeschi@intel.com>
* amd64-linux-nat.c (amd64_linux_gregset32_reg_offset): Add
AVX512 registers.
(amd64_linux_read_description): Add code to handle AVX512 xstate
mask and return respective tdesc.
* amd64-linux-tdep.c: Include features/i386/amd64-avx512-linux.c
and features/i386/x32-avx512-linux.c.
(amd64_linux_gregset_reg_offset): Add AVX512 registers.
(amd64_linux_core_read_description): Add code to handle AVX512
xstate mask and return respective tdesc.
(_initialize_amd64_linux_tdep): Initialize AVX512 tdesc.
* amd64-linux-tdep.h (AMD64_LINUX_ORIG_RAX_REGNUM): Adjust regnum
calculation.
(AMD64_LINUX_NUM_REGS): Adjust to new number of registers.
(tdesc_amd64_avx512_linux): New prototype.
(tdesc_x32_avx512_linux): Likewise.
* amd64-tdep.c: Include features/i386/amd64-avx512.c and
features/i386/x32-avx512.c.
(amd64_ymm_avx512_names): New register names for pseudo
registers YMM16-31.
(amd64_ymmh_avx512_names): New register names for raw registers
YMMH16-31.
(amd64_k_names): New register names for K registers.
(amd64_zmmh_names): New register names for ZMM raw registers.
(amd64_zmm_names): New registers names for ZMM pseudo registers.
(amd64_xmm_avx512_names): New register names for XMM16-31
registers.
(amd64_pseudo_register_name): Add code to return AVX512 pseudo
registers.
(amd64_init_abi): Add code to intitialize AVX512 tdep variables
if feature is present.
(_initialize_amd64_tdep): Call AVX512 tdesc initializers.
* amd64-tdep.h (enum amd64_regnum): Add AVX512 registers.
(AMD64_NUM_REGS): Adjust to new number of registers.
* i386-linux-nat.c (GETXSTATEREGS_SUPPLIES): Extend range of
registers supplied via XSTATE by AVX512 registers.
(i386_linux_read_description): Add case for AVX512.
* i386-linux-tdep.c: Include i386-avx512-linux.c.
(i386_linux_gregset_reg_offset): Add AVX512 registers.
(i386_linux_core_read_description): Add case for AVX512.
(i386_linux_init_abi): Install supported register note section
for AVX512.
(_initialize_i386_linux_tdep): Add call to tdesc init function for
AVX512.
* i386-linux-tdep.h (I386_LINUX_NUM_REGS): Set number of
registers to be number of zmm7h + 1.
(tdesc_i386_avx512_linux): Add tdesc for AVX512 registers.
* i386-tdep.c: Include features/i386/i386-avx512.c.
(i386_zmm_names): Add ZMM pseudo register names array.
(i386_zmmh_names): Add ZMM raw register names array.
(i386_k_names): Add K raw register names array.
(num_lower_zmm_regs): Add constant for the number of lower ZMM
registers. AVX512 has 16 more ZMM registers than there are YMM
registers.
(i386_zmmh_regnum_p): Add function to look up register number of
ZMM raw registers.
(i386_zmm_regnum_p): Likewise for ZMM pseudo registers.
(i386_k_regnum_p): Likewise for K raw registers.
(i386_ymmh_avx512_regnum_p): Likewise for additional YMM raw
registers added by AVX512.
(i386_ymm_avx512_regnum_p): Likewise for additional YMM pseudo
registers added by AVX512.
(i386_xmm_avx512_regnum_p): Likewise for additional XMM registers
added by AVX512.
(i386_register_name): Add code to hide YMMH16-31 and ZMMH0-31.
(i386_pseudo_register_name): Add ZMM pseudo registers.
(i386_zmm_type): Construct and return vector registers type for ZMM
registers.
(i386_pseudo_register_type): Return appropriate type for YMM16-31,
ZMM0-31 pseudo registers and K registers.
(i386_pseudo_register_read_into_value): Add code to read K, ZMM
and YMM16-31 registers from register cache.
(i386_pseudo_register_write): Add code to write K, ZMM and
YMM16-31 registers.
(i386_register_reggroup_p): Add code to include/exclude AVX512
registers in/from respective register groups.
(i386_validate_tdesc_p): Handle AVX512 feature, add AVX512
registers if feature is present in xcr0.
(i386_gdbarch_init): Add code to initialize AVX512 feature
variables in tdep structure, wire in pseudo registers and call
initialize_tdesc_i386_avx512.
* i386-tdep.h (struct gdbarch_tdep): Add AVX512 related
variables.
(i386_regnum): Add AVX512 registers.
(I386_SSE_NUM_REGS): New define for number of SSE registers.
(I386_AVX_NUM_REGS): Likewise for AVX registers.
(I386_AVX512_NUM_REGS): Likewise for AVX512 registers.
(I386_MAX_REGISTER_SIZE): Change to 64 bytes, ZMM registers are
512 bits wide.
(i386_xmm_avx512_regnum_p): New prototype for register look up.
(i386_ymm_avx512_regnum_p): Likewise.
(i386_k_regnum_p): Likewise.
(i386_zmm_regnum_p): Likewise.
(i386_zmmh_regnum_p): Likewise.
* i387-tdep.c : Update year in copyright notice.
(xsave_ymm_avx512_offset): New table for YMM16-31 offsets in
XSAVE buffer.
(XSAVE_YMM_AVX512_ADDR): New macro.
(xsave_xmm_avx512_offset): New table for XMM16-31 offsets in
XSAVE buffer.
(XSAVE_XMM_AVX512_ADDR): New macro.
(xsave_avx512_k_offset): New table for K register offsets in
XSAVE buffer.
(XSAVE_AVX512_K_ADDR): New macro.
(xsave_avx512_zmm_h_offset): New table for ZMM register offsets
in XSAVE buffer.
(XSAVE_AVX512_ZMM_H_ADDR): New macro.
(i387_supply_xsave): Add code to supply AVX512 registers to XSAVE
buffer.
(i387_collect_xsave): Add code to collect AVX512 registers from
XSAVE buffer.
* i387-tdep.h (I387_NUM_XMM_AVX512_REGS): New define for number
of XMM16-31 registers.
(I387_NUM_K_REGS): New define for number of K registers.
(I387_K0_REGNUM): New define for K0 register number.
(I387_NUM_ZMMH_REGS): New define for number of ZMMH registers.
(I387_ZMM0H_REGNUM): New define for ZMM0H register number.
(I387_NUM_YMM_AVX512_REGS): New define for number of YMM16-31
registers.
(I387_YMM16H_REGNUM): New define for YMM16H register number.
(I387_XMM16_REGNUM): New define for XMM16 register number.
(I387_YMM0_REGNUM): New define for YMM0 register number.
(I387_KEND_REGNUM): New define for last K register number.
(I387_ZMMENDH_REGNUM): New define for last ZMMH register number.
(I387_YMMH_AVX512_END_REGNUM): New define for YMM31 register
number.
(I387_XMM_AVX512_END_REGNUM): New define for XMM31 register
number.
* common/i386-xstate.h: Add AVX 3.1 feature bits, mask and XSTATE
size.
* features/Makefile: Add AVX512 related files.
* features/i386/32bit-avx512.xml: New file.
* features/i386/64bit-avx512.xml: Likewise.
* features/i386/amd64-avx512-linux.c: Likewise.
* features/i386/amd64-avx512-linux.xml: Likewise.
* features/i386/amd64-avx512.c: Likewise.
* features/i386/amd64-avx512.xml: Likewise.
* features/i386/i386-avx512-linux.c: Likewise.
* features/i386/i386-avx512-linux.xml: Likewise.
* features/i386/i386-avx512.c: Likewise.
* features/i386/i386-avx512.xml: Likewise.
* features/i386/x32-avx512-linux.c: Likewise.
* features/i386/x32-avx512-linux.xml: Likewise.
* features/i386/x32-avx512.c: Likewise.
* features/i386/x32-avx512.xml: Likewise.
* regformats/i386/amd64-avx512-linux.dat: New file.
* regformats/i386/amd64-avx512.dat: Likewise.
* regformats/i386/i386-avx512-linux.dat: Likewise.
* regformats/i386/i386-avx512.dat: Likewise.
* regformats/i386/x32-avx512-linux.dat: Likewise.
* regformats/i386/x32-avx512.dat: Likewise.
* NEWS: Add note about new support for AVX512.
testsuite/
* Makefile.in (EXECUTABLES): Added i386-avx512.
* gdb.arch/i386-avx512.c: New file.
* gdb.arch/i386-avx512.exp: Likewise.
gdbserver/
* Makefile.in: Added rules to handle new files
i386-avx512.c i386-avx512-linux.c amd64-avx512.c
amd64-avx512-linux.c x32-avx512.c x32-avx512-linux.c.
* configure.srv (srv_i386_regobj): Add i386-avx512.o.
(srv_i386_linux_regobj): Add i386-avx512-linux.o.
(srv_amd64_regobj): Add amd64-avx512.o and x32-avx512.o.
(srv_amd64_linux_regobj): Add amd64-avx512-linux.o and
x32-avx512-linux.o.
(srv_i386_32bit_xmlfiles): Add i386/32bit-avx512.xml.
(srv_i386_64bit_xmlfiles): Add i386/64bit-avx512.xml.
(srv_amd64_xmlfiles): Add i386/amd64-avx512.xml and
i386/x32-avx512.xml.
(srv_i386_linux_xmlfiles): Add i386/i386-avx512-linux.xml.
(srv_amd64_linux_xmlfiles): Add i386/amd64-avx512-linux.xml and
i386/x32-avx512-linux.xml.
* i387-fp.c (num_avx512_k_registers): New constant for number
of K registers.
(num_avx512_zmmh_low_registers): New constant for number of
lower ZMM registers (0-15).
(num_avx512_zmmh_high_registers): New constant for number of
higher ZMM registers (16-31).
(num_avx512_ymmh_registers): New contant for number of higher
YMM registers (ymm16-31 added by avx521 on x86_64).
(num_avx512_xmm_registers): New constant for number of higher
XMM registers (xmm16-31 added by AVX512 on x86_64).
(struct i387_xsave): Add space for AVX512 registers.
(i387_cache_to_xsave): Change raw buffer size to 64 characters.
Add code to handle AVX512 registers.
(i387_xsave_to_cache): Add code to handle AVX512 registers.
* linux-x86-low.c (init_registers_amd64_avx512_linux): New
prototypei from generated file.
(tdesc_amd64_avx512_linux): Likewise.
(init_registers_x32_avx512_linux): Likewise.
(tdesc_x32_avx512_linux): Likewise.
(init_registers_i386_avx512_linux): Likewise.
(tdesc_i386_avx512_linux): Likewise.
(x86_64_regmap): Add AVX512 registers.
(x86_linux_read_description): Add code to handle AVX512 XSTATE
mask.
(initialize_low_arch): Add code to initialize AVX512 registers.
doc/
* gdb.texinfo (i386 Features): Add description of AVX512
registers.
Change-Id: Ifc4c08c76b85dbec18d02efdbe6182e851584438
Signed-off-by: Michael Sturm <michael.sturm@intel.com>
2013-12-16 23:43:05 +08:00
|
|
|
|
initialize_tdesc_x32_avx512_linux ();
|
2002-12-22 05:09:58 +08:00
|
|
|
|
}
|