2001-10-14 06:13:35 +08:00
|
|
|
/* Target-dependent code for GDB, the GNU debugger.
|
2002-02-25 06:31:19 +08:00
|
|
|
|
2014-01-01 11:54:24 +08:00
|
|
|
Copyright (C) 2001-2014 Free Software Foundation, Inc.
|
2002-02-25 06:31:19 +08:00
|
|
|
|
2001-10-14 06:13:35 +08:00
|
|
|
Contributed by D.J. Barrow (djbarrow@de.ibm.com,barrow_dj@yahoo.com)
|
|
|
|
for IBM Deutschland Entwicklung GmbH, IBM Corporation.
|
|
|
|
|
|
|
|
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-10-14 06:13:35 +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-10-14 06:13:35 +08:00
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
#include "defs.h"
|
2001-10-14 06:13:35 +08:00
|
|
|
#include "arch-utils.h"
|
|
|
|
#include "frame.h"
|
|
|
|
#include "inferior.h"
|
Add new infrun.h header.
Move infrun.c declarations out of inferior.h to a new infrun.h file.
Tested by building on:
i686-w64-mingw32, enable-targets=all
x86_64-linux, enable-targets=all
i586-pc-msdosdjgpp
And also grepped the whole tree for each symbol moved to find where
infrun.h might be necessary.
gdb/
2014-05-22 Pedro Alves <palves@redhat.com>
* inferior.h (debug_infrun, debug_displaced, stop_on_solib_events)
(sync_execution, sched_multi, step_stop_if_no_debug, non_stop)
(disable_randomization, enum exec_direction_kind)
(execution_direction, stop_registers, start_remote)
(clear_proceed_status, proceed, resume, user_visible_resume_ptid)
(wait_for_inferior, normal_stop, get_last_target_status)
(prepare_for_detach, fetch_inferior_event, init_wait_for_inferior)
(insert_step_resume_breakpoint_at_sal)
(follow_inferior_reset_breakpoints, stepping_past_instruction_at)
(set_step_info, print_stop_event, signal_stop_state)
(signal_print_state, signal_pass_state, signal_stop_update)
(signal_print_update, signal_pass_update)
(update_signals_program_target, clear_exit_convenience_vars)
(displaced_step_dump_bytes, update_observer_mode)
(signal_catch_update, gdb_signal_from_command): Move
declarations ...
* infrun.h: ... to this new file.
* amd64-tdep.c: Include infrun.h.
* annotate.c: Include infrun.h.
* arch-utils.c: Include infrun.h.
* arm-linux-tdep.c: Include infrun.h.
* arm-tdep.c: Include infrun.h.
* break-catch-sig.c: Include infrun.h.
* breakpoint.c: Include infrun.h.
* common/agent.c: Include infrun.h instead of inferior.h.
* corelow.c: Include infrun.h.
* event-top.c: Include infrun.h.
* go32-nat.c: Include infrun.h.
* i386-tdep.c: Include infrun.h.
* inf-loop.c: Include infrun.h.
* infcall.c: Include infrun.h.
* infcmd.c: Include infrun.h.
* infrun.c: Include infrun.h.
* linux-fork.c: Include infrun.h.
* linux-nat.c: Include infrun.h.
* linux-thread-db.c: Include infrun.h.
* monitor.c: Include infrun.h.
* nto-tdep.c: Include infrun.h.
* procfs.c: Include infrun.h.
* record-btrace.c: Include infrun.h.
* record-full.c: Include infrun.h.
* remote-m32r-sdi.c: Include infrun.h.
* remote-mips.c: Include infrun.h.
* remote-notif.c: Include infrun.h.
* remote-sim.c: Include infrun.h.
* remote.c: Include infrun.h.
* reverse.c: Include infrun.h.
* rs6000-tdep.c: Include infrun.h.
* s390-linux-tdep.c: Include infrun.h.
* solib-irix.c: Include infrun.h.
* solib-osf.c: Include infrun.h.
* solib-svr4.c: Include infrun.h.
* target.c: Include infrun.h.
* top.c: Include infrun.h.
* windows-nat.c: Include infrun.h.
* mi/mi-interp.c: Include infrun.h.
* mi/mi-main.c: Include infrun.h.
* python/py-threadevent.c: Include infrun.h.
2014-05-22 19:29:11 +08:00
|
|
|
#include "infrun.h"
|
2001-10-14 06:13:35 +08:00
|
|
|
#include "symtab.h"
|
|
|
|
#include "target.h"
|
|
|
|
#include "gdbcore.h"
|
|
|
|
#include "gdbcmd.h"
|
|
|
|
#include "objfiles.h"
|
|
|
|
#include "floatformat.h"
|
|
|
|
#include "regcache.h"
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
#include "trad-frame.h"
|
|
|
|
#include "frame-base.h"
|
|
|
|
#include "frame-unwind.h"
|
2004-02-27 07:48:01 +08:00
|
|
|
#include "dwarf2-frame.h"
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
#include "reggroups.h"
|
|
|
|
#include "regset.h"
|
2001-10-22 01:19:38 +08:00
|
|
|
#include "value.h"
|
2003-09-04 Andrew Cagney <cagney@redhat.com>
* avr-tdep.c: Include "dis-asm.h".
* cris-tdep.c: Include "dis-asm.h".
(cris_delayed_get_disassembler): Use "struct disassemble_info"
instead of corresponding typedef.
* h8300-tdep.c: Include "dis-asm.h".
* ia64-tdep.c: Include "dis-asm.h".
* i386-tdep.c: Include "dis-asm.h".
(i386_print_insn): Use "struct disassemble_info" instead of
corresponding typedef.
* m68k-tdep.c: Include "dis-asm.h".
* mcore-tdep.c: Include "dis-asm.h".
* mips-tdep.c: Include "dis-asm.h".
(gdb_print_insn_mips): Make static, use "struct disassemble_info"
instead of corresponding typedef.
* ns32k-tdep.c: Include "dis-asm.h".
* s390-tdep.c: Include "dis-asm.h".
* sparc-tdep.c: Include "dis-asm.h".
* vax-tdep.c: Include "dis-asm.h".
* v850-tdep.c: Include "dis-asm.h".
* mn10300-tdep.c: Include "dis-asm.h".
* rs6000-tdep.c: Include "dis-asm.h".
* xstormy16-tdep.c: Include "dis-asm.h".
(_initialize_xstormy16_tdep): Delete "extern" declaration of
print_insn_xstormy16.
* Makefile.in (v850-tdep.o): Update dependencies.
(vax-tdep.o, sparc-tdep.o, s390-tdep.o): Ditto.
(ns32k-tdep.o, mips-tdep.o, mcore-tdep.o): Ditto.
(m68k-tdep.o, ia64-tdep.o, i386-tdep.o): Ditto.
(h8300-tdep.o, cris-tdep.o, avr-tdep.o): Ditto.
(mn10300-tdep.o, xstormy16-tdep.o, disasm.o): Ditto.
(gdbarch_h): Remove $(dis_asm_h).
* disasm.c: Include "dis-asm.h".
(dis_asm_read_memory): Use "struct disassemble_info" instead of
corresponding typedef.
(dis_asm_memory_error, dump_insns, do_assembly_only): Ditto.
(gdb_disassemble_info, gdb_disassembly, gdb_print_insn): Ditto.
* gdbarch.sh: Do not include "dis-asm.h".
(struct disassemble_info): Declare opaque.
(TARGET_PRINT_INSN): Update declaration.
* gdbarch.h, gdbarch.c: Re-generate.
2003-09-09 12:41:32 +08:00
|
|
|
#include "dis-asm.h"
|
2006-01-16 02:28:58 +08:00
|
|
|
#include "solib-svr4.h"
|
* Makefile.in (s390-tdep.o): Add dependency on $(prologue_value_h).
* s390-tdep.c: Include "prologue-value.h".
(struct prologue_value): Remove.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register): Remove.
(compute_x_addr): Remove, replace by ...
(s390_addr): ... this new function.
(struct s390_prologue_data): Use pv_t instead of prologue_value.
(s390_store, s390_load): Likewise.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_analyze_prologue): Likewise. Also, simplify and combine
several conditional statements.
2006-04-09 08:26:08 +08:00
|
|
|
#include "prologue-value.h"
|
2010-08-05 04:40:57 +08:00
|
|
|
#include "linux-tdep.h"
|
2013-10-31 01:57:08 +08:00
|
|
|
#include "s390-linux-tdep.h"
|
2013-09-13 22:17:31 +08:00
|
|
|
#include "auxv.h"
|
2014-01-23 01:54:43 +08:00
|
|
|
#include "xml-syscall.h"
|
2001-10-14 06:13:35 +08:00
|
|
|
|
2012-04-28 04:47:57 +08:00
|
|
|
#include "stap-probe.h"
|
|
|
|
#include "ax.h"
|
|
|
|
#include "ax-gdb.h"
|
|
|
|
#include "user-regs.h"
|
|
|
|
#include "cli/cli-utils.h"
|
|
|
|
#include <ctype.h>
|
2013-09-16 19:28:53 +08:00
|
|
|
#include "elf/common.h"
|
2012-04-28 04:47:57 +08:00
|
|
|
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
#include "features/s390-linux32.c"
|
ChangeLog:
* s390-tdep.h (S390_ORIG_R2_REGNUM): Define.
(S390_LAST_BREAK_REGNUM): Likewise.
(S390_SYSTEM_CALL_REGNUM): Likewise.
(S390_NUM_REGS): Update.
(s390_regmap_last_break): Add declaration.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(tdesc_s390_linux32v1): Add declaration.
(tdesc_s390_linux32v2): Likewise.
(tdesc_s390_linux64v1): Likewise.
(tdesc_s390_linux64v2): Likewise.
(tdesc_s390x_linux64v1): Likewise.
(tdesc_s390x_linux64v2): Likewise.
* s390-tdep.c: Include new target description files
"features/s390-linux32v1.c", "features/s390-linux32v2.c",
"features/s390-linux64v1.c", "features/s390-linux64v2.c",
"features/s390x-linux64v1.c", and "features/s390x-linux64v2.c".
(s390_cannot_store_register): New function.
(s390_write_pc): Likewise.
(s390_dwarf_regmap): Add fields for new registers.
(s390_regmap_gregset): Likewise.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): Likewise.
(s390_regmap_last_break): New variable.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(s390_last_break_regset): Likewise.
(s390x_last_break_regset): Likewise.
(s390_system_call_regset): Likewise.
(s390_upper_regset_sections): Rename to ...
(s390_linux64_regset_sections): ... this.
(s390_linux32_regset_sections): New variable.
(s390x_linux64_regset_sections): Likewise.
(s390_linux32v1_regset_sections): Likewise.
(s390_linux32v2_regset_sections): Likewise.
(s390_linux64v1_regset_sections): Likewise.
(s390_linux64v2_regset_sections): Likewise.
(s390x_linux64v1_regset_sections): Likewise.
(s390x_linux64v2_regset_sections): Likewise.
(s390_regset_from_core_section): Handle .reg-s390-last-break and
.reg-s390-system-call core file sections.
(s390_core_read_description): Check for presence of
.reg-s390-last-break and .reg-s390-system-call core file
sections and return appropriate target description.
(s390_gdbarch_init): Detect Linux-specific registers "orig_r2",
"last_break" and "system_call" in target description. Install
appropriate gdbarch_core_regset_sections array.
Call set_gdbarch_cannot_store_register and set_gdbarch_write_pc.
(_initialize_s390_tdep): Initialize additional target descriptions.
* s390-nat.c: Include "elf/common.h".
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(have_regset_last_break): New static variable.
(have_regset_system_call): Likewise.
(s390_native_supply): Handle S390_ORIG_R2_REGNUM.
(s390_native_collect): Likewise.
(fetch_regset, store_regset, check_regset): New functions.
(s390_linux_fetch_inferior_registers): Handle S390_LAST_BREAK_REGNUM
and S390_SYSTEM_CALL_REGNUM.
(s390_linux_store_inferior_registers): Likewise.
(s390_read_description): Check for presence of NT_S390_LAST_BREAK
and NT_S390_SYSTEM_CALL regsets and use appropriate description.
* features/Makefile (WHICH): Add s390-linux32v1, s390-linux64v1,
s390x-linux64v1, s390-linux32v2, s390-linux64v2, and s390x-linux64v2.
(s390-linux32v1-expedite): Define.
(s390-linux32v2-expedite): Likewise.
(s390-linux64v1-expedite): Likewise.
(s390-linux64v2-expedite): Likewise.
(s390x-linux64v1-expedite): Likewise.
(s390x-linux64v2-expedite): Likewise.
* features/s390-linux32.xml: Add orig_r2 register.
* features/s390-linux64.xml: Likewise.
* features/s390x-linux64.xml: Likewise.
* features/s390-linux32v1.xml: New file.
* features/s390-linux32v2.xml: Likewise.
* features/s390-linux64v1.xml: Likewise.
* features/s390-linux64v2.xml: Likewise.
* features/s390x-linux64v1.xml: Likewise.
* features/s390x-linux64v2.xml: Likewise.
* features/s390-linux32.c: Regenerate.
* features/s390-linux64.c: Likewise.
* features/s390x-linux64.c: Likewise.
* features/s390-linux32v1.c: New generated file.
* features/s390-linux32v2.c: Likewise.
* features/s390-linux64v1.c: Likewise.
* features/s390-linux64v2.c: Likewise.
* features/s390x-linux64v1.c: Likewise.
* features/s390x-linux64v2.c: Likewise.
* regformats/s390-linux32.dat: Regenerate.
* regformats/s390-linux64.dat: Regenerate.
* regformats/s390x-linux64.dat: Regenerate.
* regformats/s390-linux32v1.dat: New generated file.
* regformats/s390-linux32v2.dat: Likewise.
* regformats/s390-linux64v1.dat: Likewise.
* regformats/s390-linux64v2.dat: Likewise.
* regformats/s390x-linux64v1.dat: Likewise.
* regformats/s390x-linux64v2.dat: Likewise.
gdbserver/ChangeLog:
* Makefile.in (s390-linux32v1.o, s390-linux32v1.c): New rules.
(s390-linux32v2.o, s390-linux32v2.c): Likewise.
(s390-linux64v1.o, s390-linux64v1.c): Likewise.
(s390-linux64v2.o, s390-linux64v2.c): Likewise.
(s390x-linux64v1.o, s390x-linux64v1.c): Likewise.
(s390x-linux64v2.o, s390x-linux64v2.c): Likewise.
* configure.srv [s390*-*-linux*] (srv_regobj): Add new objects.
(srv_xmlfiles): Add new XML files.
* linux-s390-low.c: Include "elf/common.h", <sys/ptrace.h>,
and <sys/uio.h>.
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(init_registers_s390_linux32v1): Add prototype.
(init_registers_s390_linux32v2): Likewise.
(init_registers_s390_linux64v1): Likewise.
(init_registers_s390_linux64v2): Likewise.
(init_registers_s390x_linux64v1): Likewise.
(init_registers_s390x_linux64v2): Likewise.
(s390_num_regs): Increment to 52.
(s390_regmap): Add orig_r2 register.
(s390_num_regs_3264): Increment to 68.
(s390_regmap_3264): Add orig_r2 register.
(s390_collect_ptrace_register): Handle orig_r2 register.
(s390_supply_ptrace_register): Likewise.
(s390_fill_last_break): New function.
(s390_store_last_break): Likewise.
(s390_fill_system_call): New function.
(s390_store_system_call): Likewise.
(target_regsets): Handle NT_S390_LAST_BREAK and NT_S390_SYSTEM_CALL
register sets.
(s390_check_regset): New function.
(s390_arch_setup): Check for presence of NT_S390_LAST_BREAK and
NT_S390_SYSTEM_CALL regsets and use appropriate description.
Update target_regsets for available register sets.
testsuite/ChangeLog:
* gdb.base/callfuncs.exp (fetch_all_registers): Filter out read-only
last_break register on s390*-*-* targets.
2011-12-06 22:14:50 +08:00
|
|
|
#include "features/s390-linux32v1.c"
|
|
|
|
#include "features/s390-linux32v2.c"
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
#include "features/s390-linux64.c"
|
ChangeLog:
* s390-tdep.h (S390_ORIG_R2_REGNUM): Define.
(S390_LAST_BREAK_REGNUM): Likewise.
(S390_SYSTEM_CALL_REGNUM): Likewise.
(S390_NUM_REGS): Update.
(s390_regmap_last_break): Add declaration.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(tdesc_s390_linux32v1): Add declaration.
(tdesc_s390_linux32v2): Likewise.
(tdesc_s390_linux64v1): Likewise.
(tdesc_s390_linux64v2): Likewise.
(tdesc_s390x_linux64v1): Likewise.
(tdesc_s390x_linux64v2): Likewise.
* s390-tdep.c: Include new target description files
"features/s390-linux32v1.c", "features/s390-linux32v2.c",
"features/s390-linux64v1.c", "features/s390-linux64v2.c",
"features/s390x-linux64v1.c", and "features/s390x-linux64v2.c".
(s390_cannot_store_register): New function.
(s390_write_pc): Likewise.
(s390_dwarf_regmap): Add fields for new registers.
(s390_regmap_gregset): Likewise.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): Likewise.
(s390_regmap_last_break): New variable.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(s390_last_break_regset): Likewise.
(s390x_last_break_regset): Likewise.
(s390_system_call_regset): Likewise.
(s390_upper_regset_sections): Rename to ...
(s390_linux64_regset_sections): ... this.
(s390_linux32_regset_sections): New variable.
(s390x_linux64_regset_sections): Likewise.
(s390_linux32v1_regset_sections): Likewise.
(s390_linux32v2_regset_sections): Likewise.
(s390_linux64v1_regset_sections): Likewise.
(s390_linux64v2_regset_sections): Likewise.
(s390x_linux64v1_regset_sections): Likewise.
(s390x_linux64v2_regset_sections): Likewise.
(s390_regset_from_core_section): Handle .reg-s390-last-break and
.reg-s390-system-call core file sections.
(s390_core_read_description): Check for presence of
.reg-s390-last-break and .reg-s390-system-call core file
sections and return appropriate target description.
(s390_gdbarch_init): Detect Linux-specific registers "orig_r2",
"last_break" and "system_call" in target description. Install
appropriate gdbarch_core_regset_sections array.
Call set_gdbarch_cannot_store_register and set_gdbarch_write_pc.
(_initialize_s390_tdep): Initialize additional target descriptions.
* s390-nat.c: Include "elf/common.h".
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(have_regset_last_break): New static variable.
(have_regset_system_call): Likewise.
(s390_native_supply): Handle S390_ORIG_R2_REGNUM.
(s390_native_collect): Likewise.
(fetch_regset, store_regset, check_regset): New functions.
(s390_linux_fetch_inferior_registers): Handle S390_LAST_BREAK_REGNUM
and S390_SYSTEM_CALL_REGNUM.
(s390_linux_store_inferior_registers): Likewise.
(s390_read_description): Check for presence of NT_S390_LAST_BREAK
and NT_S390_SYSTEM_CALL regsets and use appropriate description.
* features/Makefile (WHICH): Add s390-linux32v1, s390-linux64v1,
s390x-linux64v1, s390-linux32v2, s390-linux64v2, and s390x-linux64v2.
(s390-linux32v1-expedite): Define.
(s390-linux32v2-expedite): Likewise.
(s390-linux64v1-expedite): Likewise.
(s390-linux64v2-expedite): Likewise.
(s390x-linux64v1-expedite): Likewise.
(s390x-linux64v2-expedite): Likewise.
* features/s390-linux32.xml: Add orig_r2 register.
* features/s390-linux64.xml: Likewise.
* features/s390x-linux64.xml: Likewise.
* features/s390-linux32v1.xml: New file.
* features/s390-linux32v2.xml: Likewise.
* features/s390-linux64v1.xml: Likewise.
* features/s390-linux64v2.xml: Likewise.
* features/s390x-linux64v1.xml: Likewise.
* features/s390x-linux64v2.xml: Likewise.
* features/s390-linux32.c: Regenerate.
* features/s390-linux64.c: Likewise.
* features/s390x-linux64.c: Likewise.
* features/s390-linux32v1.c: New generated file.
* features/s390-linux32v2.c: Likewise.
* features/s390-linux64v1.c: Likewise.
* features/s390-linux64v2.c: Likewise.
* features/s390x-linux64v1.c: Likewise.
* features/s390x-linux64v2.c: Likewise.
* regformats/s390-linux32.dat: Regenerate.
* regformats/s390-linux64.dat: Regenerate.
* regformats/s390x-linux64.dat: Regenerate.
* regformats/s390-linux32v1.dat: New generated file.
* regformats/s390-linux32v2.dat: Likewise.
* regformats/s390-linux64v1.dat: Likewise.
* regformats/s390-linux64v2.dat: Likewise.
* regformats/s390x-linux64v1.dat: Likewise.
* regformats/s390x-linux64v2.dat: Likewise.
gdbserver/ChangeLog:
* Makefile.in (s390-linux32v1.o, s390-linux32v1.c): New rules.
(s390-linux32v2.o, s390-linux32v2.c): Likewise.
(s390-linux64v1.o, s390-linux64v1.c): Likewise.
(s390-linux64v2.o, s390-linux64v2.c): Likewise.
(s390x-linux64v1.o, s390x-linux64v1.c): Likewise.
(s390x-linux64v2.o, s390x-linux64v2.c): Likewise.
* configure.srv [s390*-*-linux*] (srv_regobj): Add new objects.
(srv_xmlfiles): Add new XML files.
* linux-s390-low.c: Include "elf/common.h", <sys/ptrace.h>,
and <sys/uio.h>.
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(init_registers_s390_linux32v1): Add prototype.
(init_registers_s390_linux32v2): Likewise.
(init_registers_s390_linux64v1): Likewise.
(init_registers_s390_linux64v2): Likewise.
(init_registers_s390x_linux64v1): Likewise.
(init_registers_s390x_linux64v2): Likewise.
(s390_num_regs): Increment to 52.
(s390_regmap): Add orig_r2 register.
(s390_num_regs_3264): Increment to 68.
(s390_regmap_3264): Add orig_r2 register.
(s390_collect_ptrace_register): Handle orig_r2 register.
(s390_supply_ptrace_register): Likewise.
(s390_fill_last_break): New function.
(s390_store_last_break): Likewise.
(s390_fill_system_call): New function.
(s390_store_system_call): Likewise.
(target_regsets): Handle NT_S390_LAST_BREAK and NT_S390_SYSTEM_CALL
register sets.
(s390_check_regset): New function.
(s390_arch_setup): Check for presence of NT_S390_LAST_BREAK and
NT_S390_SYSTEM_CALL regsets and use appropriate description.
Update target_regsets for available register sets.
testsuite/ChangeLog:
* gdb.base/callfuncs.exp (fetch_all_registers): Filter out read-only
last_break register on s390*-*-* targets.
2011-12-06 22:14:50 +08:00
|
|
|
#include "features/s390-linux64v1.c"
|
|
|
|
#include "features/s390-linux64v2.c"
|
2013-09-13 22:17:31 +08:00
|
|
|
#include "features/s390-te-linux64.c"
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
#include "features/s390x-linux64.c"
|
ChangeLog:
* s390-tdep.h (S390_ORIG_R2_REGNUM): Define.
(S390_LAST_BREAK_REGNUM): Likewise.
(S390_SYSTEM_CALL_REGNUM): Likewise.
(S390_NUM_REGS): Update.
(s390_regmap_last_break): Add declaration.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(tdesc_s390_linux32v1): Add declaration.
(tdesc_s390_linux32v2): Likewise.
(tdesc_s390_linux64v1): Likewise.
(tdesc_s390_linux64v2): Likewise.
(tdesc_s390x_linux64v1): Likewise.
(tdesc_s390x_linux64v2): Likewise.
* s390-tdep.c: Include new target description files
"features/s390-linux32v1.c", "features/s390-linux32v2.c",
"features/s390-linux64v1.c", "features/s390-linux64v2.c",
"features/s390x-linux64v1.c", and "features/s390x-linux64v2.c".
(s390_cannot_store_register): New function.
(s390_write_pc): Likewise.
(s390_dwarf_regmap): Add fields for new registers.
(s390_regmap_gregset): Likewise.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): Likewise.
(s390_regmap_last_break): New variable.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(s390_last_break_regset): Likewise.
(s390x_last_break_regset): Likewise.
(s390_system_call_regset): Likewise.
(s390_upper_regset_sections): Rename to ...
(s390_linux64_regset_sections): ... this.
(s390_linux32_regset_sections): New variable.
(s390x_linux64_regset_sections): Likewise.
(s390_linux32v1_regset_sections): Likewise.
(s390_linux32v2_regset_sections): Likewise.
(s390_linux64v1_regset_sections): Likewise.
(s390_linux64v2_regset_sections): Likewise.
(s390x_linux64v1_regset_sections): Likewise.
(s390x_linux64v2_regset_sections): Likewise.
(s390_regset_from_core_section): Handle .reg-s390-last-break and
.reg-s390-system-call core file sections.
(s390_core_read_description): Check for presence of
.reg-s390-last-break and .reg-s390-system-call core file
sections and return appropriate target description.
(s390_gdbarch_init): Detect Linux-specific registers "orig_r2",
"last_break" and "system_call" in target description. Install
appropriate gdbarch_core_regset_sections array.
Call set_gdbarch_cannot_store_register and set_gdbarch_write_pc.
(_initialize_s390_tdep): Initialize additional target descriptions.
* s390-nat.c: Include "elf/common.h".
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(have_regset_last_break): New static variable.
(have_regset_system_call): Likewise.
(s390_native_supply): Handle S390_ORIG_R2_REGNUM.
(s390_native_collect): Likewise.
(fetch_regset, store_regset, check_regset): New functions.
(s390_linux_fetch_inferior_registers): Handle S390_LAST_BREAK_REGNUM
and S390_SYSTEM_CALL_REGNUM.
(s390_linux_store_inferior_registers): Likewise.
(s390_read_description): Check for presence of NT_S390_LAST_BREAK
and NT_S390_SYSTEM_CALL regsets and use appropriate description.
* features/Makefile (WHICH): Add s390-linux32v1, s390-linux64v1,
s390x-linux64v1, s390-linux32v2, s390-linux64v2, and s390x-linux64v2.
(s390-linux32v1-expedite): Define.
(s390-linux32v2-expedite): Likewise.
(s390-linux64v1-expedite): Likewise.
(s390-linux64v2-expedite): Likewise.
(s390x-linux64v1-expedite): Likewise.
(s390x-linux64v2-expedite): Likewise.
* features/s390-linux32.xml: Add orig_r2 register.
* features/s390-linux64.xml: Likewise.
* features/s390x-linux64.xml: Likewise.
* features/s390-linux32v1.xml: New file.
* features/s390-linux32v2.xml: Likewise.
* features/s390-linux64v1.xml: Likewise.
* features/s390-linux64v2.xml: Likewise.
* features/s390x-linux64v1.xml: Likewise.
* features/s390x-linux64v2.xml: Likewise.
* features/s390-linux32.c: Regenerate.
* features/s390-linux64.c: Likewise.
* features/s390x-linux64.c: Likewise.
* features/s390-linux32v1.c: New generated file.
* features/s390-linux32v2.c: Likewise.
* features/s390-linux64v1.c: Likewise.
* features/s390-linux64v2.c: Likewise.
* features/s390x-linux64v1.c: Likewise.
* features/s390x-linux64v2.c: Likewise.
* regformats/s390-linux32.dat: Regenerate.
* regformats/s390-linux64.dat: Regenerate.
* regformats/s390x-linux64.dat: Regenerate.
* regformats/s390-linux32v1.dat: New generated file.
* regformats/s390-linux32v2.dat: Likewise.
* regformats/s390-linux64v1.dat: Likewise.
* regformats/s390-linux64v2.dat: Likewise.
* regformats/s390x-linux64v1.dat: Likewise.
* regformats/s390x-linux64v2.dat: Likewise.
gdbserver/ChangeLog:
* Makefile.in (s390-linux32v1.o, s390-linux32v1.c): New rules.
(s390-linux32v2.o, s390-linux32v2.c): Likewise.
(s390-linux64v1.o, s390-linux64v1.c): Likewise.
(s390-linux64v2.o, s390-linux64v2.c): Likewise.
(s390x-linux64v1.o, s390x-linux64v1.c): Likewise.
(s390x-linux64v2.o, s390x-linux64v2.c): Likewise.
* configure.srv [s390*-*-linux*] (srv_regobj): Add new objects.
(srv_xmlfiles): Add new XML files.
* linux-s390-low.c: Include "elf/common.h", <sys/ptrace.h>,
and <sys/uio.h>.
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(init_registers_s390_linux32v1): Add prototype.
(init_registers_s390_linux32v2): Likewise.
(init_registers_s390_linux64v1): Likewise.
(init_registers_s390_linux64v2): Likewise.
(init_registers_s390x_linux64v1): Likewise.
(init_registers_s390x_linux64v2): Likewise.
(s390_num_regs): Increment to 52.
(s390_regmap): Add orig_r2 register.
(s390_num_regs_3264): Increment to 68.
(s390_regmap_3264): Add orig_r2 register.
(s390_collect_ptrace_register): Handle orig_r2 register.
(s390_supply_ptrace_register): Likewise.
(s390_fill_last_break): New function.
(s390_store_last_break): Likewise.
(s390_fill_system_call): New function.
(s390_store_system_call): Likewise.
(target_regsets): Handle NT_S390_LAST_BREAK and NT_S390_SYSTEM_CALL
register sets.
(s390_check_regset): New function.
(s390_arch_setup): Check for presence of NT_S390_LAST_BREAK and
NT_S390_SYSTEM_CALL regsets and use appropriate description.
Update target_regsets for available register sets.
testsuite/ChangeLog:
* gdb.base/callfuncs.exp (fetch_all_registers): Filter out read-only
last_break register on s390*-*-* targets.
2011-12-06 22:14:50 +08:00
|
|
|
#include "features/s390x-linux64v1.c"
|
|
|
|
#include "features/s390x-linux64v2.c"
|
2013-09-13 22:17:31 +08:00
|
|
|
#include "features/s390x-te-linux64.c"
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
|
2014-01-23 01:54:43 +08:00
|
|
|
#define XML_SYSCALL_FILENAME_S390 "syscalls/s390-linux.xml"
|
|
|
|
#define XML_SYSCALL_FILENAME_S390X "syscalls/s390x-linux.xml"
|
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
/* The tdep structure. */
|
|
|
|
|
|
|
|
struct gdbarch_tdep
|
2001-10-14 06:13:35 +08:00
|
|
|
{
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
/* ABI version. */
|
|
|
|
enum { ABI_LINUX_S390, ABI_LINUX_ZSERIES } abi;
|
|
|
|
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
/* Pseudo register numbers. */
|
|
|
|
int gpr_full_regnum;
|
|
|
|
int pc_regnum;
|
|
|
|
int cc_regnum;
|
|
|
|
|
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
|
|
|
int have_linux_v1;
|
|
|
|
int have_linux_v2;
|
|
|
|
int have_tdb;
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
/* ABI call-saved register information. */
|
|
|
|
|
|
|
|
static int
|
|
|
|
s390_register_call_saved (struct gdbarch *gdbarch, int regnum)
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
{
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
|
|
|
|
|
|
|
switch (tdep->abi)
|
2007-06-17 01:24:18 +08:00
|
|
|
{
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
case ABI_LINUX_S390:
|
|
|
|
if ((regnum >= S390_R6_REGNUM && regnum <= S390_R15_REGNUM)
|
|
|
|
|| regnum == S390_F4_REGNUM || regnum == S390_F6_REGNUM
|
|
|
|
|| regnum == S390_A0_REGNUM)
|
|
|
|
return 1;
|
2007-06-17 01:24:18 +08:00
|
|
|
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
break;
|
|
|
|
|
|
|
|
case ABI_LINUX_ZSERIES:
|
|
|
|
if ((regnum >= S390_R6_REGNUM && regnum <= S390_R15_REGNUM)
|
|
|
|
|| (regnum >= S390_F8_REGNUM && regnum <= S390_F15_REGNUM)
|
|
|
|
|| (regnum >= S390_A0_REGNUM && regnum <= S390_A1_REGNUM))
|
|
|
|
return 1;
|
|
|
|
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
|
|
|
return 0;
|
2001-10-14 06:13:35 +08:00
|
|
|
}
|
|
|
|
|
ChangeLog:
* s390-tdep.h (S390_ORIG_R2_REGNUM): Define.
(S390_LAST_BREAK_REGNUM): Likewise.
(S390_SYSTEM_CALL_REGNUM): Likewise.
(S390_NUM_REGS): Update.
(s390_regmap_last_break): Add declaration.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(tdesc_s390_linux32v1): Add declaration.
(tdesc_s390_linux32v2): Likewise.
(tdesc_s390_linux64v1): Likewise.
(tdesc_s390_linux64v2): Likewise.
(tdesc_s390x_linux64v1): Likewise.
(tdesc_s390x_linux64v2): Likewise.
* s390-tdep.c: Include new target description files
"features/s390-linux32v1.c", "features/s390-linux32v2.c",
"features/s390-linux64v1.c", "features/s390-linux64v2.c",
"features/s390x-linux64v1.c", and "features/s390x-linux64v2.c".
(s390_cannot_store_register): New function.
(s390_write_pc): Likewise.
(s390_dwarf_regmap): Add fields for new registers.
(s390_regmap_gregset): Likewise.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): Likewise.
(s390_regmap_last_break): New variable.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(s390_last_break_regset): Likewise.
(s390x_last_break_regset): Likewise.
(s390_system_call_regset): Likewise.
(s390_upper_regset_sections): Rename to ...
(s390_linux64_regset_sections): ... this.
(s390_linux32_regset_sections): New variable.
(s390x_linux64_regset_sections): Likewise.
(s390_linux32v1_regset_sections): Likewise.
(s390_linux32v2_regset_sections): Likewise.
(s390_linux64v1_regset_sections): Likewise.
(s390_linux64v2_regset_sections): Likewise.
(s390x_linux64v1_regset_sections): Likewise.
(s390x_linux64v2_regset_sections): Likewise.
(s390_regset_from_core_section): Handle .reg-s390-last-break and
.reg-s390-system-call core file sections.
(s390_core_read_description): Check for presence of
.reg-s390-last-break and .reg-s390-system-call core file
sections and return appropriate target description.
(s390_gdbarch_init): Detect Linux-specific registers "orig_r2",
"last_break" and "system_call" in target description. Install
appropriate gdbarch_core_regset_sections array.
Call set_gdbarch_cannot_store_register and set_gdbarch_write_pc.
(_initialize_s390_tdep): Initialize additional target descriptions.
* s390-nat.c: Include "elf/common.h".
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(have_regset_last_break): New static variable.
(have_regset_system_call): Likewise.
(s390_native_supply): Handle S390_ORIG_R2_REGNUM.
(s390_native_collect): Likewise.
(fetch_regset, store_regset, check_regset): New functions.
(s390_linux_fetch_inferior_registers): Handle S390_LAST_BREAK_REGNUM
and S390_SYSTEM_CALL_REGNUM.
(s390_linux_store_inferior_registers): Likewise.
(s390_read_description): Check for presence of NT_S390_LAST_BREAK
and NT_S390_SYSTEM_CALL regsets and use appropriate description.
* features/Makefile (WHICH): Add s390-linux32v1, s390-linux64v1,
s390x-linux64v1, s390-linux32v2, s390-linux64v2, and s390x-linux64v2.
(s390-linux32v1-expedite): Define.
(s390-linux32v2-expedite): Likewise.
(s390-linux64v1-expedite): Likewise.
(s390-linux64v2-expedite): Likewise.
(s390x-linux64v1-expedite): Likewise.
(s390x-linux64v2-expedite): Likewise.
* features/s390-linux32.xml: Add orig_r2 register.
* features/s390-linux64.xml: Likewise.
* features/s390x-linux64.xml: Likewise.
* features/s390-linux32v1.xml: New file.
* features/s390-linux32v2.xml: Likewise.
* features/s390-linux64v1.xml: Likewise.
* features/s390-linux64v2.xml: Likewise.
* features/s390x-linux64v1.xml: Likewise.
* features/s390x-linux64v2.xml: Likewise.
* features/s390-linux32.c: Regenerate.
* features/s390-linux64.c: Likewise.
* features/s390x-linux64.c: Likewise.
* features/s390-linux32v1.c: New generated file.
* features/s390-linux32v2.c: Likewise.
* features/s390-linux64v1.c: Likewise.
* features/s390-linux64v2.c: Likewise.
* features/s390x-linux64v1.c: Likewise.
* features/s390x-linux64v2.c: Likewise.
* regformats/s390-linux32.dat: Regenerate.
* regformats/s390-linux64.dat: Regenerate.
* regformats/s390x-linux64.dat: Regenerate.
* regformats/s390-linux32v1.dat: New generated file.
* regformats/s390-linux32v2.dat: Likewise.
* regformats/s390-linux64v1.dat: Likewise.
* regformats/s390-linux64v2.dat: Likewise.
* regformats/s390x-linux64v1.dat: Likewise.
* regformats/s390x-linux64v2.dat: Likewise.
gdbserver/ChangeLog:
* Makefile.in (s390-linux32v1.o, s390-linux32v1.c): New rules.
(s390-linux32v2.o, s390-linux32v2.c): Likewise.
(s390-linux64v1.o, s390-linux64v1.c): Likewise.
(s390-linux64v2.o, s390-linux64v2.c): Likewise.
(s390x-linux64v1.o, s390x-linux64v1.c): Likewise.
(s390x-linux64v2.o, s390x-linux64v2.c): Likewise.
* configure.srv [s390*-*-linux*] (srv_regobj): Add new objects.
(srv_xmlfiles): Add new XML files.
* linux-s390-low.c: Include "elf/common.h", <sys/ptrace.h>,
and <sys/uio.h>.
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(init_registers_s390_linux32v1): Add prototype.
(init_registers_s390_linux32v2): Likewise.
(init_registers_s390_linux64v1): Likewise.
(init_registers_s390_linux64v2): Likewise.
(init_registers_s390x_linux64v1): Likewise.
(init_registers_s390x_linux64v2): Likewise.
(s390_num_regs): Increment to 52.
(s390_regmap): Add orig_r2 register.
(s390_num_regs_3264): Increment to 68.
(s390_regmap_3264): Add orig_r2 register.
(s390_collect_ptrace_register): Handle orig_r2 register.
(s390_supply_ptrace_register): Likewise.
(s390_fill_last_break): New function.
(s390_store_last_break): Likewise.
(s390_fill_system_call): New function.
(s390_store_system_call): Likewise.
(target_regsets): Handle NT_S390_LAST_BREAK and NT_S390_SYSTEM_CALL
register sets.
(s390_check_regset): New function.
(s390_arch_setup): Check for presence of NT_S390_LAST_BREAK and
NT_S390_SYSTEM_CALL regsets and use appropriate description.
Update target_regsets for available register sets.
testsuite/ChangeLog:
* gdb.base/callfuncs.exp (fetch_all_registers): Filter out read-only
last_break register on s390*-*-* targets.
2011-12-06 22:14:50 +08:00
|
|
|
static int
|
|
|
|
s390_cannot_store_register (struct gdbarch *gdbarch, int regnum)
|
|
|
|
{
|
|
|
|
/* The last-break address is read-only. */
|
|
|
|
return regnum == S390_LAST_BREAK_REGNUM;
|
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
|
|
|
s390_write_pc (struct regcache *regcache, CORE_ADDR pc)
|
|
|
|
{
|
|
|
|
struct gdbarch *gdbarch = get_regcache_arch (regcache);
|
|
|
|
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
|
|
|
|
|
|
|
regcache_cooked_write_unsigned (regcache, tdep->pc_regnum, pc);
|
|
|
|
|
|
|
|
/* Set special SYSTEM_CALL register to 0 to prevent the kernel from
|
|
|
|
messing with the PC we just installed, if we happen to be within
|
|
|
|
an interrupted system call that the kernel wants to restart.
|
|
|
|
|
|
|
|
Note that after we return from the dummy call, the SYSTEM_CALL and
|
|
|
|
ORIG_R2 registers will be automatically restored, and the kernel
|
|
|
|
continues to restart the system call at this point. */
|
|
|
|
if (register_size (gdbarch, S390_SYSTEM_CALL_REGNUM) > 0)
|
|
|
|
regcache_cooked_write_unsigned (regcache, S390_SYSTEM_CALL_REGNUM, 0);
|
|
|
|
}
|
|
|
|
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
/* DWARF Register Mapping. */
|
|
|
|
|
2013-09-13 22:11:15 +08:00
|
|
|
static const short s390_dwarf_regmap[] =
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
{
|
|
|
|
/* General Purpose Registers. */
|
|
|
|
S390_R0_REGNUM, S390_R1_REGNUM, S390_R2_REGNUM, S390_R3_REGNUM,
|
|
|
|
S390_R4_REGNUM, S390_R5_REGNUM, S390_R6_REGNUM, S390_R7_REGNUM,
|
|
|
|
S390_R8_REGNUM, S390_R9_REGNUM, S390_R10_REGNUM, S390_R11_REGNUM,
|
|
|
|
S390_R12_REGNUM, S390_R13_REGNUM, S390_R14_REGNUM, S390_R15_REGNUM,
|
|
|
|
|
|
|
|
/* Floating Point Registers. */
|
|
|
|
S390_F0_REGNUM, S390_F2_REGNUM, S390_F4_REGNUM, S390_F6_REGNUM,
|
|
|
|
S390_F1_REGNUM, S390_F3_REGNUM, S390_F5_REGNUM, S390_F7_REGNUM,
|
|
|
|
S390_F8_REGNUM, S390_F10_REGNUM, S390_F12_REGNUM, S390_F14_REGNUM,
|
|
|
|
S390_F9_REGNUM, S390_F11_REGNUM, S390_F13_REGNUM, S390_F15_REGNUM,
|
|
|
|
|
|
|
|
/* Control Registers (not mapped). */
|
2013-10-31 01:51:57 +08:00
|
|
|
-1, -1, -1, -1, -1, -1, -1, -1,
|
|
|
|
-1, -1, -1, -1, -1, -1, -1, -1,
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
|
|
|
|
/* Access Registers. */
|
|
|
|
S390_A0_REGNUM, S390_A1_REGNUM, S390_A2_REGNUM, S390_A3_REGNUM,
|
|
|
|
S390_A4_REGNUM, S390_A5_REGNUM, S390_A6_REGNUM, S390_A7_REGNUM,
|
|
|
|
S390_A8_REGNUM, S390_A9_REGNUM, S390_A10_REGNUM, S390_A11_REGNUM,
|
|
|
|
S390_A12_REGNUM, S390_A13_REGNUM, S390_A14_REGNUM, S390_A15_REGNUM,
|
|
|
|
|
|
|
|
/* Program Status Word. */
|
|
|
|
S390_PSWM_REGNUM,
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
S390_PSWA_REGNUM,
|
|
|
|
|
|
|
|
/* GPR Lower Half Access. */
|
|
|
|
S390_R0_REGNUM, S390_R1_REGNUM, S390_R2_REGNUM, S390_R3_REGNUM,
|
|
|
|
S390_R4_REGNUM, S390_R5_REGNUM, S390_R6_REGNUM, S390_R7_REGNUM,
|
|
|
|
S390_R8_REGNUM, S390_R9_REGNUM, S390_R10_REGNUM, S390_R11_REGNUM,
|
|
|
|
S390_R12_REGNUM, S390_R13_REGNUM, S390_R14_REGNUM, S390_R15_REGNUM,
|
ChangeLog:
* s390-tdep.h (S390_ORIG_R2_REGNUM): Define.
(S390_LAST_BREAK_REGNUM): Likewise.
(S390_SYSTEM_CALL_REGNUM): Likewise.
(S390_NUM_REGS): Update.
(s390_regmap_last_break): Add declaration.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(tdesc_s390_linux32v1): Add declaration.
(tdesc_s390_linux32v2): Likewise.
(tdesc_s390_linux64v1): Likewise.
(tdesc_s390_linux64v2): Likewise.
(tdesc_s390x_linux64v1): Likewise.
(tdesc_s390x_linux64v2): Likewise.
* s390-tdep.c: Include new target description files
"features/s390-linux32v1.c", "features/s390-linux32v2.c",
"features/s390-linux64v1.c", "features/s390-linux64v2.c",
"features/s390x-linux64v1.c", and "features/s390x-linux64v2.c".
(s390_cannot_store_register): New function.
(s390_write_pc): Likewise.
(s390_dwarf_regmap): Add fields for new registers.
(s390_regmap_gregset): Likewise.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): Likewise.
(s390_regmap_last_break): New variable.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(s390_last_break_regset): Likewise.
(s390x_last_break_regset): Likewise.
(s390_system_call_regset): Likewise.
(s390_upper_regset_sections): Rename to ...
(s390_linux64_regset_sections): ... this.
(s390_linux32_regset_sections): New variable.
(s390x_linux64_regset_sections): Likewise.
(s390_linux32v1_regset_sections): Likewise.
(s390_linux32v2_regset_sections): Likewise.
(s390_linux64v1_regset_sections): Likewise.
(s390_linux64v2_regset_sections): Likewise.
(s390x_linux64v1_regset_sections): Likewise.
(s390x_linux64v2_regset_sections): Likewise.
(s390_regset_from_core_section): Handle .reg-s390-last-break and
.reg-s390-system-call core file sections.
(s390_core_read_description): Check for presence of
.reg-s390-last-break and .reg-s390-system-call core file
sections and return appropriate target description.
(s390_gdbarch_init): Detect Linux-specific registers "orig_r2",
"last_break" and "system_call" in target description. Install
appropriate gdbarch_core_regset_sections array.
Call set_gdbarch_cannot_store_register and set_gdbarch_write_pc.
(_initialize_s390_tdep): Initialize additional target descriptions.
* s390-nat.c: Include "elf/common.h".
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(have_regset_last_break): New static variable.
(have_regset_system_call): Likewise.
(s390_native_supply): Handle S390_ORIG_R2_REGNUM.
(s390_native_collect): Likewise.
(fetch_regset, store_regset, check_regset): New functions.
(s390_linux_fetch_inferior_registers): Handle S390_LAST_BREAK_REGNUM
and S390_SYSTEM_CALL_REGNUM.
(s390_linux_store_inferior_registers): Likewise.
(s390_read_description): Check for presence of NT_S390_LAST_BREAK
and NT_S390_SYSTEM_CALL regsets and use appropriate description.
* features/Makefile (WHICH): Add s390-linux32v1, s390-linux64v1,
s390x-linux64v1, s390-linux32v2, s390-linux64v2, and s390x-linux64v2.
(s390-linux32v1-expedite): Define.
(s390-linux32v2-expedite): Likewise.
(s390-linux64v1-expedite): Likewise.
(s390-linux64v2-expedite): Likewise.
(s390x-linux64v1-expedite): Likewise.
(s390x-linux64v2-expedite): Likewise.
* features/s390-linux32.xml: Add orig_r2 register.
* features/s390-linux64.xml: Likewise.
* features/s390x-linux64.xml: Likewise.
* features/s390-linux32v1.xml: New file.
* features/s390-linux32v2.xml: Likewise.
* features/s390-linux64v1.xml: Likewise.
* features/s390-linux64v2.xml: Likewise.
* features/s390x-linux64v1.xml: Likewise.
* features/s390x-linux64v2.xml: Likewise.
* features/s390-linux32.c: Regenerate.
* features/s390-linux64.c: Likewise.
* features/s390x-linux64.c: Likewise.
* features/s390-linux32v1.c: New generated file.
* features/s390-linux32v2.c: Likewise.
* features/s390-linux64v1.c: Likewise.
* features/s390-linux64v2.c: Likewise.
* features/s390x-linux64v1.c: Likewise.
* features/s390x-linux64v2.c: Likewise.
* regformats/s390-linux32.dat: Regenerate.
* regformats/s390-linux64.dat: Regenerate.
* regformats/s390x-linux64.dat: Regenerate.
* regformats/s390-linux32v1.dat: New generated file.
* regformats/s390-linux32v2.dat: Likewise.
* regformats/s390-linux64v1.dat: Likewise.
* regformats/s390-linux64v2.dat: Likewise.
* regformats/s390x-linux64v1.dat: Likewise.
* regformats/s390x-linux64v2.dat: Likewise.
gdbserver/ChangeLog:
* Makefile.in (s390-linux32v1.o, s390-linux32v1.c): New rules.
(s390-linux32v2.o, s390-linux32v2.c): Likewise.
(s390-linux64v1.o, s390-linux64v1.c): Likewise.
(s390-linux64v2.o, s390-linux64v2.c): Likewise.
(s390x-linux64v1.o, s390x-linux64v1.c): Likewise.
(s390x-linux64v2.o, s390x-linux64v2.c): Likewise.
* configure.srv [s390*-*-linux*] (srv_regobj): Add new objects.
(srv_xmlfiles): Add new XML files.
* linux-s390-low.c: Include "elf/common.h", <sys/ptrace.h>,
and <sys/uio.h>.
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(init_registers_s390_linux32v1): Add prototype.
(init_registers_s390_linux32v2): Likewise.
(init_registers_s390_linux64v1): Likewise.
(init_registers_s390_linux64v2): Likewise.
(init_registers_s390x_linux64v1): Likewise.
(init_registers_s390x_linux64v2): Likewise.
(s390_num_regs): Increment to 52.
(s390_regmap): Add orig_r2 register.
(s390_num_regs_3264): Increment to 68.
(s390_regmap_3264): Add orig_r2 register.
(s390_collect_ptrace_register): Handle orig_r2 register.
(s390_supply_ptrace_register): Likewise.
(s390_fill_last_break): New function.
(s390_store_last_break): Likewise.
(s390_fill_system_call): New function.
(s390_store_system_call): Likewise.
(target_regsets): Handle NT_S390_LAST_BREAK and NT_S390_SYSTEM_CALL
register sets.
(s390_check_regset): New function.
(s390_arch_setup): Check for presence of NT_S390_LAST_BREAK and
NT_S390_SYSTEM_CALL regsets and use appropriate description.
Update target_regsets for available register sets.
testsuite/ChangeLog:
* gdb.base/callfuncs.exp (fetch_all_registers): Filter out read-only
last_break register on s390*-*-* targets.
2011-12-06 22:14:50 +08:00
|
|
|
|
2011-12-07 21:31:05 +08:00
|
|
|
/* GNU/Linux-specific registers (not mapped). */
|
ChangeLog:
* s390-tdep.h (S390_ORIG_R2_REGNUM): Define.
(S390_LAST_BREAK_REGNUM): Likewise.
(S390_SYSTEM_CALL_REGNUM): Likewise.
(S390_NUM_REGS): Update.
(s390_regmap_last_break): Add declaration.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(tdesc_s390_linux32v1): Add declaration.
(tdesc_s390_linux32v2): Likewise.
(tdesc_s390_linux64v1): Likewise.
(tdesc_s390_linux64v2): Likewise.
(tdesc_s390x_linux64v1): Likewise.
(tdesc_s390x_linux64v2): Likewise.
* s390-tdep.c: Include new target description files
"features/s390-linux32v1.c", "features/s390-linux32v2.c",
"features/s390-linux64v1.c", "features/s390-linux64v2.c",
"features/s390x-linux64v1.c", and "features/s390x-linux64v2.c".
(s390_cannot_store_register): New function.
(s390_write_pc): Likewise.
(s390_dwarf_regmap): Add fields for new registers.
(s390_regmap_gregset): Likewise.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): Likewise.
(s390_regmap_last_break): New variable.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(s390_last_break_regset): Likewise.
(s390x_last_break_regset): Likewise.
(s390_system_call_regset): Likewise.
(s390_upper_regset_sections): Rename to ...
(s390_linux64_regset_sections): ... this.
(s390_linux32_regset_sections): New variable.
(s390x_linux64_regset_sections): Likewise.
(s390_linux32v1_regset_sections): Likewise.
(s390_linux32v2_regset_sections): Likewise.
(s390_linux64v1_regset_sections): Likewise.
(s390_linux64v2_regset_sections): Likewise.
(s390x_linux64v1_regset_sections): Likewise.
(s390x_linux64v2_regset_sections): Likewise.
(s390_regset_from_core_section): Handle .reg-s390-last-break and
.reg-s390-system-call core file sections.
(s390_core_read_description): Check for presence of
.reg-s390-last-break and .reg-s390-system-call core file
sections and return appropriate target description.
(s390_gdbarch_init): Detect Linux-specific registers "orig_r2",
"last_break" and "system_call" in target description. Install
appropriate gdbarch_core_regset_sections array.
Call set_gdbarch_cannot_store_register and set_gdbarch_write_pc.
(_initialize_s390_tdep): Initialize additional target descriptions.
* s390-nat.c: Include "elf/common.h".
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(have_regset_last_break): New static variable.
(have_regset_system_call): Likewise.
(s390_native_supply): Handle S390_ORIG_R2_REGNUM.
(s390_native_collect): Likewise.
(fetch_regset, store_regset, check_regset): New functions.
(s390_linux_fetch_inferior_registers): Handle S390_LAST_BREAK_REGNUM
and S390_SYSTEM_CALL_REGNUM.
(s390_linux_store_inferior_registers): Likewise.
(s390_read_description): Check for presence of NT_S390_LAST_BREAK
and NT_S390_SYSTEM_CALL regsets and use appropriate description.
* features/Makefile (WHICH): Add s390-linux32v1, s390-linux64v1,
s390x-linux64v1, s390-linux32v2, s390-linux64v2, and s390x-linux64v2.
(s390-linux32v1-expedite): Define.
(s390-linux32v2-expedite): Likewise.
(s390-linux64v1-expedite): Likewise.
(s390-linux64v2-expedite): Likewise.
(s390x-linux64v1-expedite): Likewise.
(s390x-linux64v2-expedite): Likewise.
* features/s390-linux32.xml: Add orig_r2 register.
* features/s390-linux64.xml: Likewise.
* features/s390x-linux64.xml: Likewise.
* features/s390-linux32v1.xml: New file.
* features/s390-linux32v2.xml: Likewise.
* features/s390-linux64v1.xml: Likewise.
* features/s390-linux64v2.xml: Likewise.
* features/s390x-linux64v1.xml: Likewise.
* features/s390x-linux64v2.xml: Likewise.
* features/s390-linux32.c: Regenerate.
* features/s390-linux64.c: Likewise.
* features/s390x-linux64.c: Likewise.
* features/s390-linux32v1.c: New generated file.
* features/s390-linux32v2.c: Likewise.
* features/s390-linux64v1.c: Likewise.
* features/s390-linux64v2.c: Likewise.
* features/s390x-linux64v1.c: Likewise.
* features/s390x-linux64v2.c: Likewise.
* regformats/s390-linux32.dat: Regenerate.
* regformats/s390-linux64.dat: Regenerate.
* regformats/s390x-linux64.dat: Regenerate.
* regformats/s390-linux32v1.dat: New generated file.
* regformats/s390-linux32v2.dat: Likewise.
* regformats/s390-linux64v1.dat: Likewise.
* regformats/s390-linux64v2.dat: Likewise.
* regformats/s390x-linux64v1.dat: Likewise.
* regformats/s390x-linux64v2.dat: Likewise.
gdbserver/ChangeLog:
* Makefile.in (s390-linux32v1.o, s390-linux32v1.c): New rules.
(s390-linux32v2.o, s390-linux32v2.c): Likewise.
(s390-linux64v1.o, s390-linux64v1.c): Likewise.
(s390-linux64v2.o, s390-linux64v2.c): Likewise.
(s390x-linux64v1.o, s390x-linux64v1.c): Likewise.
(s390x-linux64v2.o, s390x-linux64v2.c): Likewise.
* configure.srv [s390*-*-linux*] (srv_regobj): Add new objects.
(srv_xmlfiles): Add new XML files.
* linux-s390-low.c: Include "elf/common.h", <sys/ptrace.h>,
and <sys/uio.h>.
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(init_registers_s390_linux32v1): Add prototype.
(init_registers_s390_linux32v2): Likewise.
(init_registers_s390_linux64v1): Likewise.
(init_registers_s390_linux64v2): Likewise.
(init_registers_s390x_linux64v1): Likewise.
(init_registers_s390x_linux64v2): Likewise.
(s390_num_regs): Increment to 52.
(s390_regmap): Add orig_r2 register.
(s390_num_regs_3264): Increment to 68.
(s390_regmap_3264): Add orig_r2 register.
(s390_collect_ptrace_register): Handle orig_r2 register.
(s390_supply_ptrace_register): Likewise.
(s390_fill_last_break): New function.
(s390_store_last_break): Likewise.
(s390_fill_system_call): New function.
(s390_store_system_call): Likewise.
(target_regsets): Handle NT_S390_LAST_BREAK and NT_S390_SYSTEM_CALL
register sets.
(s390_check_regset): New function.
(s390_arch_setup): Check for presence of NT_S390_LAST_BREAK and
NT_S390_SYSTEM_CALL regsets and use appropriate description.
Update target_regsets for available register sets.
testsuite/ChangeLog:
* gdb.base/callfuncs.exp (fetch_all_registers): Filter out read-only
last_break register on s390*-*-* targets.
2011-12-06 22:14:50 +08:00
|
|
|
-1, -1, -1,
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
/* Convert DWARF register number REG to the appropriate register
|
|
|
|
number used by GDB. */
|
2003-06-11 21:16:30 +08:00
|
|
|
static int
|
2007-12-07 00:33:00 +08:00
|
|
|
s390_dwarf_reg_to_regnum (struct gdbarch *gdbarch, int reg)
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
{
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
|
|
|
|
|
|
|
/* In a 32-on-64 debug scenario, debug info refers to the full 64-bit
|
|
|
|
GPRs. Note that call frame information still refers to the 32-bit
|
|
|
|
lower halves, because s390_adjust_frame_regnum uses register numbers
|
|
|
|
66 .. 81 to access GPRs. */
|
|
|
|
if (tdep->gpr_full_regnum != -1 && reg >= 0 && reg < 16)
|
|
|
|
return tdep->gpr_full_regnum + reg;
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
|
2005-03-18 01:44:14 +08:00
|
|
|
if (reg >= 0 && reg < ARRAY_SIZE (s390_dwarf_regmap))
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
return s390_dwarf_regmap[reg];
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
warning (_("Unmapped DWARF Register #%d encountered."), reg);
|
|
|
|
return -1;
|
|
|
|
}
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
/* Translate a .eh_frame register to DWARF register, or adjust a
|
|
|
|
.debug_frame register. */
|
|
|
|
static int
|
|
|
|
s390_adjust_frame_regnum (struct gdbarch *gdbarch, int num, int eh_frame_p)
|
|
|
|
{
|
|
|
|
/* See s390_dwarf_reg_to_regnum for comments. */
|
|
|
|
return (num >= 0 && num < 16)? num + 66 : num;
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
/* Pseudo registers. */
|
|
|
|
|
2013-09-13 22:11:15 +08:00
|
|
|
static int
|
|
|
|
regnum_is_gpr_full (struct gdbarch_tdep *tdep, int regnum)
|
|
|
|
{
|
|
|
|
return (tdep->gpr_full_regnum != -1
|
|
|
|
&& regnum >= tdep->gpr_full_regnum
|
|
|
|
&& regnum <= tdep->gpr_full_regnum + 15);
|
|
|
|
}
|
|
|
|
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
static const char *
|
|
|
|
s390_pseudo_register_name (struct gdbarch *gdbarch, int regnum)
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
{
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
if (regnum == tdep->pc_regnum)
|
|
|
|
return "pc";
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
if (regnum == tdep->cc_regnum)
|
|
|
|
return "cc";
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
|
2013-09-13 22:11:15 +08:00
|
|
|
if (regnum_is_gpr_full (tdep, regnum))
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
{
|
|
|
|
static const char *full_name[] = {
|
|
|
|
"r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7",
|
|
|
|
"r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15"
|
|
|
|
};
|
|
|
|
return full_name[regnum - tdep->gpr_full_regnum];
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
}
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
|
|
|
|
internal_error (__FILE__, __LINE__, _("invalid regnum"));
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
}
|
|
|
|
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
static struct type *
|
|
|
|
s390_pseudo_register_type (struct gdbarch *gdbarch, int regnum)
|
2001-10-14 06:13:35 +08:00
|
|
|
{
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
if (regnum == tdep->pc_regnum)
|
|
|
|
return builtin_type (gdbarch)->builtin_func_ptr;
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
if (regnum == tdep->cc_regnum)
|
|
|
|
return builtin_type (gdbarch)->builtin_int;
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
|
2013-09-13 22:11:15 +08:00
|
|
|
if (regnum_is_gpr_full (tdep, regnum))
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
return builtin_type (gdbarch)->builtin_uint64;
|
|
|
|
|
|
|
|
internal_error (__FILE__, __LINE__, _("invalid regnum"));
|
2001-10-14 06:13:35 +08:00
|
|
|
}
|
|
|
|
|
gdb/
* regcache.h (regcache_raw_read, regcache_raw_read_signed)
(regcache_raw_read_unsigned, regcache_raw_read_signed)
(regcache_raw_read_unsigned, regcache_raw_read_part)
(regcache_cooked_read, regcache_cooked_read_signed)
(regcache_cooked_read_unsigned, regcache_cooked_read_part)
(regcache_cooked_read_ftype): Change return to enum
register_status.
* regcache.c: Include exceptions.h
(regcache_save): Adjust to handle REG_UNAVAILABLE registers.
(do_cooked_read): Change return to enum register_status. Always
forward to regcache_cooked_read.
(regcache_raw_read): Change return to enum register_status. If
the register is not REG_VALID, memset the buffer. Return the
register's status.
(regcache_raw_read_signed): Handle non-REG_VALID registers and
return the register's status.
(regcache_raw_read_unsigned): Ditto.
(regcache_cooked_read): Change return to enum register_status.
Assert that with read-only regcaches, the register's status must
be known. If the regcache is read-only, and the register is not
REG_VALID, memset the buffer. Return the register's status.
(regcache_cooked_read_signed): Change return to enum
register_status. Handle non-REG_VALID registers and return the
register's status.
(regcache_cooked_read_unsigned): Change return to enum
register_status. Handle non-REG_VALID registers and return the
register's status.
(regcache_xfer_part, regcache_raw_read_part)
(regcache_cooked_read_part): Change return to enum
register_status. Return the register's status.
(regcache_read_pc): Throw NOT_AVAILABLE_ERROR if the register is
unavailable.
(regcache_dump): Handle unavailable cooked registers.
* frame.c (do_frame_register_read): Adjust interface to match
regcache_cooked_read_ftype.
* gdbarch.sh (pseudo_register_read): Change return to enum
register_status.
* gdbarch.h, gdbarch.c: Regenerate.
* i386-tdep.h (i386_pseudo_register_read): Change return to enum
register_status.
* i386-tdep.c (i386_pseudo_register_read): Change return to enum
register_status. If reading a raw register indicates the raw
register is not valid, return the raw register's status,
otherwise, return REG_VALID.
* amd64-tdep.c (amd64_pseudo_register_read): Change return to enum
register_status. Handle non-REG_VALID raw registers and return
the register's status.
* arm-tdep.c (arm_neon_quad_read)
(arm_pseudo_read): Change return to enum register_status. Handle
non-REG_VALID raw registers and return the register's status.
* avr-tdep.c (avr_pseudo_register_read): Ditto.
* frv-tdep.c (frv_pseudo_register_read): Ditto.
* h8300-tdep.c (h8300_pseudo_register_read): Ditto.
* hppa-tdep.c (hppa_pseudo_register_read): Ditto.
* m32c-tdep.c (m32c_move_reg_t): Change return to enum
register_status.
(m32c_raw_read, m32c_raw_write, m32c_banked_read)
(m32c_banked_write, m32c_sb_read, m32c_sb_write, m32c_part_read)
(m32c_part_write, m32c_cat_read, m32c_cat_write)
(m32c_r3r2r1r0_read, m32c_r3r2r1r0_write)
(m32c_pseudo_register_read): Change return to enum
register_status. Adjust.
* m68hc11-tdep.c (m68hc11_pseudo_register_read): Change return to
enum register_status. Return the register's status.
* mep-tdep.c (mep_pseudo_cr32_read): Change return to enum
register_status. Return the register's status.
(mep_pseudo_cr64_read, mep_pseudo_register_read): Ditto.
* mips-tdep.c (mips_pseudo_register_read): Ditto.
* mt-tdep.c (mt_pseudo_register_read): Ditto.
* rs6000-tdep.c (move_ev_register_func): New typedef.
(e500_move_ev_register): Use it. Change return to enum
register_status. Return the register's status.
(do_regcache_raw_read): New function.
(do_regcache_raw_write): New function.
(e500_pseudo_register_read): Change return to enum
register_status. Return the register's status. Use
do_regcache_raw_read.
(e500_pseudo_register_write): Adjust. Use do_regcache_raw_write.
(dfp_pseudo_register_read): Change return to enum register_status.
Return the register's status.
(vsx_pseudo_register_read): Ditto.
(efpr_pseudo_register_read): Ditto.
(rs6000_pseudo_register_read): Ditto.
* s390-tdep.c (s390_pseudo_register_read): Change return to enum
register_status. Return the register's status.
* sh64-tdep.c (pseudo_register_read_portions): New function.
(sh64_pseudo_register_read): Change return to enum
register_status. Use pseudo_register_read_portions. Return the
register's status.
* ia64-tdep.c (ia64_pseudo_register_read): Change return to enum
register_status. Return the register's status.
* sh-tdep.c (pseudo_register_read_portions): New function.
(sh_pseudo_register_read): Change return to enum register_status.
Use pseudo_register_read_portions. Return the register's status.
* sparc-tdep.c (sparc32_pseudo_register_read): Change return to
enum register_status. Return the register's status.
* sparc64-tdep.c (sparc64_pseudo_register_read): Ditto.
* spu-tdep.c (spu_pseudo_register_read_spu)
(spu_pseudo_register_read): Ditto.
* xtensa-tdep.c (xtensa_register_read_masked)
(xtensa_pseudo_register_read): Ditto.
* bfin-tdep.c (bfin_pseudo_register_read): Ditto.
2011-03-19 02:38:44 +08:00
|
|
|
static enum register_status
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
s390_pseudo_register_read (struct gdbarch *gdbarch, struct regcache *regcache,
|
|
|
|
int regnum, gdb_byte *buf)
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
{
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
* 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
|
|
|
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
int regsize = register_size (gdbarch, regnum);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
ULONGEST val;
|
|
|
|
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
if (regnum == tdep->pc_regnum)
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
{
|
gdb/
* regcache.h (regcache_raw_read, regcache_raw_read_signed)
(regcache_raw_read_unsigned, regcache_raw_read_signed)
(regcache_raw_read_unsigned, regcache_raw_read_part)
(regcache_cooked_read, regcache_cooked_read_signed)
(regcache_cooked_read_unsigned, regcache_cooked_read_part)
(regcache_cooked_read_ftype): Change return to enum
register_status.
* regcache.c: Include exceptions.h
(regcache_save): Adjust to handle REG_UNAVAILABLE registers.
(do_cooked_read): Change return to enum register_status. Always
forward to regcache_cooked_read.
(regcache_raw_read): Change return to enum register_status. If
the register is not REG_VALID, memset the buffer. Return the
register's status.
(regcache_raw_read_signed): Handle non-REG_VALID registers and
return the register's status.
(regcache_raw_read_unsigned): Ditto.
(regcache_cooked_read): Change return to enum register_status.
Assert that with read-only regcaches, the register's status must
be known. If the regcache is read-only, and the register is not
REG_VALID, memset the buffer. Return the register's status.
(regcache_cooked_read_signed): Change return to enum
register_status. Handle non-REG_VALID registers and return the
register's status.
(regcache_cooked_read_unsigned): Change return to enum
register_status. Handle non-REG_VALID registers and return the
register's status.
(regcache_xfer_part, regcache_raw_read_part)
(regcache_cooked_read_part): Change return to enum
register_status. Return the register's status.
(regcache_read_pc): Throw NOT_AVAILABLE_ERROR if the register is
unavailable.
(regcache_dump): Handle unavailable cooked registers.
* frame.c (do_frame_register_read): Adjust interface to match
regcache_cooked_read_ftype.
* gdbarch.sh (pseudo_register_read): Change return to enum
register_status.
* gdbarch.h, gdbarch.c: Regenerate.
* i386-tdep.h (i386_pseudo_register_read): Change return to enum
register_status.
* i386-tdep.c (i386_pseudo_register_read): Change return to enum
register_status. If reading a raw register indicates the raw
register is not valid, return the raw register's status,
otherwise, return REG_VALID.
* amd64-tdep.c (amd64_pseudo_register_read): Change return to enum
register_status. Handle non-REG_VALID raw registers and return
the register's status.
* arm-tdep.c (arm_neon_quad_read)
(arm_pseudo_read): Change return to enum register_status. Handle
non-REG_VALID raw registers and return the register's status.
* avr-tdep.c (avr_pseudo_register_read): Ditto.
* frv-tdep.c (frv_pseudo_register_read): Ditto.
* h8300-tdep.c (h8300_pseudo_register_read): Ditto.
* hppa-tdep.c (hppa_pseudo_register_read): Ditto.
* m32c-tdep.c (m32c_move_reg_t): Change return to enum
register_status.
(m32c_raw_read, m32c_raw_write, m32c_banked_read)
(m32c_banked_write, m32c_sb_read, m32c_sb_write, m32c_part_read)
(m32c_part_write, m32c_cat_read, m32c_cat_write)
(m32c_r3r2r1r0_read, m32c_r3r2r1r0_write)
(m32c_pseudo_register_read): Change return to enum
register_status. Adjust.
* m68hc11-tdep.c (m68hc11_pseudo_register_read): Change return to
enum register_status. Return the register's status.
* mep-tdep.c (mep_pseudo_cr32_read): Change return to enum
register_status. Return the register's status.
(mep_pseudo_cr64_read, mep_pseudo_register_read): Ditto.
* mips-tdep.c (mips_pseudo_register_read): Ditto.
* mt-tdep.c (mt_pseudo_register_read): Ditto.
* rs6000-tdep.c (move_ev_register_func): New typedef.
(e500_move_ev_register): Use it. Change return to enum
register_status. Return the register's status.
(do_regcache_raw_read): New function.
(do_regcache_raw_write): New function.
(e500_pseudo_register_read): Change return to enum
register_status. Return the register's status. Use
do_regcache_raw_read.
(e500_pseudo_register_write): Adjust. Use do_regcache_raw_write.
(dfp_pseudo_register_read): Change return to enum register_status.
Return the register's status.
(vsx_pseudo_register_read): Ditto.
(efpr_pseudo_register_read): Ditto.
(rs6000_pseudo_register_read): Ditto.
* s390-tdep.c (s390_pseudo_register_read): Change return to enum
register_status. Return the register's status.
* sh64-tdep.c (pseudo_register_read_portions): New function.
(sh64_pseudo_register_read): Change return to enum
register_status. Use pseudo_register_read_portions. Return the
register's status.
* ia64-tdep.c (ia64_pseudo_register_read): Change return to enum
register_status. Return the register's status.
* sh-tdep.c (pseudo_register_read_portions): New function.
(sh_pseudo_register_read): Change return to enum register_status.
Use pseudo_register_read_portions. Return the register's status.
* sparc-tdep.c (sparc32_pseudo_register_read): Change return to
enum register_status. Return the register's status.
* sparc64-tdep.c (sparc64_pseudo_register_read): Ditto.
* spu-tdep.c (spu_pseudo_register_read_spu)
(spu_pseudo_register_read): Ditto.
* xtensa-tdep.c (xtensa_register_read_masked)
(xtensa_pseudo_register_read): Ditto.
* bfin-tdep.c (bfin_pseudo_register_read): Ditto.
2011-03-19 02:38:44 +08:00
|
|
|
enum register_status status;
|
|
|
|
|
|
|
|
status = regcache_raw_read_unsigned (regcache, S390_PSWA_REGNUM, &val);
|
|
|
|
if (status == REG_VALID)
|
|
|
|
{
|
|
|
|
if (register_size (gdbarch, S390_PSWA_REGNUM) == 4)
|
|
|
|
val &= 0x7fffffff;
|
|
|
|
store_unsigned_integer (buf, regsize, byte_order, val);
|
|
|
|
}
|
|
|
|
return status;
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
}
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
if (regnum == tdep->cc_regnum)
|
|
|
|
{
|
gdb/
* regcache.h (regcache_raw_read, regcache_raw_read_signed)
(regcache_raw_read_unsigned, regcache_raw_read_signed)
(regcache_raw_read_unsigned, regcache_raw_read_part)
(regcache_cooked_read, regcache_cooked_read_signed)
(regcache_cooked_read_unsigned, regcache_cooked_read_part)
(regcache_cooked_read_ftype): Change return to enum
register_status.
* regcache.c: Include exceptions.h
(regcache_save): Adjust to handle REG_UNAVAILABLE registers.
(do_cooked_read): Change return to enum register_status. Always
forward to regcache_cooked_read.
(regcache_raw_read): Change return to enum register_status. If
the register is not REG_VALID, memset the buffer. Return the
register's status.
(regcache_raw_read_signed): Handle non-REG_VALID registers and
return the register's status.
(regcache_raw_read_unsigned): Ditto.
(regcache_cooked_read): Change return to enum register_status.
Assert that with read-only regcaches, the register's status must
be known. If the regcache is read-only, and the register is not
REG_VALID, memset the buffer. Return the register's status.
(regcache_cooked_read_signed): Change return to enum
register_status. Handle non-REG_VALID registers and return the
register's status.
(regcache_cooked_read_unsigned): Change return to enum
register_status. Handle non-REG_VALID registers and return the
register's status.
(regcache_xfer_part, regcache_raw_read_part)
(regcache_cooked_read_part): Change return to enum
register_status. Return the register's status.
(regcache_read_pc): Throw NOT_AVAILABLE_ERROR if the register is
unavailable.
(regcache_dump): Handle unavailable cooked registers.
* frame.c (do_frame_register_read): Adjust interface to match
regcache_cooked_read_ftype.
* gdbarch.sh (pseudo_register_read): Change return to enum
register_status.
* gdbarch.h, gdbarch.c: Regenerate.
* i386-tdep.h (i386_pseudo_register_read): Change return to enum
register_status.
* i386-tdep.c (i386_pseudo_register_read): Change return to enum
register_status. If reading a raw register indicates the raw
register is not valid, return the raw register's status,
otherwise, return REG_VALID.
* amd64-tdep.c (amd64_pseudo_register_read): Change return to enum
register_status. Handle non-REG_VALID raw registers and return
the register's status.
* arm-tdep.c (arm_neon_quad_read)
(arm_pseudo_read): Change return to enum register_status. Handle
non-REG_VALID raw registers and return the register's status.
* avr-tdep.c (avr_pseudo_register_read): Ditto.
* frv-tdep.c (frv_pseudo_register_read): Ditto.
* h8300-tdep.c (h8300_pseudo_register_read): Ditto.
* hppa-tdep.c (hppa_pseudo_register_read): Ditto.
* m32c-tdep.c (m32c_move_reg_t): Change return to enum
register_status.
(m32c_raw_read, m32c_raw_write, m32c_banked_read)
(m32c_banked_write, m32c_sb_read, m32c_sb_write, m32c_part_read)
(m32c_part_write, m32c_cat_read, m32c_cat_write)
(m32c_r3r2r1r0_read, m32c_r3r2r1r0_write)
(m32c_pseudo_register_read): Change return to enum
register_status. Adjust.
* m68hc11-tdep.c (m68hc11_pseudo_register_read): Change return to
enum register_status. Return the register's status.
* mep-tdep.c (mep_pseudo_cr32_read): Change return to enum
register_status. Return the register's status.
(mep_pseudo_cr64_read, mep_pseudo_register_read): Ditto.
* mips-tdep.c (mips_pseudo_register_read): Ditto.
* mt-tdep.c (mt_pseudo_register_read): Ditto.
* rs6000-tdep.c (move_ev_register_func): New typedef.
(e500_move_ev_register): Use it. Change return to enum
register_status. Return the register's status.
(do_regcache_raw_read): New function.
(do_regcache_raw_write): New function.
(e500_pseudo_register_read): Change return to enum
register_status. Return the register's status. Use
do_regcache_raw_read.
(e500_pseudo_register_write): Adjust. Use do_regcache_raw_write.
(dfp_pseudo_register_read): Change return to enum register_status.
Return the register's status.
(vsx_pseudo_register_read): Ditto.
(efpr_pseudo_register_read): Ditto.
(rs6000_pseudo_register_read): Ditto.
* s390-tdep.c (s390_pseudo_register_read): Change return to enum
register_status. Return the register's status.
* sh64-tdep.c (pseudo_register_read_portions): New function.
(sh64_pseudo_register_read): Change return to enum
register_status. Use pseudo_register_read_portions. Return the
register's status.
* ia64-tdep.c (ia64_pseudo_register_read): Change return to enum
register_status. Return the register's status.
* sh-tdep.c (pseudo_register_read_portions): New function.
(sh_pseudo_register_read): Change return to enum register_status.
Use pseudo_register_read_portions. Return the register's status.
* sparc-tdep.c (sparc32_pseudo_register_read): Change return to
enum register_status. Return the register's status.
* sparc64-tdep.c (sparc64_pseudo_register_read): Ditto.
* spu-tdep.c (spu_pseudo_register_read_spu)
(spu_pseudo_register_read): Ditto.
* xtensa-tdep.c (xtensa_register_read_masked)
(xtensa_pseudo_register_read): Ditto.
* bfin-tdep.c (bfin_pseudo_register_read): Ditto.
2011-03-19 02:38:44 +08:00
|
|
|
enum register_status status;
|
|
|
|
|
|
|
|
status = regcache_raw_read_unsigned (regcache, S390_PSWM_REGNUM, &val);
|
|
|
|
if (status == REG_VALID)
|
|
|
|
{
|
|
|
|
if (register_size (gdbarch, S390_PSWA_REGNUM) == 4)
|
|
|
|
val = (val >> 12) & 3;
|
|
|
|
else
|
|
|
|
val = (val >> 44) & 3;
|
|
|
|
store_unsigned_integer (buf, regsize, byte_order, val);
|
|
|
|
}
|
|
|
|
return status;
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
}
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
|
2013-09-13 22:11:15 +08:00
|
|
|
if (regnum_is_gpr_full (tdep, regnum))
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
{
|
gdb/
* regcache.h (regcache_raw_read, regcache_raw_read_signed)
(regcache_raw_read_unsigned, regcache_raw_read_signed)
(regcache_raw_read_unsigned, regcache_raw_read_part)
(regcache_cooked_read, regcache_cooked_read_signed)
(regcache_cooked_read_unsigned, regcache_cooked_read_part)
(regcache_cooked_read_ftype): Change return to enum
register_status.
* regcache.c: Include exceptions.h
(regcache_save): Adjust to handle REG_UNAVAILABLE registers.
(do_cooked_read): Change return to enum register_status. Always
forward to regcache_cooked_read.
(regcache_raw_read): Change return to enum register_status. If
the register is not REG_VALID, memset the buffer. Return the
register's status.
(regcache_raw_read_signed): Handle non-REG_VALID registers and
return the register's status.
(regcache_raw_read_unsigned): Ditto.
(regcache_cooked_read): Change return to enum register_status.
Assert that with read-only regcaches, the register's status must
be known. If the regcache is read-only, and the register is not
REG_VALID, memset the buffer. Return the register's status.
(regcache_cooked_read_signed): Change return to enum
register_status. Handle non-REG_VALID registers and return the
register's status.
(regcache_cooked_read_unsigned): Change return to enum
register_status. Handle non-REG_VALID registers and return the
register's status.
(regcache_xfer_part, regcache_raw_read_part)
(regcache_cooked_read_part): Change return to enum
register_status. Return the register's status.
(regcache_read_pc): Throw NOT_AVAILABLE_ERROR if the register is
unavailable.
(regcache_dump): Handle unavailable cooked registers.
* frame.c (do_frame_register_read): Adjust interface to match
regcache_cooked_read_ftype.
* gdbarch.sh (pseudo_register_read): Change return to enum
register_status.
* gdbarch.h, gdbarch.c: Regenerate.
* i386-tdep.h (i386_pseudo_register_read): Change return to enum
register_status.
* i386-tdep.c (i386_pseudo_register_read): Change return to enum
register_status. If reading a raw register indicates the raw
register is not valid, return the raw register's status,
otherwise, return REG_VALID.
* amd64-tdep.c (amd64_pseudo_register_read): Change return to enum
register_status. Handle non-REG_VALID raw registers and return
the register's status.
* arm-tdep.c (arm_neon_quad_read)
(arm_pseudo_read): Change return to enum register_status. Handle
non-REG_VALID raw registers and return the register's status.
* avr-tdep.c (avr_pseudo_register_read): Ditto.
* frv-tdep.c (frv_pseudo_register_read): Ditto.
* h8300-tdep.c (h8300_pseudo_register_read): Ditto.
* hppa-tdep.c (hppa_pseudo_register_read): Ditto.
* m32c-tdep.c (m32c_move_reg_t): Change return to enum
register_status.
(m32c_raw_read, m32c_raw_write, m32c_banked_read)
(m32c_banked_write, m32c_sb_read, m32c_sb_write, m32c_part_read)
(m32c_part_write, m32c_cat_read, m32c_cat_write)
(m32c_r3r2r1r0_read, m32c_r3r2r1r0_write)
(m32c_pseudo_register_read): Change return to enum
register_status. Adjust.
* m68hc11-tdep.c (m68hc11_pseudo_register_read): Change return to
enum register_status. Return the register's status.
* mep-tdep.c (mep_pseudo_cr32_read): Change return to enum
register_status. Return the register's status.
(mep_pseudo_cr64_read, mep_pseudo_register_read): Ditto.
* mips-tdep.c (mips_pseudo_register_read): Ditto.
* mt-tdep.c (mt_pseudo_register_read): Ditto.
* rs6000-tdep.c (move_ev_register_func): New typedef.
(e500_move_ev_register): Use it. Change return to enum
register_status. Return the register's status.
(do_regcache_raw_read): New function.
(do_regcache_raw_write): New function.
(e500_pseudo_register_read): Change return to enum
register_status. Return the register's status. Use
do_regcache_raw_read.
(e500_pseudo_register_write): Adjust. Use do_regcache_raw_write.
(dfp_pseudo_register_read): Change return to enum register_status.
Return the register's status.
(vsx_pseudo_register_read): Ditto.
(efpr_pseudo_register_read): Ditto.
(rs6000_pseudo_register_read): Ditto.
* s390-tdep.c (s390_pseudo_register_read): Change return to enum
register_status. Return the register's status.
* sh64-tdep.c (pseudo_register_read_portions): New function.
(sh64_pseudo_register_read): Change return to enum
register_status. Use pseudo_register_read_portions. Return the
register's status.
* ia64-tdep.c (ia64_pseudo_register_read): Change return to enum
register_status. Return the register's status.
* sh-tdep.c (pseudo_register_read_portions): New function.
(sh_pseudo_register_read): Change return to enum register_status.
Use pseudo_register_read_portions. Return the register's status.
* sparc-tdep.c (sparc32_pseudo_register_read): Change return to
enum register_status. Return the register's status.
* sparc64-tdep.c (sparc64_pseudo_register_read): Ditto.
* spu-tdep.c (spu_pseudo_register_read_spu)
(spu_pseudo_register_read): Ditto.
* xtensa-tdep.c (xtensa_register_read_masked)
(xtensa_pseudo_register_read): Ditto.
* bfin-tdep.c (bfin_pseudo_register_read): Ditto.
2011-03-19 02:38:44 +08:00
|
|
|
enum register_status status;
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
ULONGEST val_upper;
|
gdb/
* regcache.h (regcache_raw_read, regcache_raw_read_signed)
(regcache_raw_read_unsigned, regcache_raw_read_signed)
(regcache_raw_read_unsigned, regcache_raw_read_part)
(regcache_cooked_read, regcache_cooked_read_signed)
(regcache_cooked_read_unsigned, regcache_cooked_read_part)
(regcache_cooked_read_ftype): Change return to enum
register_status.
* regcache.c: Include exceptions.h
(regcache_save): Adjust to handle REG_UNAVAILABLE registers.
(do_cooked_read): Change return to enum register_status. Always
forward to regcache_cooked_read.
(regcache_raw_read): Change return to enum register_status. If
the register is not REG_VALID, memset the buffer. Return the
register's status.
(regcache_raw_read_signed): Handle non-REG_VALID registers and
return the register's status.
(regcache_raw_read_unsigned): Ditto.
(regcache_cooked_read): Change return to enum register_status.
Assert that with read-only regcaches, the register's status must
be known. If the regcache is read-only, and the register is not
REG_VALID, memset the buffer. Return the register's status.
(regcache_cooked_read_signed): Change return to enum
register_status. Handle non-REG_VALID registers and return the
register's status.
(regcache_cooked_read_unsigned): Change return to enum
register_status. Handle non-REG_VALID registers and return the
register's status.
(regcache_xfer_part, regcache_raw_read_part)
(regcache_cooked_read_part): Change return to enum
register_status. Return the register's status.
(regcache_read_pc): Throw NOT_AVAILABLE_ERROR if the register is
unavailable.
(regcache_dump): Handle unavailable cooked registers.
* frame.c (do_frame_register_read): Adjust interface to match
regcache_cooked_read_ftype.
* gdbarch.sh (pseudo_register_read): Change return to enum
register_status.
* gdbarch.h, gdbarch.c: Regenerate.
* i386-tdep.h (i386_pseudo_register_read): Change return to enum
register_status.
* i386-tdep.c (i386_pseudo_register_read): Change return to enum
register_status. If reading a raw register indicates the raw
register is not valid, return the raw register's status,
otherwise, return REG_VALID.
* amd64-tdep.c (amd64_pseudo_register_read): Change return to enum
register_status. Handle non-REG_VALID raw registers and return
the register's status.
* arm-tdep.c (arm_neon_quad_read)
(arm_pseudo_read): Change return to enum register_status. Handle
non-REG_VALID raw registers and return the register's status.
* avr-tdep.c (avr_pseudo_register_read): Ditto.
* frv-tdep.c (frv_pseudo_register_read): Ditto.
* h8300-tdep.c (h8300_pseudo_register_read): Ditto.
* hppa-tdep.c (hppa_pseudo_register_read): Ditto.
* m32c-tdep.c (m32c_move_reg_t): Change return to enum
register_status.
(m32c_raw_read, m32c_raw_write, m32c_banked_read)
(m32c_banked_write, m32c_sb_read, m32c_sb_write, m32c_part_read)
(m32c_part_write, m32c_cat_read, m32c_cat_write)
(m32c_r3r2r1r0_read, m32c_r3r2r1r0_write)
(m32c_pseudo_register_read): Change return to enum
register_status. Adjust.
* m68hc11-tdep.c (m68hc11_pseudo_register_read): Change return to
enum register_status. Return the register's status.
* mep-tdep.c (mep_pseudo_cr32_read): Change return to enum
register_status. Return the register's status.
(mep_pseudo_cr64_read, mep_pseudo_register_read): Ditto.
* mips-tdep.c (mips_pseudo_register_read): Ditto.
* mt-tdep.c (mt_pseudo_register_read): Ditto.
* rs6000-tdep.c (move_ev_register_func): New typedef.
(e500_move_ev_register): Use it. Change return to enum
register_status. Return the register's status.
(do_regcache_raw_read): New function.
(do_regcache_raw_write): New function.
(e500_pseudo_register_read): Change return to enum
register_status. Return the register's status. Use
do_regcache_raw_read.
(e500_pseudo_register_write): Adjust. Use do_regcache_raw_write.
(dfp_pseudo_register_read): Change return to enum register_status.
Return the register's status.
(vsx_pseudo_register_read): Ditto.
(efpr_pseudo_register_read): Ditto.
(rs6000_pseudo_register_read): Ditto.
* s390-tdep.c (s390_pseudo_register_read): Change return to enum
register_status. Return the register's status.
* sh64-tdep.c (pseudo_register_read_portions): New function.
(sh64_pseudo_register_read): Change return to enum
register_status. Use pseudo_register_read_portions. Return the
register's status.
* ia64-tdep.c (ia64_pseudo_register_read): Change return to enum
register_status. Return the register's status.
* sh-tdep.c (pseudo_register_read_portions): New function.
(sh_pseudo_register_read): Change return to enum register_status.
Use pseudo_register_read_portions. Return the register's status.
* sparc-tdep.c (sparc32_pseudo_register_read): Change return to
enum register_status. Return the register's status.
* sparc64-tdep.c (sparc64_pseudo_register_read): Ditto.
* spu-tdep.c (spu_pseudo_register_read_spu)
(spu_pseudo_register_read): Ditto.
* xtensa-tdep.c (xtensa_register_read_masked)
(xtensa_pseudo_register_read): Ditto.
* bfin-tdep.c (bfin_pseudo_register_read): Ditto.
2011-03-19 02:38:44 +08:00
|
|
|
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
regnum -= tdep->gpr_full_regnum;
|
|
|
|
|
gdb/
* regcache.h (regcache_raw_read, regcache_raw_read_signed)
(regcache_raw_read_unsigned, regcache_raw_read_signed)
(regcache_raw_read_unsigned, regcache_raw_read_part)
(regcache_cooked_read, regcache_cooked_read_signed)
(regcache_cooked_read_unsigned, regcache_cooked_read_part)
(regcache_cooked_read_ftype): Change return to enum
register_status.
* regcache.c: Include exceptions.h
(regcache_save): Adjust to handle REG_UNAVAILABLE registers.
(do_cooked_read): Change return to enum register_status. Always
forward to regcache_cooked_read.
(regcache_raw_read): Change return to enum register_status. If
the register is not REG_VALID, memset the buffer. Return the
register's status.
(regcache_raw_read_signed): Handle non-REG_VALID registers and
return the register's status.
(regcache_raw_read_unsigned): Ditto.
(regcache_cooked_read): Change return to enum register_status.
Assert that with read-only regcaches, the register's status must
be known. If the regcache is read-only, and the register is not
REG_VALID, memset the buffer. Return the register's status.
(regcache_cooked_read_signed): Change return to enum
register_status. Handle non-REG_VALID registers and return the
register's status.
(regcache_cooked_read_unsigned): Change return to enum
register_status. Handle non-REG_VALID registers and return the
register's status.
(regcache_xfer_part, regcache_raw_read_part)
(regcache_cooked_read_part): Change return to enum
register_status. Return the register's status.
(regcache_read_pc): Throw NOT_AVAILABLE_ERROR if the register is
unavailable.
(regcache_dump): Handle unavailable cooked registers.
* frame.c (do_frame_register_read): Adjust interface to match
regcache_cooked_read_ftype.
* gdbarch.sh (pseudo_register_read): Change return to enum
register_status.
* gdbarch.h, gdbarch.c: Regenerate.
* i386-tdep.h (i386_pseudo_register_read): Change return to enum
register_status.
* i386-tdep.c (i386_pseudo_register_read): Change return to enum
register_status. If reading a raw register indicates the raw
register is not valid, return the raw register's status,
otherwise, return REG_VALID.
* amd64-tdep.c (amd64_pseudo_register_read): Change return to enum
register_status. Handle non-REG_VALID raw registers and return
the register's status.
* arm-tdep.c (arm_neon_quad_read)
(arm_pseudo_read): Change return to enum register_status. Handle
non-REG_VALID raw registers and return the register's status.
* avr-tdep.c (avr_pseudo_register_read): Ditto.
* frv-tdep.c (frv_pseudo_register_read): Ditto.
* h8300-tdep.c (h8300_pseudo_register_read): Ditto.
* hppa-tdep.c (hppa_pseudo_register_read): Ditto.
* m32c-tdep.c (m32c_move_reg_t): Change return to enum
register_status.
(m32c_raw_read, m32c_raw_write, m32c_banked_read)
(m32c_banked_write, m32c_sb_read, m32c_sb_write, m32c_part_read)
(m32c_part_write, m32c_cat_read, m32c_cat_write)
(m32c_r3r2r1r0_read, m32c_r3r2r1r0_write)
(m32c_pseudo_register_read): Change return to enum
register_status. Adjust.
* m68hc11-tdep.c (m68hc11_pseudo_register_read): Change return to
enum register_status. Return the register's status.
* mep-tdep.c (mep_pseudo_cr32_read): Change return to enum
register_status. Return the register's status.
(mep_pseudo_cr64_read, mep_pseudo_register_read): Ditto.
* mips-tdep.c (mips_pseudo_register_read): Ditto.
* mt-tdep.c (mt_pseudo_register_read): Ditto.
* rs6000-tdep.c (move_ev_register_func): New typedef.
(e500_move_ev_register): Use it. Change return to enum
register_status. Return the register's status.
(do_regcache_raw_read): New function.
(do_regcache_raw_write): New function.
(e500_pseudo_register_read): Change return to enum
register_status. Return the register's status. Use
do_regcache_raw_read.
(e500_pseudo_register_write): Adjust. Use do_regcache_raw_write.
(dfp_pseudo_register_read): Change return to enum register_status.
Return the register's status.
(vsx_pseudo_register_read): Ditto.
(efpr_pseudo_register_read): Ditto.
(rs6000_pseudo_register_read): Ditto.
* s390-tdep.c (s390_pseudo_register_read): Change return to enum
register_status. Return the register's status.
* sh64-tdep.c (pseudo_register_read_portions): New function.
(sh64_pseudo_register_read): Change return to enum
register_status. Use pseudo_register_read_portions. Return the
register's status.
* ia64-tdep.c (ia64_pseudo_register_read): Change return to enum
register_status. Return the register's status.
* sh-tdep.c (pseudo_register_read_portions): New function.
(sh_pseudo_register_read): Change return to enum register_status.
Use pseudo_register_read_portions. Return the register's status.
* sparc-tdep.c (sparc32_pseudo_register_read): Change return to
enum register_status. Return the register's status.
* sparc64-tdep.c (sparc64_pseudo_register_read): Ditto.
* spu-tdep.c (spu_pseudo_register_read_spu)
(spu_pseudo_register_read): Ditto.
* xtensa-tdep.c (xtensa_register_read_masked)
(xtensa_pseudo_register_read): Ditto.
* bfin-tdep.c (bfin_pseudo_register_read): Ditto.
2011-03-19 02:38:44 +08:00
|
|
|
status = regcache_raw_read_unsigned (regcache, S390_R0_REGNUM + regnum, &val);
|
|
|
|
if (status == REG_VALID)
|
|
|
|
status = regcache_raw_read_unsigned (regcache, S390_R0_UPPER_REGNUM + regnum,
|
|
|
|
&val_upper);
|
|
|
|
if (status == REG_VALID)
|
|
|
|
{
|
|
|
|
val |= val_upper << 32;
|
|
|
|
store_unsigned_integer (buf, regsize, byte_order, val);
|
|
|
|
}
|
|
|
|
return status;
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
}
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
|
|
|
|
internal_error (__FILE__, __LINE__, _("invalid regnum"));
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
static void
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
s390_pseudo_register_write (struct gdbarch *gdbarch, struct regcache *regcache,
|
|
|
|
int regnum, const gdb_byte *buf)
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
{
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
* 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
|
|
|
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
int regsize = register_size (gdbarch, regnum);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
ULONGEST val, psw;
|
|
|
|
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
if (regnum == tdep->pc_regnum)
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
{
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
val = extract_unsigned_integer (buf, regsize, byte_order);
|
|
|
|
if (register_size (gdbarch, S390_PSWA_REGNUM) == 4)
|
|
|
|
{
|
|
|
|
regcache_raw_read_unsigned (regcache, S390_PSWA_REGNUM, &psw);
|
|
|
|
val = (psw & 0x80000000) | (val & 0x7fffffff);
|
|
|
|
}
|
|
|
|
regcache_raw_write_unsigned (regcache, S390_PSWA_REGNUM, val);
|
|
|
|
return;
|
|
|
|
}
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
if (regnum == tdep->cc_regnum)
|
|
|
|
{
|
|
|
|
val = extract_unsigned_integer (buf, regsize, byte_order);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
regcache_raw_read_unsigned (regcache, S390_PSWM_REGNUM, &psw);
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
if (register_size (gdbarch, S390_PSWA_REGNUM) == 4)
|
|
|
|
val = (psw & ~((ULONGEST)3 << 12)) | ((val & 3) << 12);
|
|
|
|
else
|
|
|
|
val = (psw & ~((ULONGEST)3 << 44)) | ((val & 3) << 44);
|
|
|
|
regcache_raw_write_unsigned (regcache, S390_PSWM_REGNUM, val);
|
|
|
|
return;
|
|
|
|
}
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
|
2013-09-13 22:11:15 +08:00
|
|
|
if (regnum_is_gpr_full (tdep, regnum))
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
{
|
|
|
|
regnum -= tdep->gpr_full_regnum;
|
|
|
|
val = extract_unsigned_integer (buf, regsize, byte_order);
|
|
|
|
regcache_raw_write_unsigned (regcache, S390_R0_REGNUM + regnum,
|
|
|
|
val & 0xffffffff);
|
|
|
|
regcache_raw_write_unsigned (regcache, S390_R0_UPPER_REGNUM + regnum,
|
|
|
|
val >> 32);
|
|
|
|
return;
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
}
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
|
|
|
|
internal_error (__FILE__, __LINE__, _("invalid regnum"));
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
/* 'float' values are stored in the upper half of floating-point
|
|
|
|
registers, even though we are otherwise a big-endian platform. */
|
|
|
|
|
2007-01-09 04:03:49 +08:00
|
|
|
static struct value *
|
Use address_from_register in dwarf2-frame.c:read_addr_from_reg
This patch fixes a problem that prevented use of the Dwarf unwinders on SPU,
because dwarf2-frame.c common code did not support the situation where the
stack and/or frame pointer is maintained in a *vector* register. This is
because read_addr_from_reg is hard-coded to assume that such pointers can
be read from registers via a simple get_frame_register / unpack_pointer
operation.
Now, there *is* a routine address_from_register that calls into the
appropriate tdep routines to handle pointer values in "weird" registers
like on SPU, but it turns out I cannot simply change dwarf2-frame.c to
use address_from_register. This is because address_from_register uses
value_from_register to create a (temporary) value, and that routine
at some point calls get_frame_id in order to set up that value's
VALUE_FRAME_ID entry.
However, the dwarf2-frame.c read_addr_from_reg routine will be called
during early unwinding (to unwind the frame's CFA), at which point the
frame's ID is not actually known yet! This would cause an assert.
On the other hand, we may notice that VALUE_FRAME_ID is only needed in the
value returned by value_from_register if that value is later used as an
lvalue. But this is obviously never done to the temporary value used in
address_from_register. So, if we could change address_from_register to
not call value_from_register but instead accept constructing a value
that doesn't have VALUE_FRAME_ID set, things should be fine.
To do that, we can change the value_from_register callback to accept
a FRAME_ID instead of a FRAME; the only existing uses of the FRAME
argument were either to extract its frame ID, or its gdbarch. (To
keep a way of getting at the latter, we also change the callback's
type from "f" to "m".) Together with the required follow-on changes
in the existing value_from_register implementations (including the
default one), this seems to fix the problem.
As another minor interface cleanup, I've removed the explicit TYPE
argument from address_from_register. This routine really always
uses a default pointer type, and in the new implementation it -to
some extent- relies on that fact, in that it will now no longer
handle types that require gdbarch_convert_register_p handling.
gdb:
2014-04-17 Ulrich Weigand <uweigand@de.ibm.com>
* gdbarch.sh (value_from_register): Make class "m" instead of "f".
Replace FRAME argument with FRAME_ID.
* gdbarch.c, gdbarch.h: Regenerate.
* findvar.c (default_value_from_register): Add GDBARCH argument;
replace FRAME by FRAME_ID. No longer call get_frame_id.
(value_from_register): Update call to gdbarch_value_from_register.
* value.h (default_value_from_register): Update prototype.
* s390-linux-tdep.c (s390_value_from_register): Update interface
and call to default_value_from_register.
* spu-tdep.c (spu_value_from_register): Likewise.
* findvar.c (address_from_register): Remove TYPE argument.
Do not call value_from_register; use gdbarch_value_from_register
with null_frame_id instead.
* value.h (address_from_register): Update prototype.
* dwarf2-frame.c (read_addr_from_reg): Use address_from_register.
* dwarf2loc.c (dwarf_expr_read_addr_from_reg): Update for
address_from_register interface change.
2014-04-17 20:01:39 +08:00
|
|
|
s390_value_from_register (struct gdbarch *gdbarch, struct type *type,
|
|
|
|
int regnum, struct frame_id frame_id)
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
{
|
Use address_from_register in dwarf2-frame.c:read_addr_from_reg
This patch fixes a problem that prevented use of the Dwarf unwinders on SPU,
because dwarf2-frame.c common code did not support the situation where the
stack and/or frame pointer is maintained in a *vector* register. This is
because read_addr_from_reg is hard-coded to assume that such pointers can
be read from registers via a simple get_frame_register / unpack_pointer
operation.
Now, there *is* a routine address_from_register that calls into the
appropriate tdep routines to handle pointer values in "weird" registers
like on SPU, but it turns out I cannot simply change dwarf2-frame.c to
use address_from_register. This is because address_from_register uses
value_from_register to create a (temporary) value, and that routine
at some point calls get_frame_id in order to set up that value's
VALUE_FRAME_ID entry.
However, the dwarf2-frame.c read_addr_from_reg routine will be called
during early unwinding (to unwind the frame's CFA), at which point the
frame's ID is not actually known yet! This would cause an assert.
On the other hand, we may notice that VALUE_FRAME_ID is only needed in the
value returned by value_from_register if that value is later used as an
lvalue. But this is obviously never done to the temporary value used in
address_from_register. So, if we could change address_from_register to
not call value_from_register but instead accept constructing a value
that doesn't have VALUE_FRAME_ID set, things should be fine.
To do that, we can change the value_from_register callback to accept
a FRAME_ID instead of a FRAME; the only existing uses of the FRAME
argument were either to extract its frame ID, or its gdbarch. (To
keep a way of getting at the latter, we also change the callback's
type from "f" to "m".) Together with the required follow-on changes
in the existing value_from_register implementations (including the
default one), this seems to fix the problem.
As another minor interface cleanup, I've removed the explicit TYPE
argument from address_from_register. This routine really always
uses a default pointer type, and in the new implementation it -to
some extent- relies on that fact, in that it will now no longer
handle types that require gdbarch_convert_register_p handling.
gdb:
2014-04-17 Ulrich Weigand <uweigand@de.ibm.com>
* gdbarch.sh (value_from_register): Make class "m" instead of "f".
Replace FRAME argument with FRAME_ID.
* gdbarch.c, gdbarch.h: Regenerate.
* findvar.c (default_value_from_register): Add GDBARCH argument;
replace FRAME by FRAME_ID. No longer call get_frame_id.
(value_from_register): Update call to gdbarch_value_from_register.
* value.h (default_value_from_register): Update prototype.
* s390-linux-tdep.c (s390_value_from_register): Update interface
and call to default_value_from_register.
* spu-tdep.c (spu_value_from_register): Likewise.
* findvar.c (address_from_register): Remove TYPE argument.
Do not call value_from_register; use gdbarch_value_from_register
with null_frame_id instead.
* value.h (address_from_register): Update prototype.
* dwarf2-frame.c (read_addr_from_reg): Use address_from_register.
* dwarf2loc.c (dwarf_expr_read_addr_from_reg): Update for
address_from_register interface change.
2014-04-17 20:01:39 +08:00
|
|
|
struct value *value = default_value_from_register (gdbarch, type,
|
|
|
|
regnum, frame_id);
|
2012-09-25 20:48:53 +08:00
|
|
|
check_typedef (type);
|
|
|
|
|
|
|
|
if (regnum >= S390_F0_REGNUM && regnum <= S390_F15_REGNUM
|
|
|
|
&& TYPE_LENGTH (type) < 8)
|
2007-01-09 04:03:49 +08:00
|
|
|
set_value_offset (value, 0);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
|
2007-01-09 04:03:49 +08:00
|
|
|
return value;
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
/* Register groups. */
|
|
|
|
|
2003-06-11 21:16:30 +08:00
|
|
|
static int
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
s390_pseudo_register_reggroup_p (struct gdbarch *gdbarch, int regnum,
|
|
|
|
struct reggroup *group)
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
{
|
|
|
|
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
|
|
|
|
2011-12-01 00:06:55 +08:00
|
|
|
/* We usually save/restore the whole PSW, which includes PC and CC.
|
|
|
|
However, some older gdbservers may not support saving/restoring
|
|
|
|
the whole PSW yet, and will return an XML register description
|
|
|
|
excluding those from the save/restore register groups. In those
|
|
|
|
cases, we still need to explicitly save/restore PC and CC in order
|
|
|
|
to push or pop frames. Since this doesn't hurt anything if we
|
|
|
|
already save/restore the whole PSW (it's just redundant), we add
|
|
|
|
PC and CC at this point unconditionally. */
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
if (group == save_reggroup || group == restore_reggroup)
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
return regnum == tdep->pc_regnum || regnum == tdep->cc_regnum;
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
|
|
|
|
return default_register_reggroup_p (gdbarch, regnum, group);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2013-09-13 22:11:15 +08:00
|
|
|
/* Maps for register sets. */
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
|
2014-07-15 19:18:35 +08:00
|
|
|
static const struct regcache_map_entry s390_gregmap[] =
|
2013-09-13 22:11:15 +08:00
|
|
|
{
|
2014-07-15 19:18:35 +08:00
|
|
|
{ 1, S390_PSWM_REGNUM },
|
|
|
|
{ 1, S390_PSWA_REGNUM },
|
|
|
|
{ 16, S390_R0_REGNUM },
|
|
|
|
{ 16, S390_A0_REGNUM },
|
|
|
|
{ 1, S390_ORIG_R2_REGNUM },
|
|
|
|
{ 0 }
|
2013-09-13 22:11:15 +08:00
|
|
|
};
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
|
2014-07-15 19:18:35 +08:00
|
|
|
static const struct regcache_map_entry s390_fpregmap[] =
|
2013-09-13 22:11:15 +08:00
|
|
|
{
|
2014-07-15 19:18:35 +08:00
|
|
|
{ 1, S390_FPC_REGNUM, 8 },
|
|
|
|
{ 16, S390_F0_REGNUM, 8 },
|
|
|
|
{ 0 }
|
2013-09-13 22:11:15 +08:00
|
|
|
};
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
|
2014-07-15 19:18:35 +08:00
|
|
|
static const struct regcache_map_entry s390_regmap_upper[] =
|
2013-09-13 22:11:15 +08:00
|
|
|
{
|
2014-07-15 19:18:35 +08:00
|
|
|
{ 16, S390_R0_UPPER_REGNUM, 4 },
|
|
|
|
{ 0 }
|
2013-09-13 22:11:15 +08:00
|
|
|
};
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
|
2014-07-15 19:18:35 +08:00
|
|
|
static const struct regcache_map_entry s390_regmap_last_break[] =
|
2013-09-13 22:11:15 +08:00
|
|
|
{
|
2014-07-15 19:18:35 +08:00
|
|
|
{ 1, REGCACHE_MAP_SKIP, 4 },
|
|
|
|
{ 1, S390_LAST_BREAK_REGNUM, 4 },
|
|
|
|
{ 0 }
|
2013-09-13 22:11:15 +08:00
|
|
|
};
|
ChangeLog:
* s390-tdep.h (S390_ORIG_R2_REGNUM): Define.
(S390_LAST_BREAK_REGNUM): Likewise.
(S390_SYSTEM_CALL_REGNUM): Likewise.
(S390_NUM_REGS): Update.
(s390_regmap_last_break): Add declaration.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(tdesc_s390_linux32v1): Add declaration.
(tdesc_s390_linux32v2): Likewise.
(tdesc_s390_linux64v1): Likewise.
(tdesc_s390_linux64v2): Likewise.
(tdesc_s390x_linux64v1): Likewise.
(tdesc_s390x_linux64v2): Likewise.
* s390-tdep.c: Include new target description files
"features/s390-linux32v1.c", "features/s390-linux32v2.c",
"features/s390-linux64v1.c", "features/s390-linux64v2.c",
"features/s390x-linux64v1.c", and "features/s390x-linux64v2.c".
(s390_cannot_store_register): New function.
(s390_write_pc): Likewise.
(s390_dwarf_regmap): Add fields for new registers.
(s390_regmap_gregset): Likewise.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): Likewise.
(s390_regmap_last_break): New variable.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(s390_last_break_regset): Likewise.
(s390x_last_break_regset): Likewise.
(s390_system_call_regset): Likewise.
(s390_upper_regset_sections): Rename to ...
(s390_linux64_regset_sections): ... this.
(s390_linux32_regset_sections): New variable.
(s390x_linux64_regset_sections): Likewise.
(s390_linux32v1_regset_sections): Likewise.
(s390_linux32v2_regset_sections): Likewise.
(s390_linux64v1_regset_sections): Likewise.
(s390_linux64v2_regset_sections): Likewise.
(s390x_linux64v1_regset_sections): Likewise.
(s390x_linux64v2_regset_sections): Likewise.
(s390_regset_from_core_section): Handle .reg-s390-last-break and
.reg-s390-system-call core file sections.
(s390_core_read_description): Check for presence of
.reg-s390-last-break and .reg-s390-system-call core file
sections and return appropriate target description.
(s390_gdbarch_init): Detect Linux-specific registers "orig_r2",
"last_break" and "system_call" in target description. Install
appropriate gdbarch_core_regset_sections array.
Call set_gdbarch_cannot_store_register and set_gdbarch_write_pc.
(_initialize_s390_tdep): Initialize additional target descriptions.
* s390-nat.c: Include "elf/common.h".
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(have_regset_last_break): New static variable.
(have_regset_system_call): Likewise.
(s390_native_supply): Handle S390_ORIG_R2_REGNUM.
(s390_native_collect): Likewise.
(fetch_regset, store_regset, check_regset): New functions.
(s390_linux_fetch_inferior_registers): Handle S390_LAST_BREAK_REGNUM
and S390_SYSTEM_CALL_REGNUM.
(s390_linux_store_inferior_registers): Likewise.
(s390_read_description): Check for presence of NT_S390_LAST_BREAK
and NT_S390_SYSTEM_CALL regsets and use appropriate description.
* features/Makefile (WHICH): Add s390-linux32v1, s390-linux64v1,
s390x-linux64v1, s390-linux32v2, s390-linux64v2, and s390x-linux64v2.
(s390-linux32v1-expedite): Define.
(s390-linux32v2-expedite): Likewise.
(s390-linux64v1-expedite): Likewise.
(s390-linux64v2-expedite): Likewise.
(s390x-linux64v1-expedite): Likewise.
(s390x-linux64v2-expedite): Likewise.
* features/s390-linux32.xml: Add orig_r2 register.
* features/s390-linux64.xml: Likewise.
* features/s390x-linux64.xml: Likewise.
* features/s390-linux32v1.xml: New file.
* features/s390-linux32v2.xml: Likewise.
* features/s390-linux64v1.xml: Likewise.
* features/s390-linux64v2.xml: Likewise.
* features/s390x-linux64v1.xml: Likewise.
* features/s390x-linux64v2.xml: Likewise.
* features/s390-linux32.c: Regenerate.
* features/s390-linux64.c: Likewise.
* features/s390x-linux64.c: Likewise.
* features/s390-linux32v1.c: New generated file.
* features/s390-linux32v2.c: Likewise.
* features/s390-linux64v1.c: Likewise.
* features/s390-linux64v2.c: Likewise.
* features/s390x-linux64v1.c: Likewise.
* features/s390x-linux64v2.c: Likewise.
* regformats/s390-linux32.dat: Regenerate.
* regformats/s390-linux64.dat: Regenerate.
* regformats/s390x-linux64.dat: Regenerate.
* regformats/s390-linux32v1.dat: New generated file.
* regformats/s390-linux32v2.dat: Likewise.
* regformats/s390-linux64v1.dat: Likewise.
* regformats/s390-linux64v2.dat: Likewise.
* regformats/s390x-linux64v1.dat: Likewise.
* regformats/s390x-linux64v2.dat: Likewise.
gdbserver/ChangeLog:
* Makefile.in (s390-linux32v1.o, s390-linux32v1.c): New rules.
(s390-linux32v2.o, s390-linux32v2.c): Likewise.
(s390-linux64v1.o, s390-linux64v1.c): Likewise.
(s390-linux64v2.o, s390-linux64v2.c): Likewise.
(s390x-linux64v1.o, s390x-linux64v1.c): Likewise.
(s390x-linux64v2.o, s390x-linux64v2.c): Likewise.
* configure.srv [s390*-*-linux*] (srv_regobj): Add new objects.
(srv_xmlfiles): Add new XML files.
* linux-s390-low.c: Include "elf/common.h", <sys/ptrace.h>,
and <sys/uio.h>.
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(init_registers_s390_linux32v1): Add prototype.
(init_registers_s390_linux32v2): Likewise.
(init_registers_s390_linux64v1): Likewise.
(init_registers_s390_linux64v2): Likewise.
(init_registers_s390x_linux64v1): Likewise.
(init_registers_s390x_linux64v2): Likewise.
(s390_num_regs): Increment to 52.
(s390_regmap): Add orig_r2 register.
(s390_num_regs_3264): Increment to 68.
(s390_regmap_3264): Add orig_r2 register.
(s390_collect_ptrace_register): Handle orig_r2 register.
(s390_supply_ptrace_register): Likewise.
(s390_fill_last_break): New function.
(s390_store_last_break): Likewise.
(s390_fill_system_call): New function.
(s390_store_system_call): Likewise.
(target_regsets): Handle NT_S390_LAST_BREAK and NT_S390_SYSTEM_CALL
register sets.
(s390_check_regset): New function.
(s390_arch_setup): Check for presence of NT_S390_LAST_BREAK and
NT_S390_SYSTEM_CALL regsets and use appropriate description.
Update target_regsets for available register sets.
testsuite/ChangeLog:
* gdb.base/callfuncs.exp (fetch_all_registers): Filter out read-only
last_break register on s390*-*-* targets.
2011-12-06 22:14:50 +08:00
|
|
|
|
2014-07-15 19:18:35 +08:00
|
|
|
static const struct regcache_map_entry s390x_regmap_last_break[] =
|
2013-09-13 22:11:15 +08:00
|
|
|
{
|
2014-07-15 19:18:35 +08:00
|
|
|
{ 1, S390_LAST_BREAK_REGNUM, 8 },
|
|
|
|
{ 0 }
|
2013-09-13 22:11:15 +08:00
|
|
|
};
|
|
|
|
|
2014-07-15 19:18:35 +08:00
|
|
|
static const struct regcache_map_entry s390_regmap_system_call[] =
|
2013-09-13 22:11:15 +08:00
|
|
|
{
|
2014-07-15 19:18:35 +08:00
|
|
|
{ 1, S390_SYSTEM_CALL_REGNUM, 4 },
|
|
|
|
{ 0 }
|
2013-09-13 22:11:15 +08:00
|
|
|
};
|
|
|
|
|
2014-07-15 19:18:35 +08:00
|
|
|
static const struct regcache_map_entry s390_regmap_tdb[] =
|
2013-09-13 22:11:15 +08:00
|
|
|
{
|
2014-07-15 19:18:35 +08:00
|
|
|
{ 1, S390_TDB_DWORD0_REGNUM, 8 },
|
|
|
|
{ 1, S390_TDB_ABORT_CODE_REGNUM, 8 },
|
|
|
|
{ 1, S390_TDB_CONFLICT_TOKEN_REGNUM, 8 },
|
|
|
|
{ 1, S390_TDB_ATIA_REGNUM, 8 },
|
|
|
|
{ 12, REGCACHE_MAP_SKIP, 8 },
|
|
|
|
{ 16, S390_TDB_R0_REGNUM, 8 },
|
|
|
|
{ 0 }
|
2013-09-13 22:11:15 +08:00
|
|
|
};
|
ChangeLog:
* s390-tdep.h (S390_ORIG_R2_REGNUM): Define.
(S390_LAST_BREAK_REGNUM): Likewise.
(S390_SYSTEM_CALL_REGNUM): Likewise.
(S390_NUM_REGS): Update.
(s390_regmap_last_break): Add declaration.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(tdesc_s390_linux32v1): Add declaration.
(tdesc_s390_linux32v2): Likewise.
(tdesc_s390_linux64v1): Likewise.
(tdesc_s390_linux64v2): Likewise.
(tdesc_s390x_linux64v1): Likewise.
(tdesc_s390x_linux64v2): Likewise.
* s390-tdep.c: Include new target description files
"features/s390-linux32v1.c", "features/s390-linux32v2.c",
"features/s390-linux64v1.c", "features/s390-linux64v2.c",
"features/s390x-linux64v1.c", and "features/s390x-linux64v2.c".
(s390_cannot_store_register): New function.
(s390_write_pc): Likewise.
(s390_dwarf_regmap): Add fields for new registers.
(s390_regmap_gregset): Likewise.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): Likewise.
(s390_regmap_last_break): New variable.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(s390_last_break_regset): Likewise.
(s390x_last_break_regset): Likewise.
(s390_system_call_regset): Likewise.
(s390_upper_regset_sections): Rename to ...
(s390_linux64_regset_sections): ... this.
(s390_linux32_regset_sections): New variable.
(s390x_linux64_regset_sections): Likewise.
(s390_linux32v1_regset_sections): Likewise.
(s390_linux32v2_regset_sections): Likewise.
(s390_linux64v1_regset_sections): Likewise.
(s390_linux64v2_regset_sections): Likewise.
(s390x_linux64v1_regset_sections): Likewise.
(s390x_linux64v2_regset_sections): Likewise.
(s390_regset_from_core_section): Handle .reg-s390-last-break and
.reg-s390-system-call core file sections.
(s390_core_read_description): Check for presence of
.reg-s390-last-break and .reg-s390-system-call core file
sections and return appropriate target description.
(s390_gdbarch_init): Detect Linux-specific registers "orig_r2",
"last_break" and "system_call" in target description. Install
appropriate gdbarch_core_regset_sections array.
Call set_gdbarch_cannot_store_register and set_gdbarch_write_pc.
(_initialize_s390_tdep): Initialize additional target descriptions.
* s390-nat.c: Include "elf/common.h".
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(have_regset_last_break): New static variable.
(have_regset_system_call): Likewise.
(s390_native_supply): Handle S390_ORIG_R2_REGNUM.
(s390_native_collect): Likewise.
(fetch_regset, store_regset, check_regset): New functions.
(s390_linux_fetch_inferior_registers): Handle S390_LAST_BREAK_REGNUM
and S390_SYSTEM_CALL_REGNUM.
(s390_linux_store_inferior_registers): Likewise.
(s390_read_description): Check for presence of NT_S390_LAST_BREAK
and NT_S390_SYSTEM_CALL regsets and use appropriate description.
* features/Makefile (WHICH): Add s390-linux32v1, s390-linux64v1,
s390x-linux64v1, s390-linux32v2, s390-linux64v2, and s390x-linux64v2.
(s390-linux32v1-expedite): Define.
(s390-linux32v2-expedite): Likewise.
(s390-linux64v1-expedite): Likewise.
(s390-linux64v2-expedite): Likewise.
(s390x-linux64v1-expedite): Likewise.
(s390x-linux64v2-expedite): Likewise.
* features/s390-linux32.xml: Add orig_r2 register.
* features/s390-linux64.xml: Likewise.
* features/s390x-linux64.xml: Likewise.
* features/s390-linux32v1.xml: New file.
* features/s390-linux32v2.xml: Likewise.
* features/s390-linux64v1.xml: Likewise.
* features/s390-linux64v2.xml: Likewise.
* features/s390x-linux64v1.xml: Likewise.
* features/s390x-linux64v2.xml: Likewise.
* features/s390-linux32.c: Regenerate.
* features/s390-linux64.c: Likewise.
* features/s390x-linux64.c: Likewise.
* features/s390-linux32v1.c: New generated file.
* features/s390-linux32v2.c: Likewise.
* features/s390-linux64v1.c: Likewise.
* features/s390-linux64v2.c: Likewise.
* features/s390x-linux64v1.c: Likewise.
* features/s390x-linux64v2.c: Likewise.
* regformats/s390-linux32.dat: Regenerate.
* regformats/s390-linux64.dat: Regenerate.
* regformats/s390x-linux64.dat: Regenerate.
* regformats/s390-linux32v1.dat: New generated file.
* regformats/s390-linux32v2.dat: Likewise.
* regformats/s390-linux64v1.dat: Likewise.
* regformats/s390-linux64v2.dat: Likewise.
* regformats/s390x-linux64v1.dat: Likewise.
* regformats/s390x-linux64v2.dat: Likewise.
gdbserver/ChangeLog:
* Makefile.in (s390-linux32v1.o, s390-linux32v1.c): New rules.
(s390-linux32v2.o, s390-linux32v2.c): Likewise.
(s390-linux64v1.o, s390-linux64v1.c): Likewise.
(s390-linux64v2.o, s390-linux64v2.c): Likewise.
(s390x-linux64v1.o, s390x-linux64v1.c): Likewise.
(s390x-linux64v2.o, s390x-linux64v2.c): Likewise.
* configure.srv [s390*-*-linux*] (srv_regobj): Add new objects.
(srv_xmlfiles): Add new XML files.
* linux-s390-low.c: Include "elf/common.h", <sys/ptrace.h>,
and <sys/uio.h>.
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(init_registers_s390_linux32v1): Add prototype.
(init_registers_s390_linux32v2): Likewise.
(init_registers_s390_linux64v1): Likewise.
(init_registers_s390_linux64v2): Likewise.
(init_registers_s390x_linux64v1): Likewise.
(init_registers_s390x_linux64v2): Likewise.
(s390_num_regs): Increment to 52.
(s390_regmap): Add orig_r2 register.
(s390_num_regs_3264): Increment to 68.
(s390_regmap_3264): Add orig_r2 register.
(s390_collect_ptrace_register): Handle orig_r2 register.
(s390_supply_ptrace_register): Likewise.
(s390_fill_last_break): New function.
(s390_store_last_break): Likewise.
(s390_fill_system_call): New function.
(s390_store_system_call): Likewise.
(target_regsets): Handle NT_S390_LAST_BREAK and NT_S390_SYSTEM_CALL
register sets.
(s390_check_regset): New function.
(s390_arch_setup): Check for presence of NT_S390_LAST_BREAK and
NT_S390_SYSTEM_CALL regsets and use appropriate description.
Update target_regsets for available register sets.
testsuite/ChangeLog:
* gdb.base/callfuncs.exp (fetch_all_registers): Filter out read-only
last_break register on s390*-*-* targets.
2011-12-06 22:14:50 +08:00
|
|
|
|
2013-09-13 22:17:31 +08:00
|
|
|
|
2014-07-15 19:18:35 +08:00
|
|
|
/* Supply the TDB regset. Like regcache_supply_regset, but invalidate
|
|
|
|
the TDB registers unless the TDB format field is valid. */
|
2013-09-13 22:17:31 +08:00
|
|
|
|
|
|
|
static void
|
|
|
|
s390_supply_tdb_regset (const struct regset *regset, struct regcache *regcache,
|
|
|
|
int regnum, const void *regs, size_t len)
|
|
|
|
{
|
|
|
|
ULONGEST tdw;
|
|
|
|
enum register_status ret;
|
|
|
|
int i;
|
|
|
|
|
2014-07-15 19:18:35 +08:00
|
|
|
regcache_supply_regset (regset, regcache, regnum, regs, len);
|
2013-09-13 22:17:31 +08:00
|
|
|
ret = regcache_cooked_read_unsigned (regcache, S390_TDB_DWORD0_REGNUM, &tdw);
|
|
|
|
if (ret != REG_VALID || (tdw >> 56) != 1)
|
2014-07-15 19:18:35 +08:00
|
|
|
regcache_supply_regset (regset, regcache, regnum, NULL, len);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
}
|
|
|
|
|
2014-07-15 19:18:35 +08:00
|
|
|
const struct regset s390_gregset = {
|
|
|
|
s390_gregmap,
|
|
|
|
regcache_supply_regset,
|
|
|
|
regcache_collect_regset
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
};
|
|
|
|
|
2014-07-15 19:18:35 +08:00
|
|
|
const struct regset s390_fpregset = {
|
|
|
|
s390_fpregmap,
|
|
|
|
regcache_supply_regset,
|
|
|
|
regcache_collect_regset
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
};
|
|
|
|
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
static const struct regset s390_upper_regset = {
|
2013-10-31 01:51:57 +08:00
|
|
|
s390_regmap_upper,
|
2014-07-15 19:18:35 +08:00
|
|
|
regcache_supply_regset,
|
|
|
|
regcache_collect_regset
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
};
|
|
|
|
|
2014-07-15 19:18:35 +08:00
|
|
|
const struct regset s390_last_break_regset = {
|
ChangeLog:
* s390-tdep.h (S390_ORIG_R2_REGNUM): Define.
(S390_LAST_BREAK_REGNUM): Likewise.
(S390_SYSTEM_CALL_REGNUM): Likewise.
(S390_NUM_REGS): Update.
(s390_regmap_last_break): Add declaration.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(tdesc_s390_linux32v1): Add declaration.
(tdesc_s390_linux32v2): Likewise.
(tdesc_s390_linux64v1): Likewise.
(tdesc_s390_linux64v2): Likewise.
(tdesc_s390x_linux64v1): Likewise.
(tdesc_s390x_linux64v2): Likewise.
* s390-tdep.c: Include new target description files
"features/s390-linux32v1.c", "features/s390-linux32v2.c",
"features/s390-linux64v1.c", "features/s390-linux64v2.c",
"features/s390x-linux64v1.c", and "features/s390x-linux64v2.c".
(s390_cannot_store_register): New function.
(s390_write_pc): Likewise.
(s390_dwarf_regmap): Add fields for new registers.
(s390_regmap_gregset): Likewise.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): Likewise.
(s390_regmap_last_break): New variable.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(s390_last_break_regset): Likewise.
(s390x_last_break_regset): Likewise.
(s390_system_call_regset): Likewise.
(s390_upper_regset_sections): Rename to ...
(s390_linux64_regset_sections): ... this.
(s390_linux32_regset_sections): New variable.
(s390x_linux64_regset_sections): Likewise.
(s390_linux32v1_regset_sections): Likewise.
(s390_linux32v2_regset_sections): Likewise.
(s390_linux64v1_regset_sections): Likewise.
(s390_linux64v2_regset_sections): Likewise.
(s390x_linux64v1_regset_sections): Likewise.
(s390x_linux64v2_regset_sections): Likewise.
(s390_regset_from_core_section): Handle .reg-s390-last-break and
.reg-s390-system-call core file sections.
(s390_core_read_description): Check for presence of
.reg-s390-last-break and .reg-s390-system-call core file
sections and return appropriate target description.
(s390_gdbarch_init): Detect Linux-specific registers "orig_r2",
"last_break" and "system_call" in target description. Install
appropriate gdbarch_core_regset_sections array.
Call set_gdbarch_cannot_store_register and set_gdbarch_write_pc.
(_initialize_s390_tdep): Initialize additional target descriptions.
* s390-nat.c: Include "elf/common.h".
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(have_regset_last_break): New static variable.
(have_regset_system_call): Likewise.
(s390_native_supply): Handle S390_ORIG_R2_REGNUM.
(s390_native_collect): Likewise.
(fetch_regset, store_regset, check_regset): New functions.
(s390_linux_fetch_inferior_registers): Handle S390_LAST_BREAK_REGNUM
and S390_SYSTEM_CALL_REGNUM.
(s390_linux_store_inferior_registers): Likewise.
(s390_read_description): Check for presence of NT_S390_LAST_BREAK
and NT_S390_SYSTEM_CALL regsets and use appropriate description.
* features/Makefile (WHICH): Add s390-linux32v1, s390-linux64v1,
s390x-linux64v1, s390-linux32v2, s390-linux64v2, and s390x-linux64v2.
(s390-linux32v1-expedite): Define.
(s390-linux32v2-expedite): Likewise.
(s390-linux64v1-expedite): Likewise.
(s390-linux64v2-expedite): Likewise.
(s390x-linux64v1-expedite): Likewise.
(s390x-linux64v2-expedite): Likewise.
* features/s390-linux32.xml: Add orig_r2 register.
* features/s390-linux64.xml: Likewise.
* features/s390x-linux64.xml: Likewise.
* features/s390-linux32v1.xml: New file.
* features/s390-linux32v2.xml: Likewise.
* features/s390-linux64v1.xml: Likewise.
* features/s390-linux64v2.xml: Likewise.
* features/s390x-linux64v1.xml: Likewise.
* features/s390x-linux64v2.xml: Likewise.
* features/s390-linux32.c: Regenerate.
* features/s390-linux64.c: Likewise.
* features/s390x-linux64.c: Likewise.
* features/s390-linux32v1.c: New generated file.
* features/s390-linux32v2.c: Likewise.
* features/s390-linux64v1.c: Likewise.
* features/s390-linux64v2.c: Likewise.
* features/s390x-linux64v1.c: Likewise.
* features/s390x-linux64v2.c: Likewise.
* regformats/s390-linux32.dat: Regenerate.
* regformats/s390-linux64.dat: Regenerate.
* regformats/s390x-linux64.dat: Regenerate.
* regformats/s390-linux32v1.dat: New generated file.
* regformats/s390-linux32v2.dat: Likewise.
* regformats/s390-linux64v1.dat: Likewise.
* regformats/s390-linux64v2.dat: Likewise.
* regformats/s390x-linux64v1.dat: Likewise.
* regformats/s390x-linux64v2.dat: Likewise.
gdbserver/ChangeLog:
* Makefile.in (s390-linux32v1.o, s390-linux32v1.c): New rules.
(s390-linux32v2.o, s390-linux32v2.c): Likewise.
(s390-linux64v1.o, s390-linux64v1.c): Likewise.
(s390-linux64v2.o, s390-linux64v2.c): Likewise.
(s390x-linux64v1.o, s390x-linux64v1.c): Likewise.
(s390x-linux64v2.o, s390x-linux64v2.c): Likewise.
* configure.srv [s390*-*-linux*] (srv_regobj): Add new objects.
(srv_xmlfiles): Add new XML files.
* linux-s390-low.c: Include "elf/common.h", <sys/ptrace.h>,
and <sys/uio.h>.
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(init_registers_s390_linux32v1): Add prototype.
(init_registers_s390_linux32v2): Likewise.
(init_registers_s390_linux64v1): Likewise.
(init_registers_s390_linux64v2): Likewise.
(init_registers_s390x_linux64v1): Likewise.
(init_registers_s390x_linux64v2): Likewise.
(s390_num_regs): Increment to 52.
(s390_regmap): Add orig_r2 register.
(s390_num_regs_3264): Increment to 68.
(s390_regmap_3264): Add orig_r2 register.
(s390_collect_ptrace_register): Handle orig_r2 register.
(s390_supply_ptrace_register): Likewise.
(s390_fill_last_break): New function.
(s390_store_last_break): Likewise.
(s390_fill_system_call): New function.
(s390_store_system_call): Likewise.
(target_regsets): Handle NT_S390_LAST_BREAK and NT_S390_SYSTEM_CALL
register sets.
(s390_check_regset): New function.
(s390_arch_setup): Check for presence of NT_S390_LAST_BREAK and
NT_S390_SYSTEM_CALL regsets and use appropriate description.
Update target_regsets for available register sets.
testsuite/ChangeLog:
* gdb.base/callfuncs.exp (fetch_all_registers): Filter out read-only
last_break register on s390*-*-* targets.
2011-12-06 22:14:50 +08:00
|
|
|
s390_regmap_last_break,
|
2014-07-15 19:18:35 +08:00
|
|
|
regcache_supply_regset,
|
|
|
|
regcache_collect_regset
|
ChangeLog:
* s390-tdep.h (S390_ORIG_R2_REGNUM): Define.
(S390_LAST_BREAK_REGNUM): Likewise.
(S390_SYSTEM_CALL_REGNUM): Likewise.
(S390_NUM_REGS): Update.
(s390_regmap_last_break): Add declaration.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(tdesc_s390_linux32v1): Add declaration.
(tdesc_s390_linux32v2): Likewise.
(tdesc_s390_linux64v1): Likewise.
(tdesc_s390_linux64v2): Likewise.
(tdesc_s390x_linux64v1): Likewise.
(tdesc_s390x_linux64v2): Likewise.
* s390-tdep.c: Include new target description files
"features/s390-linux32v1.c", "features/s390-linux32v2.c",
"features/s390-linux64v1.c", "features/s390-linux64v2.c",
"features/s390x-linux64v1.c", and "features/s390x-linux64v2.c".
(s390_cannot_store_register): New function.
(s390_write_pc): Likewise.
(s390_dwarf_regmap): Add fields for new registers.
(s390_regmap_gregset): Likewise.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): Likewise.
(s390_regmap_last_break): New variable.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(s390_last_break_regset): Likewise.
(s390x_last_break_regset): Likewise.
(s390_system_call_regset): Likewise.
(s390_upper_regset_sections): Rename to ...
(s390_linux64_regset_sections): ... this.
(s390_linux32_regset_sections): New variable.
(s390x_linux64_regset_sections): Likewise.
(s390_linux32v1_regset_sections): Likewise.
(s390_linux32v2_regset_sections): Likewise.
(s390_linux64v1_regset_sections): Likewise.
(s390_linux64v2_regset_sections): Likewise.
(s390x_linux64v1_regset_sections): Likewise.
(s390x_linux64v2_regset_sections): Likewise.
(s390_regset_from_core_section): Handle .reg-s390-last-break and
.reg-s390-system-call core file sections.
(s390_core_read_description): Check for presence of
.reg-s390-last-break and .reg-s390-system-call core file
sections and return appropriate target description.
(s390_gdbarch_init): Detect Linux-specific registers "orig_r2",
"last_break" and "system_call" in target description. Install
appropriate gdbarch_core_regset_sections array.
Call set_gdbarch_cannot_store_register and set_gdbarch_write_pc.
(_initialize_s390_tdep): Initialize additional target descriptions.
* s390-nat.c: Include "elf/common.h".
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(have_regset_last_break): New static variable.
(have_regset_system_call): Likewise.
(s390_native_supply): Handle S390_ORIG_R2_REGNUM.
(s390_native_collect): Likewise.
(fetch_regset, store_regset, check_regset): New functions.
(s390_linux_fetch_inferior_registers): Handle S390_LAST_BREAK_REGNUM
and S390_SYSTEM_CALL_REGNUM.
(s390_linux_store_inferior_registers): Likewise.
(s390_read_description): Check for presence of NT_S390_LAST_BREAK
and NT_S390_SYSTEM_CALL regsets and use appropriate description.
* features/Makefile (WHICH): Add s390-linux32v1, s390-linux64v1,
s390x-linux64v1, s390-linux32v2, s390-linux64v2, and s390x-linux64v2.
(s390-linux32v1-expedite): Define.
(s390-linux32v2-expedite): Likewise.
(s390-linux64v1-expedite): Likewise.
(s390-linux64v2-expedite): Likewise.
(s390x-linux64v1-expedite): Likewise.
(s390x-linux64v2-expedite): Likewise.
* features/s390-linux32.xml: Add orig_r2 register.
* features/s390-linux64.xml: Likewise.
* features/s390x-linux64.xml: Likewise.
* features/s390-linux32v1.xml: New file.
* features/s390-linux32v2.xml: Likewise.
* features/s390-linux64v1.xml: Likewise.
* features/s390-linux64v2.xml: Likewise.
* features/s390x-linux64v1.xml: Likewise.
* features/s390x-linux64v2.xml: Likewise.
* features/s390-linux32.c: Regenerate.
* features/s390-linux64.c: Likewise.
* features/s390x-linux64.c: Likewise.
* features/s390-linux32v1.c: New generated file.
* features/s390-linux32v2.c: Likewise.
* features/s390-linux64v1.c: Likewise.
* features/s390-linux64v2.c: Likewise.
* features/s390x-linux64v1.c: Likewise.
* features/s390x-linux64v2.c: Likewise.
* regformats/s390-linux32.dat: Regenerate.
* regformats/s390-linux64.dat: Regenerate.
* regformats/s390x-linux64.dat: Regenerate.
* regformats/s390-linux32v1.dat: New generated file.
* regformats/s390-linux32v2.dat: Likewise.
* regformats/s390-linux64v1.dat: Likewise.
* regformats/s390-linux64v2.dat: Likewise.
* regformats/s390x-linux64v1.dat: Likewise.
* regformats/s390x-linux64v2.dat: Likewise.
gdbserver/ChangeLog:
* Makefile.in (s390-linux32v1.o, s390-linux32v1.c): New rules.
(s390-linux32v2.o, s390-linux32v2.c): Likewise.
(s390-linux64v1.o, s390-linux64v1.c): Likewise.
(s390-linux64v2.o, s390-linux64v2.c): Likewise.
(s390x-linux64v1.o, s390x-linux64v1.c): Likewise.
(s390x-linux64v2.o, s390x-linux64v2.c): Likewise.
* configure.srv [s390*-*-linux*] (srv_regobj): Add new objects.
(srv_xmlfiles): Add new XML files.
* linux-s390-low.c: Include "elf/common.h", <sys/ptrace.h>,
and <sys/uio.h>.
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(init_registers_s390_linux32v1): Add prototype.
(init_registers_s390_linux32v2): Likewise.
(init_registers_s390_linux64v1): Likewise.
(init_registers_s390_linux64v2): Likewise.
(init_registers_s390x_linux64v1): Likewise.
(init_registers_s390x_linux64v2): Likewise.
(s390_num_regs): Increment to 52.
(s390_regmap): Add orig_r2 register.
(s390_num_regs_3264): Increment to 68.
(s390_regmap_3264): Add orig_r2 register.
(s390_collect_ptrace_register): Handle orig_r2 register.
(s390_supply_ptrace_register): Likewise.
(s390_fill_last_break): New function.
(s390_store_last_break): Likewise.
(s390_fill_system_call): New function.
(s390_store_system_call): Likewise.
(target_regsets): Handle NT_S390_LAST_BREAK and NT_S390_SYSTEM_CALL
register sets.
(s390_check_regset): New function.
(s390_arch_setup): Check for presence of NT_S390_LAST_BREAK and
NT_S390_SYSTEM_CALL regsets and use appropriate description.
Update target_regsets for available register sets.
testsuite/ChangeLog:
* gdb.base/callfuncs.exp (fetch_all_registers): Filter out read-only
last_break register on s390*-*-* targets.
2011-12-06 22:14:50 +08:00
|
|
|
};
|
|
|
|
|
2014-07-15 19:18:35 +08:00
|
|
|
const struct regset s390x_last_break_regset = {
|
ChangeLog:
* s390-tdep.h (S390_ORIG_R2_REGNUM): Define.
(S390_LAST_BREAK_REGNUM): Likewise.
(S390_SYSTEM_CALL_REGNUM): Likewise.
(S390_NUM_REGS): Update.
(s390_regmap_last_break): Add declaration.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(tdesc_s390_linux32v1): Add declaration.
(tdesc_s390_linux32v2): Likewise.
(tdesc_s390_linux64v1): Likewise.
(tdesc_s390_linux64v2): Likewise.
(tdesc_s390x_linux64v1): Likewise.
(tdesc_s390x_linux64v2): Likewise.
* s390-tdep.c: Include new target description files
"features/s390-linux32v1.c", "features/s390-linux32v2.c",
"features/s390-linux64v1.c", "features/s390-linux64v2.c",
"features/s390x-linux64v1.c", and "features/s390x-linux64v2.c".
(s390_cannot_store_register): New function.
(s390_write_pc): Likewise.
(s390_dwarf_regmap): Add fields for new registers.
(s390_regmap_gregset): Likewise.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): Likewise.
(s390_regmap_last_break): New variable.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(s390_last_break_regset): Likewise.
(s390x_last_break_regset): Likewise.
(s390_system_call_regset): Likewise.
(s390_upper_regset_sections): Rename to ...
(s390_linux64_regset_sections): ... this.
(s390_linux32_regset_sections): New variable.
(s390x_linux64_regset_sections): Likewise.
(s390_linux32v1_regset_sections): Likewise.
(s390_linux32v2_regset_sections): Likewise.
(s390_linux64v1_regset_sections): Likewise.
(s390_linux64v2_regset_sections): Likewise.
(s390x_linux64v1_regset_sections): Likewise.
(s390x_linux64v2_regset_sections): Likewise.
(s390_regset_from_core_section): Handle .reg-s390-last-break and
.reg-s390-system-call core file sections.
(s390_core_read_description): Check for presence of
.reg-s390-last-break and .reg-s390-system-call core file
sections and return appropriate target description.
(s390_gdbarch_init): Detect Linux-specific registers "orig_r2",
"last_break" and "system_call" in target description. Install
appropriate gdbarch_core_regset_sections array.
Call set_gdbarch_cannot_store_register and set_gdbarch_write_pc.
(_initialize_s390_tdep): Initialize additional target descriptions.
* s390-nat.c: Include "elf/common.h".
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(have_regset_last_break): New static variable.
(have_regset_system_call): Likewise.
(s390_native_supply): Handle S390_ORIG_R2_REGNUM.
(s390_native_collect): Likewise.
(fetch_regset, store_regset, check_regset): New functions.
(s390_linux_fetch_inferior_registers): Handle S390_LAST_BREAK_REGNUM
and S390_SYSTEM_CALL_REGNUM.
(s390_linux_store_inferior_registers): Likewise.
(s390_read_description): Check for presence of NT_S390_LAST_BREAK
and NT_S390_SYSTEM_CALL regsets and use appropriate description.
* features/Makefile (WHICH): Add s390-linux32v1, s390-linux64v1,
s390x-linux64v1, s390-linux32v2, s390-linux64v2, and s390x-linux64v2.
(s390-linux32v1-expedite): Define.
(s390-linux32v2-expedite): Likewise.
(s390-linux64v1-expedite): Likewise.
(s390-linux64v2-expedite): Likewise.
(s390x-linux64v1-expedite): Likewise.
(s390x-linux64v2-expedite): Likewise.
* features/s390-linux32.xml: Add orig_r2 register.
* features/s390-linux64.xml: Likewise.
* features/s390x-linux64.xml: Likewise.
* features/s390-linux32v1.xml: New file.
* features/s390-linux32v2.xml: Likewise.
* features/s390-linux64v1.xml: Likewise.
* features/s390-linux64v2.xml: Likewise.
* features/s390x-linux64v1.xml: Likewise.
* features/s390x-linux64v2.xml: Likewise.
* features/s390-linux32.c: Regenerate.
* features/s390-linux64.c: Likewise.
* features/s390x-linux64.c: Likewise.
* features/s390-linux32v1.c: New generated file.
* features/s390-linux32v2.c: Likewise.
* features/s390-linux64v1.c: Likewise.
* features/s390-linux64v2.c: Likewise.
* features/s390x-linux64v1.c: Likewise.
* features/s390x-linux64v2.c: Likewise.
* regformats/s390-linux32.dat: Regenerate.
* regformats/s390-linux64.dat: Regenerate.
* regformats/s390x-linux64.dat: Regenerate.
* regformats/s390-linux32v1.dat: New generated file.
* regformats/s390-linux32v2.dat: Likewise.
* regformats/s390-linux64v1.dat: Likewise.
* regformats/s390-linux64v2.dat: Likewise.
* regformats/s390x-linux64v1.dat: Likewise.
* regformats/s390x-linux64v2.dat: Likewise.
gdbserver/ChangeLog:
* Makefile.in (s390-linux32v1.o, s390-linux32v1.c): New rules.
(s390-linux32v2.o, s390-linux32v2.c): Likewise.
(s390-linux64v1.o, s390-linux64v1.c): Likewise.
(s390-linux64v2.o, s390-linux64v2.c): Likewise.
(s390x-linux64v1.o, s390x-linux64v1.c): Likewise.
(s390x-linux64v2.o, s390x-linux64v2.c): Likewise.
* configure.srv [s390*-*-linux*] (srv_regobj): Add new objects.
(srv_xmlfiles): Add new XML files.
* linux-s390-low.c: Include "elf/common.h", <sys/ptrace.h>,
and <sys/uio.h>.
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(init_registers_s390_linux32v1): Add prototype.
(init_registers_s390_linux32v2): Likewise.
(init_registers_s390_linux64v1): Likewise.
(init_registers_s390_linux64v2): Likewise.
(init_registers_s390x_linux64v1): Likewise.
(init_registers_s390x_linux64v2): Likewise.
(s390_num_regs): Increment to 52.
(s390_regmap): Add orig_r2 register.
(s390_num_regs_3264): Increment to 68.
(s390_regmap_3264): Add orig_r2 register.
(s390_collect_ptrace_register): Handle orig_r2 register.
(s390_supply_ptrace_register): Likewise.
(s390_fill_last_break): New function.
(s390_store_last_break): Likewise.
(s390_fill_system_call): New function.
(s390_store_system_call): Likewise.
(target_regsets): Handle NT_S390_LAST_BREAK and NT_S390_SYSTEM_CALL
register sets.
(s390_check_regset): New function.
(s390_arch_setup): Check for presence of NT_S390_LAST_BREAK and
NT_S390_SYSTEM_CALL regsets and use appropriate description.
Update target_regsets for available register sets.
testsuite/ChangeLog:
* gdb.base/callfuncs.exp (fetch_all_registers): Filter out read-only
last_break register on s390*-*-* targets.
2011-12-06 22:14:50 +08:00
|
|
|
s390x_regmap_last_break,
|
2014-07-15 19:18:35 +08:00
|
|
|
regcache_supply_regset,
|
|
|
|
regcache_collect_regset
|
ChangeLog:
* s390-tdep.h (S390_ORIG_R2_REGNUM): Define.
(S390_LAST_BREAK_REGNUM): Likewise.
(S390_SYSTEM_CALL_REGNUM): Likewise.
(S390_NUM_REGS): Update.
(s390_regmap_last_break): Add declaration.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(tdesc_s390_linux32v1): Add declaration.
(tdesc_s390_linux32v2): Likewise.
(tdesc_s390_linux64v1): Likewise.
(tdesc_s390_linux64v2): Likewise.
(tdesc_s390x_linux64v1): Likewise.
(tdesc_s390x_linux64v2): Likewise.
* s390-tdep.c: Include new target description files
"features/s390-linux32v1.c", "features/s390-linux32v2.c",
"features/s390-linux64v1.c", "features/s390-linux64v2.c",
"features/s390x-linux64v1.c", and "features/s390x-linux64v2.c".
(s390_cannot_store_register): New function.
(s390_write_pc): Likewise.
(s390_dwarf_regmap): Add fields for new registers.
(s390_regmap_gregset): Likewise.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): Likewise.
(s390_regmap_last_break): New variable.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(s390_last_break_regset): Likewise.
(s390x_last_break_regset): Likewise.
(s390_system_call_regset): Likewise.
(s390_upper_regset_sections): Rename to ...
(s390_linux64_regset_sections): ... this.
(s390_linux32_regset_sections): New variable.
(s390x_linux64_regset_sections): Likewise.
(s390_linux32v1_regset_sections): Likewise.
(s390_linux32v2_regset_sections): Likewise.
(s390_linux64v1_regset_sections): Likewise.
(s390_linux64v2_regset_sections): Likewise.
(s390x_linux64v1_regset_sections): Likewise.
(s390x_linux64v2_regset_sections): Likewise.
(s390_regset_from_core_section): Handle .reg-s390-last-break and
.reg-s390-system-call core file sections.
(s390_core_read_description): Check for presence of
.reg-s390-last-break and .reg-s390-system-call core file
sections and return appropriate target description.
(s390_gdbarch_init): Detect Linux-specific registers "orig_r2",
"last_break" and "system_call" in target description. Install
appropriate gdbarch_core_regset_sections array.
Call set_gdbarch_cannot_store_register and set_gdbarch_write_pc.
(_initialize_s390_tdep): Initialize additional target descriptions.
* s390-nat.c: Include "elf/common.h".
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(have_regset_last_break): New static variable.
(have_regset_system_call): Likewise.
(s390_native_supply): Handle S390_ORIG_R2_REGNUM.
(s390_native_collect): Likewise.
(fetch_regset, store_regset, check_regset): New functions.
(s390_linux_fetch_inferior_registers): Handle S390_LAST_BREAK_REGNUM
and S390_SYSTEM_CALL_REGNUM.
(s390_linux_store_inferior_registers): Likewise.
(s390_read_description): Check for presence of NT_S390_LAST_BREAK
and NT_S390_SYSTEM_CALL regsets and use appropriate description.
* features/Makefile (WHICH): Add s390-linux32v1, s390-linux64v1,
s390x-linux64v1, s390-linux32v2, s390-linux64v2, and s390x-linux64v2.
(s390-linux32v1-expedite): Define.
(s390-linux32v2-expedite): Likewise.
(s390-linux64v1-expedite): Likewise.
(s390-linux64v2-expedite): Likewise.
(s390x-linux64v1-expedite): Likewise.
(s390x-linux64v2-expedite): Likewise.
* features/s390-linux32.xml: Add orig_r2 register.
* features/s390-linux64.xml: Likewise.
* features/s390x-linux64.xml: Likewise.
* features/s390-linux32v1.xml: New file.
* features/s390-linux32v2.xml: Likewise.
* features/s390-linux64v1.xml: Likewise.
* features/s390-linux64v2.xml: Likewise.
* features/s390x-linux64v1.xml: Likewise.
* features/s390x-linux64v2.xml: Likewise.
* features/s390-linux32.c: Regenerate.
* features/s390-linux64.c: Likewise.
* features/s390x-linux64.c: Likewise.
* features/s390-linux32v1.c: New generated file.
* features/s390-linux32v2.c: Likewise.
* features/s390-linux64v1.c: Likewise.
* features/s390-linux64v2.c: Likewise.
* features/s390x-linux64v1.c: Likewise.
* features/s390x-linux64v2.c: Likewise.
* regformats/s390-linux32.dat: Regenerate.
* regformats/s390-linux64.dat: Regenerate.
* regformats/s390x-linux64.dat: Regenerate.
* regformats/s390-linux32v1.dat: New generated file.
* regformats/s390-linux32v2.dat: Likewise.
* regformats/s390-linux64v1.dat: Likewise.
* regformats/s390-linux64v2.dat: Likewise.
* regformats/s390x-linux64v1.dat: Likewise.
* regformats/s390x-linux64v2.dat: Likewise.
gdbserver/ChangeLog:
* Makefile.in (s390-linux32v1.o, s390-linux32v1.c): New rules.
(s390-linux32v2.o, s390-linux32v2.c): Likewise.
(s390-linux64v1.o, s390-linux64v1.c): Likewise.
(s390-linux64v2.o, s390-linux64v2.c): Likewise.
(s390x-linux64v1.o, s390x-linux64v1.c): Likewise.
(s390x-linux64v2.o, s390x-linux64v2.c): Likewise.
* configure.srv [s390*-*-linux*] (srv_regobj): Add new objects.
(srv_xmlfiles): Add new XML files.
* linux-s390-low.c: Include "elf/common.h", <sys/ptrace.h>,
and <sys/uio.h>.
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(init_registers_s390_linux32v1): Add prototype.
(init_registers_s390_linux32v2): Likewise.
(init_registers_s390_linux64v1): Likewise.
(init_registers_s390_linux64v2): Likewise.
(init_registers_s390x_linux64v1): Likewise.
(init_registers_s390x_linux64v2): Likewise.
(s390_num_regs): Increment to 52.
(s390_regmap): Add orig_r2 register.
(s390_num_regs_3264): Increment to 68.
(s390_regmap_3264): Add orig_r2 register.
(s390_collect_ptrace_register): Handle orig_r2 register.
(s390_supply_ptrace_register): Likewise.
(s390_fill_last_break): New function.
(s390_store_last_break): Likewise.
(s390_fill_system_call): New function.
(s390_store_system_call): Likewise.
(target_regsets): Handle NT_S390_LAST_BREAK and NT_S390_SYSTEM_CALL
register sets.
(s390_check_regset): New function.
(s390_arch_setup): Check for presence of NT_S390_LAST_BREAK and
NT_S390_SYSTEM_CALL regsets and use appropriate description.
Update target_regsets for available register sets.
testsuite/ChangeLog:
* gdb.base/callfuncs.exp (fetch_all_registers): Filter out read-only
last_break register on s390*-*-* targets.
2011-12-06 22:14:50 +08:00
|
|
|
};
|
|
|
|
|
2014-07-15 19:18:35 +08:00
|
|
|
const struct regset s390_system_call_regset = {
|
ChangeLog:
* s390-tdep.h (S390_ORIG_R2_REGNUM): Define.
(S390_LAST_BREAK_REGNUM): Likewise.
(S390_SYSTEM_CALL_REGNUM): Likewise.
(S390_NUM_REGS): Update.
(s390_regmap_last_break): Add declaration.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(tdesc_s390_linux32v1): Add declaration.
(tdesc_s390_linux32v2): Likewise.
(tdesc_s390_linux64v1): Likewise.
(tdesc_s390_linux64v2): Likewise.
(tdesc_s390x_linux64v1): Likewise.
(tdesc_s390x_linux64v2): Likewise.
* s390-tdep.c: Include new target description files
"features/s390-linux32v1.c", "features/s390-linux32v2.c",
"features/s390-linux64v1.c", "features/s390-linux64v2.c",
"features/s390x-linux64v1.c", and "features/s390x-linux64v2.c".
(s390_cannot_store_register): New function.
(s390_write_pc): Likewise.
(s390_dwarf_regmap): Add fields for new registers.
(s390_regmap_gregset): Likewise.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): Likewise.
(s390_regmap_last_break): New variable.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(s390_last_break_regset): Likewise.
(s390x_last_break_regset): Likewise.
(s390_system_call_regset): Likewise.
(s390_upper_regset_sections): Rename to ...
(s390_linux64_regset_sections): ... this.
(s390_linux32_regset_sections): New variable.
(s390x_linux64_regset_sections): Likewise.
(s390_linux32v1_regset_sections): Likewise.
(s390_linux32v2_regset_sections): Likewise.
(s390_linux64v1_regset_sections): Likewise.
(s390_linux64v2_regset_sections): Likewise.
(s390x_linux64v1_regset_sections): Likewise.
(s390x_linux64v2_regset_sections): Likewise.
(s390_regset_from_core_section): Handle .reg-s390-last-break and
.reg-s390-system-call core file sections.
(s390_core_read_description): Check for presence of
.reg-s390-last-break and .reg-s390-system-call core file
sections and return appropriate target description.
(s390_gdbarch_init): Detect Linux-specific registers "orig_r2",
"last_break" and "system_call" in target description. Install
appropriate gdbarch_core_regset_sections array.
Call set_gdbarch_cannot_store_register and set_gdbarch_write_pc.
(_initialize_s390_tdep): Initialize additional target descriptions.
* s390-nat.c: Include "elf/common.h".
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(have_regset_last_break): New static variable.
(have_regset_system_call): Likewise.
(s390_native_supply): Handle S390_ORIG_R2_REGNUM.
(s390_native_collect): Likewise.
(fetch_regset, store_regset, check_regset): New functions.
(s390_linux_fetch_inferior_registers): Handle S390_LAST_BREAK_REGNUM
and S390_SYSTEM_CALL_REGNUM.
(s390_linux_store_inferior_registers): Likewise.
(s390_read_description): Check for presence of NT_S390_LAST_BREAK
and NT_S390_SYSTEM_CALL regsets and use appropriate description.
* features/Makefile (WHICH): Add s390-linux32v1, s390-linux64v1,
s390x-linux64v1, s390-linux32v2, s390-linux64v2, and s390x-linux64v2.
(s390-linux32v1-expedite): Define.
(s390-linux32v2-expedite): Likewise.
(s390-linux64v1-expedite): Likewise.
(s390-linux64v2-expedite): Likewise.
(s390x-linux64v1-expedite): Likewise.
(s390x-linux64v2-expedite): Likewise.
* features/s390-linux32.xml: Add orig_r2 register.
* features/s390-linux64.xml: Likewise.
* features/s390x-linux64.xml: Likewise.
* features/s390-linux32v1.xml: New file.
* features/s390-linux32v2.xml: Likewise.
* features/s390-linux64v1.xml: Likewise.
* features/s390-linux64v2.xml: Likewise.
* features/s390x-linux64v1.xml: Likewise.
* features/s390x-linux64v2.xml: Likewise.
* features/s390-linux32.c: Regenerate.
* features/s390-linux64.c: Likewise.
* features/s390x-linux64.c: Likewise.
* features/s390-linux32v1.c: New generated file.
* features/s390-linux32v2.c: Likewise.
* features/s390-linux64v1.c: Likewise.
* features/s390-linux64v2.c: Likewise.
* features/s390x-linux64v1.c: Likewise.
* features/s390x-linux64v2.c: Likewise.
* regformats/s390-linux32.dat: Regenerate.
* regformats/s390-linux64.dat: Regenerate.
* regformats/s390x-linux64.dat: Regenerate.
* regformats/s390-linux32v1.dat: New generated file.
* regformats/s390-linux32v2.dat: Likewise.
* regformats/s390-linux64v1.dat: Likewise.
* regformats/s390-linux64v2.dat: Likewise.
* regformats/s390x-linux64v1.dat: Likewise.
* regformats/s390x-linux64v2.dat: Likewise.
gdbserver/ChangeLog:
* Makefile.in (s390-linux32v1.o, s390-linux32v1.c): New rules.
(s390-linux32v2.o, s390-linux32v2.c): Likewise.
(s390-linux64v1.o, s390-linux64v1.c): Likewise.
(s390-linux64v2.o, s390-linux64v2.c): Likewise.
(s390x-linux64v1.o, s390x-linux64v1.c): Likewise.
(s390x-linux64v2.o, s390x-linux64v2.c): Likewise.
* configure.srv [s390*-*-linux*] (srv_regobj): Add new objects.
(srv_xmlfiles): Add new XML files.
* linux-s390-low.c: Include "elf/common.h", <sys/ptrace.h>,
and <sys/uio.h>.
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(init_registers_s390_linux32v1): Add prototype.
(init_registers_s390_linux32v2): Likewise.
(init_registers_s390_linux64v1): Likewise.
(init_registers_s390_linux64v2): Likewise.
(init_registers_s390x_linux64v1): Likewise.
(init_registers_s390x_linux64v2): Likewise.
(s390_num_regs): Increment to 52.
(s390_regmap): Add orig_r2 register.
(s390_num_regs_3264): Increment to 68.
(s390_regmap_3264): Add orig_r2 register.
(s390_collect_ptrace_register): Handle orig_r2 register.
(s390_supply_ptrace_register): Likewise.
(s390_fill_last_break): New function.
(s390_store_last_break): Likewise.
(s390_fill_system_call): New function.
(s390_store_system_call): Likewise.
(target_regsets): Handle NT_S390_LAST_BREAK and NT_S390_SYSTEM_CALL
register sets.
(s390_check_regset): New function.
(s390_arch_setup): Check for presence of NT_S390_LAST_BREAK and
NT_S390_SYSTEM_CALL regsets and use appropriate description.
Update target_regsets for available register sets.
testsuite/ChangeLog:
* gdb.base/callfuncs.exp (fetch_all_registers): Filter out read-only
last_break register on s390*-*-* targets.
2011-12-06 22:14:50 +08:00
|
|
|
s390_regmap_system_call,
|
2014-07-15 19:18:35 +08:00
|
|
|
regcache_supply_regset,
|
|
|
|
regcache_collect_regset
|
ChangeLog:
* s390-tdep.h (S390_ORIG_R2_REGNUM): Define.
(S390_LAST_BREAK_REGNUM): Likewise.
(S390_SYSTEM_CALL_REGNUM): Likewise.
(S390_NUM_REGS): Update.
(s390_regmap_last_break): Add declaration.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(tdesc_s390_linux32v1): Add declaration.
(tdesc_s390_linux32v2): Likewise.
(tdesc_s390_linux64v1): Likewise.
(tdesc_s390_linux64v2): Likewise.
(tdesc_s390x_linux64v1): Likewise.
(tdesc_s390x_linux64v2): Likewise.
* s390-tdep.c: Include new target description files
"features/s390-linux32v1.c", "features/s390-linux32v2.c",
"features/s390-linux64v1.c", "features/s390-linux64v2.c",
"features/s390x-linux64v1.c", and "features/s390x-linux64v2.c".
(s390_cannot_store_register): New function.
(s390_write_pc): Likewise.
(s390_dwarf_regmap): Add fields for new registers.
(s390_regmap_gregset): Likewise.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): Likewise.
(s390_regmap_last_break): New variable.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(s390_last_break_regset): Likewise.
(s390x_last_break_regset): Likewise.
(s390_system_call_regset): Likewise.
(s390_upper_regset_sections): Rename to ...
(s390_linux64_regset_sections): ... this.
(s390_linux32_regset_sections): New variable.
(s390x_linux64_regset_sections): Likewise.
(s390_linux32v1_regset_sections): Likewise.
(s390_linux32v2_regset_sections): Likewise.
(s390_linux64v1_regset_sections): Likewise.
(s390_linux64v2_regset_sections): Likewise.
(s390x_linux64v1_regset_sections): Likewise.
(s390x_linux64v2_regset_sections): Likewise.
(s390_regset_from_core_section): Handle .reg-s390-last-break and
.reg-s390-system-call core file sections.
(s390_core_read_description): Check for presence of
.reg-s390-last-break and .reg-s390-system-call core file
sections and return appropriate target description.
(s390_gdbarch_init): Detect Linux-specific registers "orig_r2",
"last_break" and "system_call" in target description. Install
appropriate gdbarch_core_regset_sections array.
Call set_gdbarch_cannot_store_register and set_gdbarch_write_pc.
(_initialize_s390_tdep): Initialize additional target descriptions.
* s390-nat.c: Include "elf/common.h".
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(have_regset_last_break): New static variable.
(have_regset_system_call): Likewise.
(s390_native_supply): Handle S390_ORIG_R2_REGNUM.
(s390_native_collect): Likewise.
(fetch_regset, store_regset, check_regset): New functions.
(s390_linux_fetch_inferior_registers): Handle S390_LAST_BREAK_REGNUM
and S390_SYSTEM_CALL_REGNUM.
(s390_linux_store_inferior_registers): Likewise.
(s390_read_description): Check for presence of NT_S390_LAST_BREAK
and NT_S390_SYSTEM_CALL regsets and use appropriate description.
* features/Makefile (WHICH): Add s390-linux32v1, s390-linux64v1,
s390x-linux64v1, s390-linux32v2, s390-linux64v2, and s390x-linux64v2.
(s390-linux32v1-expedite): Define.
(s390-linux32v2-expedite): Likewise.
(s390-linux64v1-expedite): Likewise.
(s390-linux64v2-expedite): Likewise.
(s390x-linux64v1-expedite): Likewise.
(s390x-linux64v2-expedite): Likewise.
* features/s390-linux32.xml: Add orig_r2 register.
* features/s390-linux64.xml: Likewise.
* features/s390x-linux64.xml: Likewise.
* features/s390-linux32v1.xml: New file.
* features/s390-linux32v2.xml: Likewise.
* features/s390-linux64v1.xml: Likewise.
* features/s390-linux64v2.xml: Likewise.
* features/s390x-linux64v1.xml: Likewise.
* features/s390x-linux64v2.xml: Likewise.
* features/s390-linux32.c: Regenerate.
* features/s390-linux64.c: Likewise.
* features/s390x-linux64.c: Likewise.
* features/s390-linux32v1.c: New generated file.
* features/s390-linux32v2.c: Likewise.
* features/s390-linux64v1.c: Likewise.
* features/s390-linux64v2.c: Likewise.
* features/s390x-linux64v1.c: Likewise.
* features/s390x-linux64v2.c: Likewise.
* regformats/s390-linux32.dat: Regenerate.
* regformats/s390-linux64.dat: Regenerate.
* regformats/s390x-linux64.dat: Regenerate.
* regformats/s390-linux32v1.dat: New generated file.
* regformats/s390-linux32v2.dat: Likewise.
* regformats/s390-linux64v1.dat: Likewise.
* regformats/s390-linux64v2.dat: Likewise.
* regformats/s390x-linux64v1.dat: Likewise.
* regformats/s390x-linux64v2.dat: Likewise.
gdbserver/ChangeLog:
* Makefile.in (s390-linux32v1.o, s390-linux32v1.c): New rules.
(s390-linux32v2.o, s390-linux32v2.c): Likewise.
(s390-linux64v1.o, s390-linux64v1.c): Likewise.
(s390-linux64v2.o, s390-linux64v2.c): Likewise.
(s390x-linux64v1.o, s390x-linux64v1.c): Likewise.
(s390x-linux64v2.o, s390x-linux64v2.c): Likewise.
* configure.srv [s390*-*-linux*] (srv_regobj): Add new objects.
(srv_xmlfiles): Add new XML files.
* linux-s390-low.c: Include "elf/common.h", <sys/ptrace.h>,
and <sys/uio.h>.
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(init_registers_s390_linux32v1): Add prototype.
(init_registers_s390_linux32v2): Likewise.
(init_registers_s390_linux64v1): Likewise.
(init_registers_s390_linux64v2): Likewise.
(init_registers_s390x_linux64v1): Likewise.
(init_registers_s390x_linux64v2): Likewise.
(s390_num_regs): Increment to 52.
(s390_regmap): Add orig_r2 register.
(s390_num_regs_3264): Increment to 68.
(s390_regmap_3264): Add orig_r2 register.
(s390_collect_ptrace_register): Handle orig_r2 register.
(s390_supply_ptrace_register): Likewise.
(s390_fill_last_break): New function.
(s390_store_last_break): Likewise.
(s390_fill_system_call): New function.
(s390_store_system_call): Likewise.
(target_regsets): Handle NT_S390_LAST_BREAK and NT_S390_SYSTEM_CALL
register sets.
(s390_check_regset): New function.
(s390_arch_setup): Check for presence of NT_S390_LAST_BREAK and
NT_S390_SYSTEM_CALL regsets and use appropriate description.
Update target_regsets for available register sets.
testsuite/ChangeLog:
* gdb.base/callfuncs.exp (fetch_all_registers): Filter out read-only
last_break register on s390*-*-* targets.
2011-12-06 22:14:50 +08:00
|
|
|
};
|
|
|
|
|
2014-07-15 19:18:35 +08:00
|
|
|
const struct regset s390_tdb_regset = {
|
2013-09-13 22:17:31 +08:00
|
|
|
s390_regmap_tdb,
|
|
|
|
s390_supply_tdb_regset,
|
2014-07-15 19:18:35 +08:00
|
|
|
regcache_collect_regset
|
2013-09-13 22:17:31 +08:00
|
|
|
};
|
|
|
|
|
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 supported core file register note sections. */
|
|
|
|
|
|
|
|
static void
|
|
|
|
s390_iterate_over_regset_sections (struct gdbarch *gdbarch,
|
|
|
|
iterate_over_regset_sections_cb *cb,
|
|
|
|
void *cb_data,
|
|
|
|
const struct regcache *regcache)
|
|
|
|
{
|
|
|
|
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
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
|
|
|
const int gregset_size = (tdep->abi == ABI_LINUX_S390 ?
|
|
|
|
s390_sizeof_gregset : s390x_sizeof_gregset);
|
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
|
|
|
|
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
|
|
|
cb (".reg", gregset_size, &s390_gregset, NULL, cb_data);
|
|
|
|
cb (".reg2", s390_sizeof_fpregset, &s390_fpregset, NULL, 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
|
|
|
|
|
|
|
if (tdep->abi == ABI_LINUX_S390 && tdep->gpr_full_regnum != -1)
|
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
|
|
|
cb (".reg-s390-high-gprs", 16 * 4, &s390_upper_regset,
|
|
|
|
"s390 GPR upper halves", 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
|
|
|
|
|
|
|
if (tdep->have_linux_v1)
|
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
|
|
|
cb (".reg-s390-last-break", 8,
|
|
|
|
(gdbarch_ptr_bit (gdbarch) == 32
|
|
|
|
? &s390_last_break_regset : &s390x_last_break_regset),
|
|
|
|
"s930 last-break address", 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
|
|
|
|
|
|
|
if (tdep->have_linux_v2)
|
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
|
|
|
cb (".reg-s390-system-call", 4, &s390_system_call_regset,
|
|
|
|
"s390 system-call", 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
|
|
|
|
|
|
|
/* If regcache is set, we are in "write" (gcore) mode. In this
|
|
|
|
case, don't iterate over the TDB unless its registers are
|
|
|
|
available. */
|
|
|
|
if (tdep->have_tdb
|
|
|
|
&& (regcache == NULL
|
|
|
|
|| REG_VALID == regcache_register_status (regcache,
|
|
|
|
S390_TDB_DWORD0_REGNUM)))
|
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
|
|
|
cb (".reg-s390-tdb", s390_sizeof_tdbregset, &s390_tdb_regset,
|
|
|
|
"s390 TDB", 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
|
|
|
}
|
|
|
|
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
static const struct target_desc *
|
|
|
|
s390_core_read_description (struct gdbarch *gdbarch,
|
|
|
|
struct target_ops *target, bfd *abfd)
|
|
|
|
{
|
|
|
|
asection *high_gprs = bfd_get_section_by_name (abfd, ".reg-s390-high-gprs");
|
ChangeLog:
* s390-tdep.h (S390_ORIG_R2_REGNUM): Define.
(S390_LAST_BREAK_REGNUM): Likewise.
(S390_SYSTEM_CALL_REGNUM): Likewise.
(S390_NUM_REGS): Update.
(s390_regmap_last_break): Add declaration.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(tdesc_s390_linux32v1): Add declaration.
(tdesc_s390_linux32v2): Likewise.
(tdesc_s390_linux64v1): Likewise.
(tdesc_s390_linux64v2): Likewise.
(tdesc_s390x_linux64v1): Likewise.
(tdesc_s390x_linux64v2): Likewise.
* s390-tdep.c: Include new target description files
"features/s390-linux32v1.c", "features/s390-linux32v2.c",
"features/s390-linux64v1.c", "features/s390-linux64v2.c",
"features/s390x-linux64v1.c", and "features/s390x-linux64v2.c".
(s390_cannot_store_register): New function.
(s390_write_pc): Likewise.
(s390_dwarf_regmap): Add fields for new registers.
(s390_regmap_gregset): Likewise.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): Likewise.
(s390_regmap_last_break): New variable.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(s390_last_break_regset): Likewise.
(s390x_last_break_regset): Likewise.
(s390_system_call_regset): Likewise.
(s390_upper_regset_sections): Rename to ...
(s390_linux64_regset_sections): ... this.
(s390_linux32_regset_sections): New variable.
(s390x_linux64_regset_sections): Likewise.
(s390_linux32v1_regset_sections): Likewise.
(s390_linux32v2_regset_sections): Likewise.
(s390_linux64v1_regset_sections): Likewise.
(s390_linux64v2_regset_sections): Likewise.
(s390x_linux64v1_regset_sections): Likewise.
(s390x_linux64v2_regset_sections): Likewise.
(s390_regset_from_core_section): Handle .reg-s390-last-break and
.reg-s390-system-call core file sections.
(s390_core_read_description): Check for presence of
.reg-s390-last-break and .reg-s390-system-call core file
sections and return appropriate target description.
(s390_gdbarch_init): Detect Linux-specific registers "orig_r2",
"last_break" and "system_call" in target description. Install
appropriate gdbarch_core_regset_sections array.
Call set_gdbarch_cannot_store_register and set_gdbarch_write_pc.
(_initialize_s390_tdep): Initialize additional target descriptions.
* s390-nat.c: Include "elf/common.h".
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(have_regset_last_break): New static variable.
(have_regset_system_call): Likewise.
(s390_native_supply): Handle S390_ORIG_R2_REGNUM.
(s390_native_collect): Likewise.
(fetch_regset, store_regset, check_regset): New functions.
(s390_linux_fetch_inferior_registers): Handle S390_LAST_BREAK_REGNUM
and S390_SYSTEM_CALL_REGNUM.
(s390_linux_store_inferior_registers): Likewise.
(s390_read_description): Check for presence of NT_S390_LAST_BREAK
and NT_S390_SYSTEM_CALL regsets and use appropriate description.
* features/Makefile (WHICH): Add s390-linux32v1, s390-linux64v1,
s390x-linux64v1, s390-linux32v2, s390-linux64v2, and s390x-linux64v2.
(s390-linux32v1-expedite): Define.
(s390-linux32v2-expedite): Likewise.
(s390-linux64v1-expedite): Likewise.
(s390-linux64v2-expedite): Likewise.
(s390x-linux64v1-expedite): Likewise.
(s390x-linux64v2-expedite): Likewise.
* features/s390-linux32.xml: Add orig_r2 register.
* features/s390-linux64.xml: Likewise.
* features/s390x-linux64.xml: Likewise.
* features/s390-linux32v1.xml: New file.
* features/s390-linux32v2.xml: Likewise.
* features/s390-linux64v1.xml: Likewise.
* features/s390-linux64v2.xml: Likewise.
* features/s390x-linux64v1.xml: Likewise.
* features/s390x-linux64v2.xml: Likewise.
* features/s390-linux32.c: Regenerate.
* features/s390-linux64.c: Likewise.
* features/s390x-linux64.c: Likewise.
* features/s390-linux32v1.c: New generated file.
* features/s390-linux32v2.c: Likewise.
* features/s390-linux64v1.c: Likewise.
* features/s390-linux64v2.c: Likewise.
* features/s390x-linux64v1.c: Likewise.
* features/s390x-linux64v2.c: Likewise.
* regformats/s390-linux32.dat: Regenerate.
* regformats/s390-linux64.dat: Regenerate.
* regformats/s390x-linux64.dat: Regenerate.
* regformats/s390-linux32v1.dat: New generated file.
* regformats/s390-linux32v2.dat: Likewise.
* regformats/s390-linux64v1.dat: Likewise.
* regformats/s390-linux64v2.dat: Likewise.
* regformats/s390x-linux64v1.dat: Likewise.
* regformats/s390x-linux64v2.dat: Likewise.
gdbserver/ChangeLog:
* Makefile.in (s390-linux32v1.o, s390-linux32v1.c): New rules.
(s390-linux32v2.o, s390-linux32v2.c): Likewise.
(s390-linux64v1.o, s390-linux64v1.c): Likewise.
(s390-linux64v2.o, s390-linux64v2.c): Likewise.
(s390x-linux64v1.o, s390x-linux64v1.c): Likewise.
(s390x-linux64v2.o, s390x-linux64v2.c): Likewise.
* configure.srv [s390*-*-linux*] (srv_regobj): Add new objects.
(srv_xmlfiles): Add new XML files.
* linux-s390-low.c: Include "elf/common.h", <sys/ptrace.h>,
and <sys/uio.h>.
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(init_registers_s390_linux32v1): Add prototype.
(init_registers_s390_linux32v2): Likewise.
(init_registers_s390_linux64v1): Likewise.
(init_registers_s390_linux64v2): Likewise.
(init_registers_s390x_linux64v1): Likewise.
(init_registers_s390x_linux64v2): Likewise.
(s390_num_regs): Increment to 52.
(s390_regmap): Add orig_r2 register.
(s390_num_regs_3264): Increment to 68.
(s390_regmap_3264): Add orig_r2 register.
(s390_collect_ptrace_register): Handle orig_r2 register.
(s390_supply_ptrace_register): Likewise.
(s390_fill_last_break): New function.
(s390_store_last_break): Likewise.
(s390_fill_system_call): New function.
(s390_store_system_call): Likewise.
(target_regsets): Handle NT_S390_LAST_BREAK and NT_S390_SYSTEM_CALL
register sets.
(s390_check_regset): New function.
(s390_arch_setup): Check for presence of NT_S390_LAST_BREAK and
NT_S390_SYSTEM_CALL regsets and use appropriate description.
Update target_regsets for available register sets.
testsuite/ChangeLog:
* gdb.base/callfuncs.exp (fetch_all_registers): Filter out read-only
last_break register on s390*-*-* targets.
2011-12-06 22:14:50 +08:00
|
|
|
asection *v1 = bfd_get_section_by_name (abfd, ".reg-s390-last-break");
|
|
|
|
asection *v2 = bfd_get_section_by_name (abfd, ".reg-s390-system-call");
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
asection *section = bfd_get_section_by_name (abfd, ".reg");
|
2013-09-16 19:28:53 +08:00
|
|
|
CORE_ADDR hwcap = 0;
|
2013-09-13 22:17:31 +08:00
|
|
|
|
|
|
|
target_auxv_search (target, AT_HWCAP, &hwcap);
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
if (!section)
|
|
|
|
return NULL;
|
|
|
|
|
|
|
|
switch (bfd_section_size (abfd, section))
|
|
|
|
{
|
|
|
|
case s390_sizeof_gregset:
|
ChangeLog:
* s390-tdep.h (S390_ORIG_R2_REGNUM): Define.
(S390_LAST_BREAK_REGNUM): Likewise.
(S390_SYSTEM_CALL_REGNUM): Likewise.
(S390_NUM_REGS): Update.
(s390_regmap_last_break): Add declaration.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(tdesc_s390_linux32v1): Add declaration.
(tdesc_s390_linux32v2): Likewise.
(tdesc_s390_linux64v1): Likewise.
(tdesc_s390_linux64v2): Likewise.
(tdesc_s390x_linux64v1): Likewise.
(tdesc_s390x_linux64v2): Likewise.
* s390-tdep.c: Include new target description files
"features/s390-linux32v1.c", "features/s390-linux32v2.c",
"features/s390-linux64v1.c", "features/s390-linux64v2.c",
"features/s390x-linux64v1.c", and "features/s390x-linux64v2.c".
(s390_cannot_store_register): New function.
(s390_write_pc): Likewise.
(s390_dwarf_regmap): Add fields for new registers.
(s390_regmap_gregset): Likewise.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): Likewise.
(s390_regmap_last_break): New variable.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(s390_last_break_regset): Likewise.
(s390x_last_break_regset): Likewise.
(s390_system_call_regset): Likewise.
(s390_upper_regset_sections): Rename to ...
(s390_linux64_regset_sections): ... this.
(s390_linux32_regset_sections): New variable.
(s390x_linux64_regset_sections): Likewise.
(s390_linux32v1_regset_sections): Likewise.
(s390_linux32v2_regset_sections): Likewise.
(s390_linux64v1_regset_sections): Likewise.
(s390_linux64v2_regset_sections): Likewise.
(s390x_linux64v1_regset_sections): Likewise.
(s390x_linux64v2_regset_sections): Likewise.
(s390_regset_from_core_section): Handle .reg-s390-last-break and
.reg-s390-system-call core file sections.
(s390_core_read_description): Check for presence of
.reg-s390-last-break and .reg-s390-system-call core file
sections and return appropriate target description.
(s390_gdbarch_init): Detect Linux-specific registers "orig_r2",
"last_break" and "system_call" in target description. Install
appropriate gdbarch_core_regset_sections array.
Call set_gdbarch_cannot_store_register and set_gdbarch_write_pc.
(_initialize_s390_tdep): Initialize additional target descriptions.
* s390-nat.c: Include "elf/common.h".
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(have_regset_last_break): New static variable.
(have_regset_system_call): Likewise.
(s390_native_supply): Handle S390_ORIG_R2_REGNUM.
(s390_native_collect): Likewise.
(fetch_regset, store_regset, check_regset): New functions.
(s390_linux_fetch_inferior_registers): Handle S390_LAST_BREAK_REGNUM
and S390_SYSTEM_CALL_REGNUM.
(s390_linux_store_inferior_registers): Likewise.
(s390_read_description): Check for presence of NT_S390_LAST_BREAK
and NT_S390_SYSTEM_CALL regsets and use appropriate description.
* features/Makefile (WHICH): Add s390-linux32v1, s390-linux64v1,
s390x-linux64v1, s390-linux32v2, s390-linux64v2, and s390x-linux64v2.
(s390-linux32v1-expedite): Define.
(s390-linux32v2-expedite): Likewise.
(s390-linux64v1-expedite): Likewise.
(s390-linux64v2-expedite): Likewise.
(s390x-linux64v1-expedite): Likewise.
(s390x-linux64v2-expedite): Likewise.
* features/s390-linux32.xml: Add orig_r2 register.
* features/s390-linux64.xml: Likewise.
* features/s390x-linux64.xml: Likewise.
* features/s390-linux32v1.xml: New file.
* features/s390-linux32v2.xml: Likewise.
* features/s390-linux64v1.xml: Likewise.
* features/s390-linux64v2.xml: Likewise.
* features/s390x-linux64v1.xml: Likewise.
* features/s390x-linux64v2.xml: Likewise.
* features/s390-linux32.c: Regenerate.
* features/s390-linux64.c: Likewise.
* features/s390x-linux64.c: Likewise.
* features/s390-linux32v1.c: New generated file.
* features/s390-linux32v2.c: Likewise.
* features/s390-linux64v1.c: Likewise.
* features/s390-linux64v2.c: Likewise.
* features/s390x-linux64v1.c: Likewise.
* features/s390x-linux64v2.c: Likewise.
* regformats/s390-linux32.dat: Regenerate.
* regformats/s390-linux64.dat: Regenerate.
* regformats/s390x-linux64.dat: Regenerate.
* regformats/s390-linux32v1.dat: New generated file.
* regformats/s390-linux32v2.dat: Likewise.
* regformats/s390-linux64v1.dat: Likewise.
* regformats/s390-linux64v2.dat: Likewise.
* regformats/s390x-linux64v1.dat: Likewise.
* regformats/s390x-linux64v2.dat: Likewise.
gdbserver/ChangeLog:
* Makefile.in (s390-linux32v1.o, s390-linux32v1.c): New rules.
(s390-linux32v2.o, s390-linux32v2.c): Likewise.
(s390-linux64v1.o, s390-linux64v1.c): Likewise.
(s390-linux64v2.o, s390-linux64v2.c): Likewise.
(s390x-linux64v1.o, s390x-linux64v1.c): Likewise.
(s390x-linux64v2.o, s390x-linux64v2.c): Likewise.
* configure.srv [s390*-*-linux*] (srv_regobj): Add new objects.
(srv_xmlfiles): Add new XML files.
* linux-s390-low.c: Include "elf/common.h", <sys/ptrace.h>,
and <sys/uio.h>.
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(init_registers_s390_linux32v1): Add prototype.
(init_registers_s390_linux32v2): Likewise.
(init_registers_s390_linux64v1): Likewise.
(init_registers_s390_linux64v2): Likewise.
(init_registers_s390x_linux64v1): Likewise.
(init_registers_s390x_linux64v2): Likewise.
(s390_num_regs): Increment to 52.
(s390_regmap): Add orig_r2 register.
(s390_num_regs_3264): Increment to 68.
(s390_regmap_3264): Add orig_r2 register.
(s390_collect_ptrace_register): Handle orig_r2 register.
(s390_supply_ptrace_register): Likewise.
(s390_fill_last_break): New function.
(s390_store_last_break): Likewise.
(s390_fill_system_call): New function.
(s390_store_system_call): Likewise.
(target_regsets): Handle NT_S390_LAST_BREAK and NT_S390_SYSTEM_CALL
register sets.
(s390_check_regset): New function.
(s390_arch_setup): Check for presence of NT_S390_LAST_BREAK and
NT_S390_SYSTEM_CALL regsets and use appropriate description.
Update target_regsets for available register sets.
testsuite/ChangeLog:
* gdb.base/callfuncs.exp (fetch_all_registers): Filter out read-only
last_break register on s390*-*-* targets.
2011-12-06 22:14:50 +08:00
|
|
|
if (high_gprs)
|
2013-09-13 22:17:31 +08:00
|
|
|
return ((hwcap & HWCAP_S390_TE) ? tdesc_s390_te_linux64 :
|
|
|
|
v2? tdesc_s390_linux64v2 :
|
ChangeLog:
* s390-tdep.h (S390_ORIG_R2_REGNUM): Define.
(S390_LAST_BREAK_REGNUM): Likewise.
(S390_SYSTEM_CALL_REGNUM): Likewise.
(S390_NUM_REGS): Update.
(s390_regmap_last_break): Add declaration.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(tdesc_s390_linux32v1): Add declaration.
(tdesc_s390_linux32v2): Likewise.
(tdesc_s390_linux64v1): Likewise.
(tdesc_s390_linux64v2): Likewise.
(tdesc_s390x_linux64v1): Likewise.
(tdesc_s390x_linux64v2): Likewise.
* s390-tdep.c: Include new target description files
"features/s390-linux32v1.c", "features/s390-linux32v2.c",
"features/s390-linux64v1.c", "features/s390-linux64v2.c",
"features/s390x-linux64v1.c", and "features/s390x-linux64v2.c".
(s390_cannot_store_register): New function.
(s390_write_pc): Likewise.
(s390_dwarf_regmap): Add fields for new registers.
(s390_regmap_gregset): Likewise.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): Likewise.
(s390_regmap_last_break): New variable.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(s390_last_break_regset): Likewise.
(s390x_last_break_regset): Likewise.
(s390_system_call_regset): Likewise.
(s390_upper_regset_sections): Rename to ...
(s390_linux64_regset_sections): ... this.
(s390_linux32_regset_sections): New variable.
(s390x_linux64_regset_sections): Likewise.
(s390_linux32v1_regset_sections): Likewise.
(s390_linux32v2_regset_sections): Likewise.
(s390_linux64v1_regset_sections): Likewise.
(s390_linux64v2_regset_sections): Likewise.
(s390x_linux64v1_regset_sections): Likewise.
(s390x_linux64v2_regset_sections): Likewise.
(s390_regset_from_core_section): Handle .reg-s390-last-break and
.reg-s390-system-call core file sections.
(s390_core_read_description): Check for presence of
.reg-s390-last-break and .reg-s390-system-call core file
sections and return appropriate target description.
(s390_gdbarch_init): Detect Linux-specific registers "orig_r2",
"last_break" and "system_call" in target description. Install
appropriate gdbarch_core_regset_sections array.
Call set_gdbarch_cannot_store_register and set_gdbarch_write_pc.
(_initialize_s390_tdep): Initialize additional target descriptions.
* s390-nat.c: Include "elf/common.h".
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(have_regset_last_break): New static variable.
(have_regset_system_call): Likewise.
(s390_native_supply): Handle S390_ORIG_R2_REGNUM.
(s390_native_collect): Likewise.
(fetch_regset, store_regset, check_regset): New functions.
(s390_linux_fetch_inferior_registers): Handle S390_LAST_BREAK_REGNUM
and S390_SYSTEM_CALL_REGNUM.
(s390_linux_store_inferior_registers): Likewise.
(s390_read_description): Check for presence of NT_S390_LAST_BREAK
and NT_S390_SYSTEM_CALL regsets and use appropriate description.
* features/Makefile (WHICH): Add s390-linux32v1, s390-linux64v1,
s390x-linux64v1, s390-linux32v2, s390-linux64v2, and s390x-linux64v2.
(s390-linux32v1-expedite): Define.
(s390-linux32v2-expedite): Likewise.
(s390-linux64v1-expedite): Likewise.
(s390-linux64v2-expedite): Likewise.
(s390x-linux64v1-expedite): Likewise.
(s390x-linux64v2-expedite): Likewise.
* features/s390-linux32.xml: Add orig_r2 register.
* features/s390-linux64.xml: Likewise.
* features/s390x-linux64.xml: Likewise.
* features/s390-linux32v1.xml: New file.
* features/s390-linux32v2.xml: Likewise.
* features/s390-linux64v1.xml: Likewise.
* features/s390-linux64v2.xml: Likewise.
* features/s390x-linux64v1.xml: Likewise.
* features/s390x-linux64v2.xml: Likewise.
* features/s390-linux32.c: Regenerate.
* features/s390-linux64.c: Likewise.
* features/s390x-linux64.c: Likewise.
* features/s390-linux32v1.c: New generated file.
* features/s390-linux32v2.c: Likewise.
* features/s390-linux64v1.c: Likewise.
* features/s390-linux64v2.c: Likewise.
* features/s390x-linux64v1.c: Likewise.
* features/s390x-linux64v2.c: Likewise.
* regformats/s390-linux32.dat: Regenerate.
* regformats/s390-linux64.dat: Regenerate.
* regformats/s390x-linux64.dat: Regenerate.
* regformats/s390-linux32v1.dat: New generated file.
* regformats/s390-linux32v2.dat: Likewise.
* regformats/s390-linux64v1.dat: Likewise.
* regformats/s390-linux64v2.dat: Likewise.
* regformats/s390x-linux64v1.dat: Likewise.
* regformats/s390x-linux64v2.dat: Likewise.
gdbserver/ChangeLog:
* Makefile.in (s390-linux32v1.o, s390-linux32v1.c): New rules.
(s390-linux32v2.o, s390-linux32v2.c): Likewise.
(s390-linux64v1.o, s390-linux64v1.c): Likewise.
(s390-linux64v2.o, s390-linux64v2.c): Likewise.
(s390x-linux64v1.o, s390x-linux64v1.c): Likewise.
(s390x-linux64v2.o, s390x-linux64v2.c): Likewise.
* configure.srv [s390*-*-linux*] (srv_regobj): Add new objects.
(srv_xmlfiles): Add new XML files.
* linux-s390-low.c: Include "elf/common.h", <sys/ptrace.h>,
and <sys/uio.h>.
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(init_registers_s390_linux32v1): Add prototype.
(init_registers_s390_linux32v2): Likewise.
(init_registers_s390_linux64v1): Likewise.
(init_registers_s390_linux64v2): Likewise.
(init_registers_s390x_linux64v1): Likewise.
(init_registers_s390x_linux64v2): Likewise.
(s390_num_regs): Increment to 52.
(s390_regmap): Add orig_r2 register.
(s390_num_regs_3264): Increment to 68.
(s390_regmap_3264): Add orig_r2 register.
(s390_collect_ptrace_register): Handle orig_r2 register.
(s390_supply_ptrace_register): Likewise.
(s390_fill_last_break): New function.
(s390_store_last_break): Likewise.
(s390_fill_system_call): New function.
(s390_store_system_call): Likewise.
(target_regsets): Handle NT_S390_LAST_BREAK and NT_S390_SYSTEM_CALL
register sets.
(s390_check_regset): New function.
(s390_arch_setup): Check for presence of NT_S390_LAST_BREAK and
NT_S390_SYSTEM_CALL regsets and use appropriate description.
Update target_regsets for available register sets.
testsuite/ChangeLog:
* gdb.base/callfuncs.exp (fetch_all_registers): Filter out read-only
last_break register on s390*-*-* targets.
2011-12-06 22:14:50 +08:00
|
|
|
v1? tdesc_s390_linux64v1 : tdesc_s390_linux64);
|
|
|
|
else
|
|
|
|
return (v2? tdesc_s390_linux32v2 :
|
|
|
|
v1? tdesc_s390_linux32v1 : tdesc_s390_linux32);
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
|
|
|
|
case s390x_sizeof_gregset:
|
2013-09-13 22:17:31 +08:00
|
|
|
return ((hwcap & HWCAP_S390_TE) ? tdesc_s390x_te_linux64 :
|
|
|
|
v2? tdesc_s390x_linux64v2 :
|
ChangeLog:
* s390-tdep.h (S390_ORIG_R2_REGNUM): Define.
(S390_LAST_BREAK_REGNUM): Likewise.
(S390_SYSTEM_CALL_REGNUM): Likewise.
(S390_NUM_REGS): Update.
(s390_regmap_last_break): Add declaration.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(tdesc_s390_linux32v1): Add declaration.
(tdesc_s390_linux32v2): Likewise.
(tdesc_s390_linux64v1): Likewise.
(tdesc_s390_linux64v2): Likewise.
(tdesc_s390x_linux64v1): Likewise.
(tdesc_s390x_linux64v2): Likewise.
* s390-tdep.c: Include new target description files
"features/s390-linux32v1.c", "features/s390-linux32v2.c",
"features/s390-linux64v1.c", "features/s390-linux64v2.c",
"features/s390x-linux64v1.c", and "features/s390x-linux64v2.c".
(s390_cannot_store_register): New function.
(s390_write_pc): Likewise.
(s390_dwarf_regmap): Add fields for new registers.
(s390_regmap_gregset): Likewise.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): Likewise.
(s390_regmap_last_break): New variable.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(s390_last_break_regset): Likewise.
(s390x_last_break_regset): Likewise.
(s390_system_call_regset): Likewise.
(s390_upper_regset_sections): Rename to ...
(s390_linux64_regset_sections): ... this.
(s390_linux32_regset_sections): New variable.
(s390x_linux64_regset_sections): Likewise.
(s390_linux32v1_regset_sections): Likewise.
(s390_linux32v2_regset_sections): Likewise.
(s390_linux64v1_regset_sections): Likewise.
(s390_linux64v2_regset_sections): Likewise.
(s390x_linux64v1_regset_sections): Likewise.
(s390x_linux64v2_regset_sections): Likewise.
(s390_regset_from_core_section): Handle .reg-s390-last-break and
.reg-s390-system-call core file sections.
(s390_core_read_description): Check for presence of
.reg-s390-last-break and .reg-s390-system-call core file
sections and return appropriate target description.
(s390_gdbarch_init): Detect Linux-specific registers "orig_r2",
"last_break" and "system_call" in target description. Install
appropriate gdbarch_core_regset_sections array.
Call set_gdbarch_cannot_store_register and set_gdbarch_write_pc.
(_initialize_s390_tdep): Initialize additional target descriptions.
* s390-nat.c: Include "elf/common.h".
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(have_regset_last_break): New static variable.
(have_regset_system_call): Likewise.
(s390_native_supply): Handle S390_ORIG_R2_REGNUM.
(s390_native_collect): Likewise.
(fetch_regset, store_regset, check_regset): New functions.
(s390_linux_fetch_inferior_registers): Handle S390_LAST_BREAK_REGNUM
and S390_SYSTEM_CALL_REGNUM.
(s390_linux_store_inferior_registers): Likewise.
(s390_read_description): Check for presence of NT_S390_LAST_BREAK
and NT_S390_SYSTEM_CALL regsets and use appropriate description.
* features/Makefile (WHICH): Add s390-linux32v1, s390-linux64v1,
s390x-linux64v1, s390-linux32v2, s390-linux64v2, and s390x-linux64v2.
(s390-linux32v1-expedite): Define.
(s390-linux32v2-expedite): Likewise.
(s390-linux64v1-expedite): Likewise.
(s390-linux64v2-expedite): Likewise.
(s390x-linux64v1-expedite): Likewise.
(s390x-linux64v2-expedite): Likewise.
* features/s390-linux32.xml: Add orig_r2 register.
* features/s390-linux64.xml: Likewise.
* features/s390x-linux64.xml: Likewise.
* features/s390-linux32v1.xml: New file.
* features/s390-linux32v2.xml: Likewise.
* features/s390-linux64v1.xml: Likewise.
* features/s390-linux64v2.xml: Likewise.
* features/s390x-linux64v1.xml: Likewise.
* features/s390x-linux64v2.xml: Likewise.
* features/s390-linux32.c: Regenerate.
* features/s390-linux64.c: Likewise.
* features/s390x-linux64.c: Likewise.
* features/s390-linux32v1.c: New generated file.
* features/s390-linux32v2.c: Likewise.
* features/s390-linux64v1.c: Likewise.
* features/s390-linux64v2.c: Likewise.
* features/s390x-linux64v1.c: Likewise.
* features/s390x-linux64v2.c: Likewise.
* regformats/s390-linux32.dat: Regenerate.
* regformats/s390-linux64.dat: Regenerate.
* regformats/s390x-linux64.dat: Regenerate.
* regformats/s390-linux32v1.dat: New generated file.
* regformats/s390-linux32v2.dat: Likewise.
* regformats/s390-linux64v1.dat: Likewise.
* regformats/s390-linux64v2.dat: Likewise.
* regformats/s390x-linux64v1.dat: Likewise.
* regformats/s390x-linux64v2.dat: Likewise.
gdbserver/ChangeLog:
* Makefile.in (s390-linux32v1.o, s390-linux32v1.c): New rules.
(s390-linux32v2.o, s390-linux32v2.c): Likewise.
(s390-linux64v1.o, s390-linux64v1.c): Likewise.
(s390-linux64v2.o, s390-linux64v2.c): Likewise.
(s390x-linux64v1.o, s390x-linux64v1.c): Likewise.
(s390x-linux64v2.o, s390x-linux64v2.c): Likewise.
* configure.srv [s390*-*-linux*] (srv_regobj): Add new objects.
(srv_xmlfiles): Add new XML files.
* linux-s390-low.c: Include "elf/common.h", <sys/ptrace.h>,
and <sys/uio.h>.
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(init_registers_s390_linux32v1): Add prototype.
(init_registers_s390_linux32v2): Likewise.
(init_registers_s390_linux64v1): Likewise.
(init_registers_s390_linux64v2): Likewise.
(init_registers_s390x_linux64v1): Likewise.
(init_registers_s390x_linux64v2): Likewise.
(s390_num_regs): Increment to 52.
(s390_regmap): Add orig_r2 register.
(s390_num_regs_3264): Increment to 68.
(s390_regmap_3264): Add orig_r2 register.
(s390_collect_ptrace_register): Handle orig_r2 register.
(s390_supply_ptrace_register): Likewise.
(s390_fill_last_break): New function.
(s390_store_last_break): Likewise.
(s390_fill_system_call): New function.
(s390_store_system_call): Likewise.
(target_regsets): Handle NT_S390_LAST_BREAK and NT_S390_SYSTEM_CALL
register sets.
(s390_check_regset): New function.
(s390_arch_setup): Check for presence of NT_S390_LAST_BREAK and
NT_S390_SYSTEM_CALL regsets and use appropriate description.
Update target_regsets for available register sets.
testsuite/ChangeLog:
* gdb.base/callfuncs.exp (fetch_all_registers): Filter out read-only
last_break register on s390*-*-* targets.
2011-12-06 22:14:50 +08:00
|
|
|
v1? tdesc_s390x_linux64v1 : tdesc_s390x_linux64);
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
|
|
|
|
default:
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
/* Decoding S/390 instructions. */
|
|
|
|
|
|
|
|
/* Named opcode values for the S/390 instructions we recognize. Some
|
|
|
|
instructions have their opcode split across two fields; those are the
|
|
|
|
op1_* and op2_* enums. */
|
|
|
|
enum
|
|
|
|
{
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
op1_lhi = 0xa7, op2_lhi = 0x08,
|
|
|
|
op1_lghi = 0xa7, op2_lghi = 0x09,
|
* s390-tdep.c (op1_lgfi, op2_lgfi, op1_agfi, op2_agfi,
op1_afi, op2_afi, op1_algfi, op2_algfi, op1_alfi, op2_alfi,
op1_slgfi, op2_slgfi, op1_slfi, op2_slfi): New opcode enums.
(s390_analyze_prologue): Recognize new z9-109 instructions.
2005-08-16 01:36:48 +08:00
|
|
|
op1_lgfi = 0xc0, op2_lgfi = 0x01,
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
op_lr = 0x18,
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
op_lgr = 0xb904,
|
|
|
|
op_l = 0x58,
|
|
|
|
op1_ly = 0xe3, op2_ly = 0x58,
|
|
|
|
op1_lg = 0xe3, op2_lg = 0x04,
|
|
|
|
op_lm = 0x98,
|
|
|
|
op1_lmy = 0xeb, op2_lmy = 0x98,
|
|
|
|
op1_lmg = 0xeb, op2_lmg = 0x04,
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
op_st = 0x50,
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
op1_sty = 0xe3, op2_sty = 0x50,
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
op1_stg = 0xe3, op2_stg = 0x24,
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
op_std = 0x60,
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
op_stm = 0x90,
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
op1_stmy = 0xeb, op2_stmy = 0x90,
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
op1_stmg = 0xeb, op2_stmg = 0x24,
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
op1_aghi = 0xa7, op2_aghi = 0x0b,
|
|
|
|
op1_ahi = 0xa7, op2_ahi = 0x0a,
|
* s390-tdep.c (op1_lgfi, op2_lgfi, op1_agfi, op2_agfi,
op1_afi, op2_afi, op1_algfi, op2_algfi, op1_alfi, op2_alfi,
op1_slgfi, op2_slgfi, op1_slfi, op2_slfi): New opcode enums.
(s390_analyze_prologue): Recognize new z9-109 instructions.
2005-08-16 01:36:48 +08:00
|
|
|
op1_agfi = 0xc2, op2_agfi = 0x08,
|
|
|
|
op1_afi = 0xc2, op2_afi = 0x09,
|
|
|
|
op1_algfi= 0xc2, op2_algfi= 0x0a,
|
|
|
|
op1_alfi = 0xc2, op2_alfi = 0x0b,
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
op_ar = 0x1a,
|
|
|
|
op_agr = 0xb908,
|
|
|
|
op_a = 0x5a,
|
|
|
|
op1_ay = 0xe3, op2_ay = 0x5a,
|
|
|
|
op1_ag = 0xe3, op2_ag = 0x08,
|
* s390-tdep.c (op1_lgfi, op2_lgfi, op1_agfi, op2_agfi,
op1_afi, op2_afi, op1_algfi, op2_algfi, op1_alfi, op2_alfi,
op1_slgfi, op2_slgfi, op1_slfi, op2_slfi): New opcode enums.
(s390_analyze_prologue): Recognize new z9-109 instructions.
2005-08-16 01:36:48 +08:00
|
|
|
op1_slgfi= 0xc2, op2_slgfi= 0x04,
|
|
|
|
op1_slfi = 0xc2, op2_slfi = 0x05,
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
op_sr = 0x1b,
|
|
|
|
op_sgr = 0xb909,
|
|
|
|
op_s = 0x5b,
|
|
|
|
op1_sy = 0xe3, op2_sy = 0x5b,
|
|
|
|
op1_sg = 0xe3, op2_sg = 0x09,
|
|
|
|
op_nr = 0x14,
|
|
|
|
op_ngr = 0xb980,
|
|
|
|
op_la = 0x41,
|
|
|
|
op1_lay = 0xe3, op2_lay = 0x71,
|
|
|
|
op1_larl = 0xc0, op2_larl = 0x00,
|
|
|
|
op_basr = 0x0d,
|
|
|
|
op_bas = 0x4d,
|
|
|
|
op_bcr = 0x07,
|
|
|
|
op_bc = 0x0d,
|
* s390-tdep.c (op_bctr, op_bctgr, op_bct, op1_bctg, op2_bctg,
op_bxh, op1_bxhg, op2_bxhg, op_bxle, op1_bxleg, op2_bxleg,
op1_brct, op2_brct, op1_brctg, op2_brctg, op_brxh, op1_brxhg,
op2_brxhg, op_brxle, op1_brxlg, op2_brxlg): New enum values.
(is_rsi, is_rie): New insn format decoder routines.
(s390_displaced_step_fixup): New function.
(s390_gdbarch_init): Install displaced stepping routines.
2009-09-28 04:47:42 +08:00
|
|
|
op_bctr = 0x06,
|
|
|
|
op_bctgr = 0xb946,
|
|
|
|
op_bct = 0x46,
|
|
|
|
op1_bctg = 0xe3, op2_bctg = 0x46,
|
|
|
|
op_bxh = 0x86,
|
|
|
|
op1_bxhg = 0xeb, op2_bxhg = 0x44,
|
|
|
|
op_bxle = 0x87,
|
|
|
|
op1_bxleg= 0xeb, op2_bxleg= 0x45,
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
op1_bras = 0xa7, op2_bras = 0x05,
|
|
|
|
op1_brasl= 0xc0, op2_brasl= 0x05,
|
|
|
|
op1_brc = 0xa7, op2_brc = 0x04,
|
|
|
|
op1_brcl = 0xc0, op2_brcl = 0x04,
|
* s390-tdep.c (op_bctr, op_bctgr, op_bct, op1_bctg, op2_bctg,
op_bxh, op1_bxhg, op2_bxhg, op_bxle, op1_bxleg, op2_bxleg,
op1_brct, op2_brct, op1_brctg, op2_brctg, op_brxh, op1_brxhg,
op2_brxhg, op_brxle, op1_brxlg, op2_brxlg): New enum values.
(is_rsi, is_rie): New insn format decoder routines.
(s390_displaced_step_fixup): New function.
(s390_gdbarch_init): Install displaced stepping routines.
2009-09-28 04:47:42 +08:00
|
|
|
op1_brct = 0xa7, op2_brct = 0x06,
|
|
|
|
op1_brctg= 0xa7, op2_brctg= 0x07,
|
|
|
|
op_brxh = 0x84,
|
|
|
|
op1_brxhg= 0xec, op2_brxhg= 0x44,
|
|
|
|
op_brxle = 0x85,
|
|
|
|
op1_brxlg= 0xec, op2_brxlg= 0x45,
|
2014-01-23 01:54:43 +08:00
|
|
|
op_svc = 0x0a,
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
/* Read a single instruction from address AT. */
|
|
|
|
|
|
|
|
#define S390_MAX_INSTR_SIZE 6
|
|
|
|
static int
|
|
|
|
s390_readinstruction (bfd_byte instr[], CORE_ADDR at)
|
|
|
|
{
|
|
|
|
static int s390_instrlen[] = { 2, 4, 4, 6 };
|
|
|
|
int instrlen;
|
|
|
|
|
* breakpoint.h (breakpoint_restore_shadows): New
declaration.
* breakpoint.c (breakpoint_restore_shadows): New.
(read_memory_nobpt): Delete.
* gdbcore.h (read_memory_nobpt): Delete declaration.
* target.c (memory_xfer_partial): Call
breakpoint_restore_shadows.
(restore_show_memory_breakpoints)
(make_show_memory_beakpoints_cleanup): New.
(show_memory_breakpoints): New.
* target.h (make_show_memory_beakpoints_cleanup): Declare.
* ppc-linux-tdep.c (ppc_linux_memory_remove_breakpoint):
Make sure we see memory breakpoints when checking if
breakpoint is still there.
* alpha-tdep.c, alphanbsd-tdep.c, frame.c, frv-tdep.c,
hppa-linux-tdep.c, hppa-tdep.c, i386-linux-nat.c, i386-tdep.c,
m68klinux-tdep.c, mips-tdep.c, mn10300-tdep.c, s390-tdep.c,
sparc-tdep.c: Use target_read_memory instead of read_memory_nobpt.
2008-03-13 20:22:14 +08:00
|
|
|
if (target_read_memory (at, &instr[0], 2))
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
return -1;
|
|
|
|
instrlen = s390_instrlen[instr[0] >> 6];
|
|
|
|
if (instrlen > 2)
|
|
|
|
{
|
* breakpoint.h (breakpoint_restore_shadows): New
declaration.
* breakpoint.c (breakpoint_restore_shadows): New.
(read_memory_nobpt): Delete.
* gdbcore.h (read_memory_nobpt): Delete declaration.
* target.c (memory_xfer_partial): Call
breakpoint_restore_shadows.
(restore_show_memory_breakpoints)
(make_show_memory_beakpoints_cleanup): New.
(show_memory_breakpoints): New.
* target.h (make_show_memory_beakpoints_cleanup): Declare.
* ppc-linux-tdep.c (ppc_linux_memory_remove_breakpoint):
Make sure we see memory breakpoints when checking if
breakpoint is still there.
* alpha-tdep.c, alphanbsd-tdep.c, frame.c, frv-tdep.c,
hppa-linux-tdep.c, hppa-tdep.c, i386-linux-nat.c, i386-tdep.c,
m68klinux-tdep.c, mips-tdep.c, mn10300-tdep.c, s390-tdep.c,
sparc-tdep.c: Use target_read_memory instead of read_memory_nobpt.
2008-03-13 20:22:14 +08:00
|
|
|
if (target_read_memory (at + 2, &instr[2], instrlen - 2))
|
2013-10-31 01:51:57 +08:00
|
|
|
return -1;
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
}
|
|
|
|
return instrlen;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
/* The functions below are for recognizing and decoding S/390
|
|
|
|
instructions of various formats. Each of them checks whether INSN
|
|
|
|
is an instruction of the given format, with the specified opcodes.
|
|
|
|
If it is, it sets the remaining arguments to the values of the
|
|
|
|
instruction's fields, and returns a non-zero value; otherwise, it
|
|
|
|
returns zero.
|
|
|
|
|
|
|
|
These functions' arguments appear in the order they appear in the
|
|
|
|
instruction, not in the machine-language form. So, opcodes always
|
|
|
|
come first, even though they're sometimes scattered around the
|
|
|
|
instructions. And displacements appear before base and extension
|
|
|
|
registers, as they do in the assembly syntax, not at the end, as
|
|
|
|
they do in the machine language. */
|
2003-06-11 21:16:30 +08:00
|
|
|
static int
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
is_ri (bfd_byte *insn, int op1, int op2, unsigned int *r1, int *i2)
|
|
|
|
{
|
|
|
|
if (insn[0] == op1 && (insn[1] & 0xf) == op2)
|
|
|
|
{
|
|
|
|
*r1 = (insn[1] >> 4) & 0xf;
|
|
|
|
/* i2 is a 16-bit signed quantity. */
|
|
|
|
*i2 = (((insn[2] << 8) | insn[3]) ^ 0x8000) - 0x8000;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
return 0;
|
|
|
|
}
|
2001-11-09 03:06:04 +08:00
|
|
|
|
2001-10-14 06:13:35 +08:00
|
|
|
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
static int
|
|
|
|
is_ril (bfd_byte *insn, int op1, int op2,
|
2013-10-31 01:51:57 +08:00
|
|
|
unsigned int *r1, int *i2)
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
{
|
|
|
|
if (insn[0] == op1 && (insn[1] & 0xf) == op2)
|
|
|
|
{
|
|
|
|
*r1 = (insn[1] >> 4) & 0xf;
|
|
|
|
/* i2 is a signed quantity. If the host 'int' is 32 bits long,
|
2013-10-31 01:51:57 +08:00
|
|
|
no sign extension is necessary, but we don't want to assume
|
|
|
|
that. */
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
*i2 = (((insn[2] << 24)
|
2013-10-31 01:51:57 +08:00
|
|
|
| (insn[3] << 16)
|
|
|
|
| (insn[4] << 8)
|
|
|
|
| (insn[5])) ^ 0x80000000) - 0x80000000;
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
is_rr (bfd_byte *insn, int op, unsigned int *r1, unsigned int *r2)
|
|
|
|
{
|
|
|
|
if (insn[0] == op)
|
|
|
|
{
|
|
|
|
*r1 = (insn[1] >> 4) & 0xf;
|
|
|
|
*r2 = insn[1] & 0xf;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
is_rre (bfd_byte *insn, int op, unsigned int *r1, unsigned int *r2)
|
|
|
|
{
|
|
|
|
if (((insn[0] << 8) | insn[1]) == op)
|
|
|
|
{
|
|
|
|
/* Yes, insn[3]. insn[2] is unused in RRE format. */
|
|
|
|
*r1 = (insn[3] >> 4) & 0xf;
|
|
|
|
*r2 = insn[3] & 0xf;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
is_rs (bfd_byte *insn, int op,
|
2013-04-19 23:22:47 +08:00
|
|
|
unsigned int *r1, unsigned int *r3, int *d2, unsigned int *b2)
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
{
|
|
|
|
if (insn[0] == op)
|
|
|
|
{
|
|
|
|
*r1 = (insn[1] >> 4) & 0xf;
|
|
|
|
*r3 = insn[1] & 0xf;
|
|
|
|
*b2 = (insn[2] >> 4) & 0xf;
|
|
|
|
*d2 = ((insn[2] & 0xf) << 8) | insn[3];
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static int
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
is_rsy (bfd_byte *insn, int op1, int op2,
|
2013-10-31 01:51:57 +08:00
|
|
|
unsigned int *r1, unsigned int *r3, int *d2, unsigned int *b2)
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
{
|
|
|
|
if (insn[0] == op1
|
|
|
|
&& insn[5] == op2)
|
|
|
|
{
|
|
|
|
*r1 = (insn[1] >> 4) & 0xf;
|
|
|
|
*r3 = insn[1] & 0xf;
|
|
|
|
*b2 = (insn[2] >> 4) & 0xf;
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
/* The 'long displacement' is a 20-bit signed integer. */
|
2013-10-31 01:51:57 +08:00
|
|
|
*d2 = ((((insn[2] & 0xf) << 8) | insn[3] | (insn[4] << 12))
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
^ 0x80000) - 0x80000;
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
* s390-tdep.c (op_bctr, op_bctgr, op_bct, op1_bctg, op2_bctg,
op_bxh, op1_bxhg, op2_bxhg, op_bxle, op1_bxleg, op2_bxleg,
op1_brct, op2_brct, op1_brctg, op2_brctg, op_brxh, op1_brxhg,
op2_brxhg, op_brxle, op1_brxlg, op2_brxlg): New enum values.
(is_rsi, is_rie): New insn format decoder routines.
(s390_displaced_step_fixup): New function.
(s390_gdbarch_init): Install displaced stepping routines.
2009-09-28 04:47:42 +08:00
|
|
|
static int
|
|
|
|
is_rsi (bfd_byte *insn, int op,
|
2013-10-31 01:51:57 +08:00
|
|
|
unsigned int *r1, unsigned int *r3, int *i2)
|
* s390-tdep.c (op_bctr, op_bctgr, op_bct, op1_bctg, op2_bctg,
op_bxh, op1_bxhg, op2_bxhg, op_bxle, op1_bxleg, op2_bxleg,
op1_brct, op2_brct, op1_brctg, op2_brctg, op_brxh, op1_brxhg,
op2_brxhg, op_brxle, op1_brxlg, op2_brxlg): New enum values.
(is_rsi, is_rie): New insn format decoder routines.
(s390_displaced_step_fixup): New function.
(s390_gdbarch_init): Install displaced stepping routines.
2009-09-28 04:47:42 +08:00
|
|
|
{
|
|
|
|
if (insn[0] == op)
|
|
|
|
{
|
|
|
|
*r1 = (insn[1] >> 4) & 0xf;
|
|
|
|
*r3 = insn[1] & 0xf;
|
|
|
|
/* i2 is a 16-bit signed quantity. */
|
|
|
|
*i2 = (((insn[2] << 8) | insn[3]) ^ 0x8000) - 0x8000;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static int
|
|
|
|
is_rie (bfd_byte *insn, int op1, int op2,
|
2013-10-31 01:51:57 +08:00
|
|
|
unsigned int *r1, unsigned int *r3, int *i2)
|
* s390-tdep.c (op_bctr, op_bctgr, op_bct, op1_bctg, op2_bctg,
op_bxh, op1_bxhg, op2_bxhg, op_bxle, op1_bxleg, op2_bxleg,
op1_brct, op2_brct, op1_brctg, op2_brctg, op_brxh, op1_brxhg,
op2_brxhg, op_brxle, op1_brxlg, op2_brxlg): New enum values.
(is_rsi, is_rie): New insn format decoder routines.
(s390_displaced_step_fixup): New function.
(s390_gdbarch_init): Install displaced stepping routines.
2009-09-28 04:47:42 +08:00
|
|
|
{
|
|
|
|
if (insn[0] == op1
|
|
|
|
&& insn[5] == op2)
|
|
|
|
{
|
|
|
|
*r1 = (insn[1] >> 4) & 0xf;
|
|
|
|
*r3 = insn[1] & 0xf;
|
|
|
|
/* i2 is a 16-bit signed quantity. */
|
|
|
|
*i2 = (((insn[2] << 8) | insn[3]) ^ 0x8000) - 0x8000;
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
static int
|
|
|
|
is_rx (bfd_byte *insn, int op,
|
2013-04-19 23:22:47 +08:00
|
|
|
unsigned int *r1, int *d2, unsigned int *x2, unsigned int *b2)
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
{
|
|
|
|
if (insn[0] == op)
|
|
|
|
{
|
|
|
|
*r1 = (insn[1] >> 4) & 0xf;
|
|
|
|
*x2 = insn[1] & 0xf;
|
|
|
|
*b2 = (insn[2] >> 4) & 0xf;
|
|
|
|
*d2 = ((insn[2] & 0xf) << 8) | insn[3];
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
static int
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
is_rxy (bfd_byte *insn, int op1, int op2,
|
2013-10-31 01:51:57 +08:00
|
|
|
unsigned int *r1, int *d2, unsigned int *x2, unsigned int *b2)
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
{
|
|
|
|
if (insn[0] == op1
|
|
|
|
&& insn[5] == op2)
|
|
|
|
{
|
|
|
|
*r1 = (insn[1] >> 4) & 0xf;
|
|
|
|
*x2 = insn[1] & 0xf;
|
|
|
|
*b2 = (insn[2] >> 4) & 0xf;
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
/* The 'long displacement' is a 20-bit signed integer. */
|
2013-10-31 01:51:57 +08:00
|
|
|
*d2 = ((((insn[2] & 0xf) << 8) | insn[3] | (insn[4] << 12))
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
^ 0x80000) - 0x80000;
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
* Makefile.in (s390-tdep.o): Add dependency on $(prologue_value_h).
* s390-tdep.c: Include "prologue-value.h".
(struct prologue_value): Remove.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register): Remove.
(compute_x_addr): Remove, replace by ...
(s390_addr): ... this new function.
(struct s390_prologue_data): Use pv_t instead of prologue_value.
(s390_store, s390_load): Likewise.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_analyze_prologue): Likewise. Also, simplify and combine
several conditional statements.
2006-04-09 08:26:08 +08:00
|
|
|
/* Prologue analysis. */
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
#define S390_NUM_GPRS 16
|
|
|
|
#define S390_NUM_FPRS 16
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
struct s390_prologue_data {
|
|
|
|
|
2006-04-09 09:21:15 +08:00
|
|
|
/* The stack. */
|
|
|
|
struct pv_area *stack;
|
|
|
|
|
* 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
|
|
|
/* The size and byte-order of a GPR or FPR. */
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
int gpr_size;
|
|
|
|
int fpr_size;
|
* 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
|
|
|
enum bfd_endian byte_order;
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
|
|
|
|
/* The general-purpose registers. */
|
* Makefile.in (s390-tdep.o): Add dependency on $(prologue_value_h).
* s390-tdep.c: Include "prologue-value.h".
(struct prologue_value): Remove.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register): Remove.
(compute_x_addr): Remove, replace by ...
(s390_addr): ... this new function.
(struct s390_prologue_data): Use pv_t instead of prologue_value.
(s390_store, s390_load): Likewise.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_analyze_prologue): Likewise. Also, simplify and combine
several conditional statements.
2006-04-09 08:26:08 +08:00
|
|
|
pv_t gpr[S390_NUM_GPRS];
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
|
|
|
|
/* The floating-point registers. */
|
* Makefile.in (s390-tdep.o): Add dependency on $(prologue_value_h).
* s390-tdep.c: Include "prologue-value.h".
(struct prologue_value): Remove.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register): Remove.
(compute_x_addr): Remove, replace by ...
(s390_addr): ... this new function.
(struct s390_prologue_data): Use pv_t instead of prologue_value.
(s390_store, s390_load): Likewise.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_analyze_prologue): Likewise. Also, simplify and combine
several conditional statements.
2006-04-09 08:26:08 +08:00
|
|
|
pv_t fpr[S390_NUM_FPRS];
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
|
2004-10-24 00:31:23 +08:00
|
|
|
/* The offset relative to the CFA where the incoming GPR N was saved
|
|
|
|
by the function prologue. 0 if not saved or unknown. */
|
|
|
|
int gpr_slot[S390_NUM_GPRS];
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
|
2004-10-24 00:31:23 +08:00
|
|
|
/* Likewise for FPRs. */
|
|
|
|
int fpr_slot[S390_NUM_FPRS];
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
|
2004-10-24 00:31:23 +08:00
|
|
|
/* Nonzero if the backchain was saved. This is assumed to be the
|
|
|
|
case when the incoming SP is saved at the current SP location. */
|
|
|
|
int back_chain_saved_p;
|
|
|
|
};
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
|
* Makefile.in (s390-tdep.o): Add dependency on $(prologue_value_h).
* s390-tdep.c: Include "prologue-value.h".
(struct prologue_value): Remove.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register): Remove.
(compute_x_addr): Remove, replace by ...
(s390_addr): ... this new function.
(struct s390_prologue_data): Use pv_t instead of prologue_value.
(s390_store, s390_load): Likewise.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_analyze_prologue): Likewise. Also, simplify and combine
several conditional statements.
2006-04-09 08:26:08 +08:00
|
|
|
/* Return the effective address for an X-style instruction, like:
|
|
|
|
|
2013-10-31 01:51:57 +08:00
|
|
|
L R1, D2(X2, B2)
|
* Makefile.in (s390-tdep.o): Add dependency on $(prologue_value_h).
* s390-tdep.c: Include "prologue-value.h".
(struct prologue_value): Remove.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register): Remove.
(compute_x_addr): Remove, replace by ...
(s390_addr): ... this new function.
(struct s390_prologue_data): Use pv_t instead of prologue_value.
(s390_store, s390_load): Likewise.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_analyze_prologue): Likewise. Also, simplify and combine
several conditional statements.
2006-04-09 08:26:08 +08:00
|
|
|
|
|
|
|
Here, X2 and B2 are registers, and D2 is a signed 20-bit
|
|
|
|
constant; the effective address is the sum of all three. If either
|
|
|
|
X2 or B2 are zero, then it doesn't contribute to the sum --- this
|
|
|
|
means that r0 can't be used as either X2 or B2. */
|
|
|
|
static pv_t
|
|
|
|
s390_addr (struct s390_prologue_data *data,
|
|
|
|
int d2, unsigned int x2, unsigned int b2)
|
|
|
|
{
|
|
|
|
pv_t result;
|
|
|
|
|
|
|
|
result = pv_constant (d2);
|
|
|
|
if (x2)
|
|
|
|
result = pv_add (result, data->gpr[x2]);
|
|
|
|
if (b2)
|
|
|
|
result = pv_add (result, data->gpr[b2]);
|
|
|
|
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Do a SIZE-byte store of VALUE to D2(X2,B2). */
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
static void
|
* Makefile.in (s390-tdep.o): Add dependency on $(prologue_value_h).
* s390-tdep.c: Include "prologue-value.h".
(struct prologue_value): Remove.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register): Remove.
(compute_x_addr): Remove, replace by ...
(s390_addr): ... this new function.
(struct s390_prologue_data): Use pv_t instead of prologue_value.
(s390_store, s390_load): Likewise.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_analyze_prologue): Likewise. Also, simplify and combine
several conditional statements.
2006-04-09 08:26:08 +08:00
|
|
|
s390_store (struct s390_prologue_data *data,
|
|
|
|
int d2, unsigned int x2, unsigned int b2, CORE_ADDR size,
|
|
|
|
pv_t value)
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
{
|
* Makefile.in (s390-tdep.o): Add dependency on $(prologue_value_h).
* s390-tdep.c: Include "prologue-value.h".
(struct prologue_value): Remove.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register): Remove.
(compute_x_addr): Remove, replace by ...
(s390_addr): ... this new function.
(struct s390_prologue_data): Use pv_t instead of prologue_value.
(s390_store, s390_load): Likewise.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_analyze_prologue): Likewise. Also, simplify and combine
several conditional statements.
2006-04-09 08:26:08 +08:00
|
|
|
pv_t addr = s390_addr (data, d2, x2, b2);
|
2006-04-09 09:21:15 +08:00
|
|
|
pv_t offset;
|
2004-10-24 00:31:23 +08:00
|
|
|
|
|
|
|
/* Check whether we are storing the backchain. */
|
* Makefile.in (s390-tdep.o): Add dependency on $(prologue_value_h).
* s390-tdep.c: Include "prologue-value.h".
(struct prologue_value): Remove.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register): Remove.
(compute_x_addr): Remove, replace by ...
(s390_addr): ... this new function.
(struct s390_prologue_data): Use pv_t instead of prologue_value.
(s390_store, s390_load): Likewise.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_analyze_prologue): Likewise. Also, simplify and combine
several conditional statements.
2006-04-09 08:26:08 +08:00
|
|
|
offset = pv_subtract (data->gpr[S390_SP_REGNUM - S390_R0_REGNUM], addr);
|
2004-10-24 00:31:23 +08:00
|
|
|
|
* Makefile.in (s390-tdep.o): Add dependency on $(prologue_value_h).
* s390-tdep.c: Include "prologue-value.h".
(struct prologue_value): Remove.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register): Remove.
(compute_x_addr): Remove, replace by ...
(s390_addr): ... this new function.
(struct s390_prologue_data): Use pv_t instead of prologue_value.
(s390_store, s390_load): Likewise.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_analyze_prologue): Likewise. Also, simplify and combine
several conditional statements.
2006-04-09 08:26:08 +08:00
|
|
|
if (pv_is_constant (offset) && offset.k == 0)
|
2004-10-24 00:31:23 +08:00
|
|
|
if (size == data->gpr_size
|
* Makefile.in (s390-tdep.o): Add dependency on $(prologue_value_h).
* s390-tdep.c: Include "prologue-value.h".
(struct prologue_value): Remove.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register): Remove.
(compute_x_addr): Remove, replace by ...
(s390_addr): ... this new function.
(struct s390_prologue_data): Use pv_t instead of prologue_value.
(s390_store, s390_load): Likewise.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_analyze_prologue): Likewise. Also, simplify and combine
several conditional statements.
2006-04-09 08:26:08 +08:00
|
|
|
&& pv_is_register_k (value, S390_SP_REGNUM, 0))
|
2004-10-24 00:31:23 +08:00
|
|
|
{
|
|
|
|
data->back_chain_saved_p = 1;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* Check whether we are storing a register into the stack. */
|
2006-04-09 09:21:15 +08:00
|
|
|
if (!pv_area_store_would_trash (data->stack, addr))
|
|
|
|
pv_area_store (data->stack, addr, size, value);
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
|
2004-10-24 00:31:23 +08:00
|
|
|
/* Note: If this is some store we cannot identify, you might think we
|
|
|
|
should forget our cached values, as any of those might have been hit.
|
|
|
|
|
|
|
|
However, we make the assumption that the register save areas are only
|
|
|
|
ever stored to once in any given function, and we do recognize these
|
|
|
|
stores. Thus every store we cannot recognize does not hit our data. */
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
}
|
|
|
|
|
* Makefile.in (s390-tdep.o): Add dependency on $(prologue_value_h).
* s390-tdep.c: Include "prologue-value.h".
(struct prologue_value): Remove.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register): Remove.
(compute_x_addr): Remove, replace by ...
(s390_addr): ... this new function.
(struct s390_prologue_data): Use pv_t instead of prologue_value.
(s390_store, s390_load): Likewise.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_analyze_prologue): Likewise. Also, simplify and combine
several conditional statements.
2006-04-09 08:26:08 +08:00
|
|
|
/* Do a SIZE-byte load from D2(X2,B2). */
|
|
|
|
static pv_t
|
|
|
|
s390_load (struct s390_prologue_data *data,
|
|
|
|
int d2, unsigned int x2, unsigned int b2, CORE_ADDR size)
|
2013-10-31 01:51:57 +08:00
|
|
|
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
{
|
* Makefile.in (s390-tdep.o): Add dependency on $(prologue_value_h).
* s390-tdep.c: Include "prologue-value.h".
(struct prologue_value): Remove.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register): Remove.
(compute_x_addr): Remove, replace by ...
(s390_addr): ... this new function.
(struct s390_prologue_data): Use pv_t instead of prologue_value.
(s390_store, s390_load): Likewise.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_analyze_prologue): Likewise. Also, simplify and combine
several conditional statements.
2006-04-09 08:26:08 +08:00
|
|
|
pv_t addr = s390_addr (data, d2, x2, b2);
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
/* If it's a load from an in-line constant pool, then we can
|
|
|
|
simulate that, under the assumption that the code isn't
|
|
|
|
going to change between the time the processor actually
|
|
|
|
executed it creating the current frame, and the time when
|
|
|
|
we're analyzing the code to unwind past that frame. */
|
* Makefile.in (s390-tdep.o): Add dependency on $(prologue_value_h).
* s390-tdep.c: Include "prologue-value.h".
(struct prologue_value): Remove.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register): Remove.
(compute_x_addr): Remove, replace by ...
(s390_addr): ... this new function.
(struct s390_prologue_data): Use pv_t instead of prologue_value.
(s390_store, s390_load): Likewise.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_analyze_prologue): Likewise. Also, simplify and combine
several conditional statements.
2006-04-09 08:26:08 +08:00
|
|
|
if (pv_is_constant (addr))
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
{
|
2009-05-23 07:49:14 +08:00
|
|
|
struct target_section *secp;
|
* Makefile.in (s390-tdep.o): Add dependency on $(prologue_value_h).
* s390-tdep.c: Include "prologue-value.h".
(struct prologue_value): Remove.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register): Remove.
(compute_x_addr): Remove, replace by ...
(s390_addr): ... this new function.
(struct s390_prologue_data): Use pv_t instead of prologue_value.
(s390_store, s390_load): Likewise.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_analyze_prologue): Likewise. Also, simplify and combine
several conditional statements.
2006-04-09 08:26:08 +08:00
|
|
|
secp = target_section_by_addr (¤t_target, addr.k);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
if (secp != NULL
|
2013-10-31 01:51:57 +08:00
|
|
|
&& (bfd_get_section_flags (secp->the_bfd_section->owner,
|
2013-07-17 13:28:04 +08:00
|
|
|
secp->the_bfd_section)
|
2013-10-31 01:51:57 +08:00
|
|
|
& SEC_READONLY))
|
|
|
|
return pv_constant (read_memory_integer (addr.k, size,
|
* 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
|
|
|
data->byte_order));
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
}
|
2001-12-05 08:20:37 +08:00
|
|
|
|
2004-10-24 00:31:23 +08:00
|
|
|
/* Check whether we are accessing one of our save slots. */
|
2006-04-09 09:21:15 +08:00
|
|
|
return pv_area_fetch (data->stack, addr, size);
|
|
|
|
}
|
2004-10-24 00:31:23 +08:00
|
|
|
|
2006-04-09 09:21:15 +08:00
|
|
|
/* Function for finding saved registers in a 'struct pv_area'; we pass
|
|
|
|
this to pv_area_scan.
|
2004-10-24 00:31:23 +08:00
|
|
|
|
2006-04-09 09:21:15 +08:00
|
|
|
If VALUE is a saved register, ADDR says it was saved at a constant
|
|
|
|
offset from the frame base, and SIZE indicates that the whole
|
|
|
|
register was saved, record its offset in the reg_offset table in
|
|
|
|
PROLOGUE_UNTYPED. */
|
|
|
|
static void
|
2011-01-12 05:53:25 +08:00
|
|
|
s390_check_for_saved (void *data_untyped, pv_t addr,
|
|
|
|
CORE_ADDR size, pv_t value)
|
2006-04-09 09:21:15 +08:00
|
|
|
{
|
|
|
|
struct s390_prologue_data *data = data_untyped;
|
|
|
|
int i, offset;
|
|
|
|
|
|
|
|
if (!pv_is_register (addr, S390_SP_REGNUM))
|
|
|
|
return;
|
|
|
|
|
|
|
|
offset = 16 * data->gpr_size + 32 - addr.k;
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
|
2006-04-09 09:21:15 +08:00
|
|
|
/* If we are storing the original value of a register, we want to
|
|
|
|
record the CFA offset. If the same register is stored multiple
|
|
|
|
times, the stack slot with the highest address counts. */
|
2013-10-31 01:51:57 +08:00
|
|
|
|
2006-04-09 09:21:15 +08:00
|
|
|
for (i = 0; i < S390_NUM_GPRS; i++)
|
|
|
|
if (size == data->gpr_size
|
|
|
|
&& pv_is_register_k (value, S390_R0_REGNUM + i, 0))
|
|
|
|
if (data->gpr_slot[i] == 0
|
|
|
|
|| data->gpr_slot[i] > offset)
|
|
|
|
{
|
|
|
|
data->gpr_slot[i] = offset;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
for (i = 0; i < S390_NUM_FPRS; i++)
|
|
|
|
if (size == data->fpr_size
|
|
|
|
&& pv_is_register_k (value, S390_F0_REGNUM + i, 0))
|
|
|
|
if (data->fpr_slot[i] == 0
|
|
|
|
|| data->fpr_slot[i] > offset)
|
|
|
|
{
|
|
|
|
data->fpr_slot[i] = offset;
|
|
|
|
return;
|
|
|
|
}
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
}
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
/* Analyze the prologue of the function starting at START_PC,
|
|
|
|
continuing at most until CURRENT_PC. Initialize DATA to
|
|
|
|
hold all information we find out about the state of the registers
|
|
|
|
and stack slots. Return the address of the instruction after
|
|
|
|
the last one that changed the SP, FP, or back chain; or zero
|
|
|
|
on error. */
|
|
|
|
static CORE_ADDR
|
|
|
|
s390_analyze_prologue (struct gdbarch *gdbarch,
|
|
|
|
CORE_ADDR start_pc,
|
|
|
|
CORE_ADDR current_pc,
|
|
|
|
struct s390_prologue_data *data)
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
{
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
int word_size = gdbarch_ptr_bit (gdbarch) / 8;
|
|
|
|
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
/* Our return value:
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
The address of the instruction after the last one that changed
|
2013-10-31 01:51:57 +08:00
|
|
|
the SP, FP, or back chain; zero if we got an error trying to
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
read memory. */
|
|
|
|
CORE_ADDR result = start_pc;
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
|
|
|
|
/* The current PC for our abstract interpretation. */
|
|
|
|
CORE_ADDR pc;
|
|
|
|
|
|
|
|
/* The address of the next instruction after that. */
|
|
|
|
CORE_ADDR next_pc;
|
2013-10-31 01:51:57 +08:00
|
|
|
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
/* Set up everything's initial value. */
|
|
|
|
{
|
|
|
|
int i;
|
|
|
|
|
2009-06-18 02:39:13 +08:00
|
|
|
data->stack = make_pv_area (S390_SP_REGNUM, gdbarch_addr_bit (gdbarch));
|
2006-04-09 09:21:15 +08:00
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
/* For the purpose of prologue tracking, we consider the GPR size to
|
|
|
|
be equal to the ABI word size, even if it is actually larger
|
|
|
|
(i.e. when running a 32-bit binary under a 64-bit kernel). */
|
|
|
|
data->gpr_size = word_size;
|
|
|
|
data->fpr_size = 8;
|
* 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
|
|
|
data->byte_order = gdbarch_byte_order (gdbarch);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
for (i = 0; i < S390_NUM_GPRS; i++)
|
* Makefile.in (s390-tdep.o): Add dependency on $(prologue_value_h).
* s390-tdep.c: Include "prologue-value.h".
(struct prologue_value): Remove.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register): Remove.
(compute_x_addr): Remove, replace by ...
(s390_addr): ... this new function.
(struct s390_prologue_data): Use pv_t instead of prologue_value.
(s390_store, s390_load): Likewise.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_analyze_prologue): Likewise. Also, simplify and combine
several conditional statements.
2006-04-09 08:26:08 +08:00
|
|
|
data->gpr[i] = pv_register (S390_R0_REGNUM + i, 0);
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
|
|
|
|
for (i = 0; i < S390_NUM_FPRS; i++)
|
* Makefile.in (s390-tdep.o): Add dependency on $(prologue_value_h).
* s390-tdep.c: Include "prologue-value.h".
(struct prologue_value): Remove.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register): Remove.
(compute_x_addr): Remove, replace by ...
(s390_addr): ... this new function.
(struct s390_prologue_data): Use pv_t instead of prologue_value.
(s390_store, s390_load): Likewise.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_analyze_prologue): Likewise. Also, simplify and combine
several conditional statements.
2006-04-09 08:26:08 +08:00
|
|
|
data->fpr[i] = pv_register (S390_F0_REGNUM + i, 0);
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
|
2004-10-24 00:31:23 +08:00
|
|
|
for (i = 0; i < S390_NUM_GPRS; i++)
|
|
|
|
data->gpr_slot[i] = 0;
|
|
|
|
|
|
|
|
for (i = 0; i < S390_NUM_FPRS; i++)
|
|
|
|
data->fpr_slot[i] = 0;
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
|
2004-10-24 00:31:23 +08:00
|
|
|
data->back_chain_saved_p = 0;
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
}
|
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
/* Start interpreting instructions, until we hit the frame's
|
|
|
|
current PC or the first branch instruction. */
|
|
|
|
for (pc = start_pc; pc > 0 && pc < current_pc; pc = next_pc)
|
2001-10-14 06:13:35 +08:00
|
|
|
{
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
bfd_byte insn[S390_MAX_INSTR_SIZE];
|
2003-08-28 11:39:20 +08:00
|
|
|
int insn_len = s390_readinstruction (insn, pc);
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
|
* Makefile.in (s390-tdep.o): Add dependency on $(prologue_value_h).
* s390-tdep.c: Include "prologue-value.h".
(struct prologue_value): Remove.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register): Remove.
(compute_x_addr): Remove, replace by ...
(s390_addr): ... this new function.
(struct s390_prologue_data): Use pv_t instead of prologue_value.
(s390_store, s390_load): Likewise.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_analyze_prologue): Likewise. Also, simplify and combine
several conditional statements.
2006-04-09 08:26:08 +08:00
|
|
|
bfd_byte dummy[S390_MAX_INSTR_SIZE] = { 0 };
|
|
|
|
bfd_byte *insn32 = word_size == 4 ? insn : dummy;
|
|
|
|
bfd_byte *insn64 = word_size == 8 ? insn : dummy;
|
|
|
|
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
/* Fields for various kinds of instructions. */
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
unsigned int b2, r1, r2, x2, r3;
|
|
|
|
int i2, d2;
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
|
2004-10-24 00:31:23 +08:00
|
|
|
/* The values of SP and FP before this instruction,
|
2013-10-31 01:51:57 +08:00
|
|
|
for detecting instructions that change them. */
|
* Makefile.in (s390-tdep.o): Add dependency on $(prologue_value_h).
* s390-tdep.c: Include "prologue-value.h".
(struct prologue_value): Remove.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register): Remove.
(compute_x_addr): Remove, replace by ...
(s390_addr): ... this new function.
(struct s390_prologue_data): Use pv_t instead of prologue_value.
(s390_store, s390_load): Likewise.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_analyze_prologue): Likewise. Also, simplify and combine
several conditional statements.
2006-04-09 08:26:08 +08:00
|
|
|
pv_t pre_insn_sp, pre_insn_fp;
|
2004-10-24 00:31:23 +08:00
|
|
|
/* Likewise for the flag whether the back chain was saved. */
|
|
|
|
int pre_insn_back_chain_saved_p;
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
|
|
|
|
/* If we got an error trying to read the instruction, report it. */
|
|
|
|
if (insn_len < 0)
|
2013-10-31 01:51:57 +08:00
|
|
|
{
|
|
|
|
result = 0;
|
|
|
|
break;
|
|
|
|
}
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
|
|
|
|
next_pc = pc + insn_len;
|
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
pre_insn_sp = data->gpr[S390_SP_REGNUM - S390_R0_REGNUM];
|
|
|
|
pre_insn_fp = data->gpr[S390_FRAME_REGNUM - S390_R0_REGNUM];
|
2004-10-24 00:31:23 +08:00
|
|
|
pre_insn_back_chain_saved_p = data->back_chain_saved_p;
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
|
|
|
|
|
* Makefile.in (s390-tdep.o): Add dependency on $(prologue_value_h).
* s390-tdep.c: Include "prologue-value.h".
(struct prologue_value): Remove.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register): Remove.
(compute_x_addr): Remove, replace by ...
(s390_addr): ... this new function.
(struct s390_prologue_data): Use pv_t instead of prologue_value.
(s390_store, s390_load): Likewise.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_analyze_prologue): Likewise. Also, simplify and combine
several conditional statements.
2006-04-09 08:26:08 +08:00
|
|
|
/* LHI r1, i2 --- load halfword immediate. */
|
|
|
|
/* LGHI r1, i2 --- load halfword immediate (64-bit version). */
|
|
|
|
/* LGFI r1, i2 --- load fullword immediate. */
|
|
|
|
if (is_ri (insn32, op1_lhi, op2_lhi, &r1, &i2)
|
2013-10-31 01:51:57 +08:00
|
|
|
|| is_ri (insn64, op1_lghi, op2_lghi, &r1, &i2)
|
|
|
|
|| is_ril (insn, op1_lgfi, op2_lgfi, &r1, &i2))
|
* Makefile.in (s390-tdep.o): Add dependency on $(prologue_value_h).
* s390-tdep.c: Include "prologue-value.h".
(struct prologue_value): Remove.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register): Remove.
(compute_x_addr): Remove, replace by ...
(s390_addr): ... this new function.
(struct s390_prologue_data): Use pv_t instead of prologue_value.
(s390_store, s390_load): Likewise.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_analyze_prologue): Likewise. Also, simplify and combine
several conditional statements.
2006-04-09 08:26:08 +08:00
|
|
|
data->gpr[r1] = pv_constant (i2);
|
|
|
|
|
|
|
|
/* LR r1, r2 --- load from register. */
|
|
|
|
/* LGR r1, r2 --- load from register (64-bit version). */
|
|
|
|
else if (is_rr (insn32, op_lr, &r1, &r2)
|
|
|
|
|| is_rre (insn64, op_lgr, &r1, &r2))
|
|
|
|
data->gpr[r1] = data->gpr[r2];
|
|
|
|
|
|
|
|
/* L r1, d2(x2, b2) --- load. */
|
|
|
|
/* LY r1, d2(x2, b2) --- load (long-displacement version). */
|
|
|
|
/* LG r1, d2(x2, b2) --- load (64-bit version). */
|
|
|
|
else if (is_rx (insn32, op_l, &r1, &d2, &x2, &b2)
|
|
|
|
|| is_rxy (insn32, op1_ly, op2_ly, &r1, &d2, &x2, &b2)
|
|
|
|
|| is_rxy (insn64, op1_lg, op2_lg, &r1, &d2, &x2, &b2))
|
|
|
|
data->gpr[r1] = s390_load (data, d2, x2, b2, data->gpr_size);
|
|
|
|
|
|
|
|
/* ST r1, d2(x2, b2) --- store. */
|
|
|
|
/* STY r1, d2(x2, b2) --- store (long-displacement version). */
|
|
|
|
/* STG r1, d2(x2, b2) --- store (64-bit version). */
|
|
|
|
else if (is_rx (insn32, op_st, &r1, &d2, &x2, &b2)
|
|
|
|
|| is_rxy (insn32, op1_sty, op2_sty, &r1, &d2, &x2, &b2)
|
|
|
|
|| is_rxy (insn64, op1_stg, op2_stg, &r1, &d2, &x2, &b2))
|
|
|
|
s390_store (data, d2, x2, b2, data->gpr_size, data->gpr[r1]);
|
|
|
|
|
|
|
|
/* STD r1, d2(x2,b2) --- store floating-point register. */
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
else if (is_rx (insn, op_std, &r1, &d2, &x2, &b2))
|
* Makefile.in (s390-tdep.o): Add dependency on $(prologue_value_h).
* s390-tdep.c: Include "prologue-value.h".
(struct prologue_value): Remove.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register): Remove.
(compute_x_addr): Remove, replace by ...
(s390_addr): ... this new function.
(struct s390_prologue_data): Use pv_t instead of prologue_value.
(s390_store, s390_load): Likewise.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_analyze_prologue): Likewise. Also, simplify and combine
several conditional statements.
2006-04-09 08:26:08 +08:00
|
|
|
s390_store (data, d2, x2, b2, data->fpr_size, data->fpr[r1]);
|
|
|
|
|
|
|
|
/* STM r1, r3, d2(b2) --- store multiple. */
|
2011-01-12 05:53:25 +08:00
|
|
|
/* STMY r1, r3, d2(b2) --- store multiple (long-displacement
|
|
|
|
version). */
|
* Makefile.in (s390-tdep.o): Add dependency on $(prologue_value_h).
* s390-tdep.c: Include "prologue-value.h".
(struct prologue_value): Remove.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register): Remove.
(compute_x_addr): Remove, replace by ...
(s390_addr): ... this new function.
(struct s390_prologue_data): Use pv_t instead of prologue_value.
(s390_store, s390_load): Likewise.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_analyze_prologue): Likewise. Also, simplify and combine
several conditional statements.
2006-04-09 08:26:08 +08:00
|
|
|
/* STMG r1, r3, d2(b2) --- store multiple (64-bit version). */
|
|
|
|
else if (is_rs (insn32, op_stm, &r1, &r3, &d2, &b2)
|
|
|
|
|| is_rsy (insn32, op1_stmy, op2_stmy, &r1, &r3, &d2, &b2)
|
|
|
|
|| is_rsy (insn64, op1_stmg, op2_stmg, &r1, &r3, &d2, &b2))
|
2013-10-31 01:51:57 +08:00
|
|
|
{
|
|
|
|
for (; r1 <= r3; r1++, d2 += data->gpr_size)
|
* Makefile.in (s390-tdep.o): Add dependency on $(prologue_value_h).
* s390-tdep.c: Include "prologue-value.h".
(struct prologue_value): Remove.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register): Remove.
(compute_x_addr): Remove, replace by ...
(s390_addr): ... this new function.
(struct s390_prologue_data): Use pv_t instead of prologue_value.
(s390_store, s390_load): Likewise.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_analyze_prologue): Likewise. Also, simplify and combine
several conditional statements.
2006-04-09 08:26:08 +08:00
|
|
|
s390_store (data, d2, 0, b2, data->gpr_size, data->gpr[r1]);
|
2013-10-31 01:51:57 +08:00
|
|
|
}
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
|
* Makefile.in (s390-tdep.o): Add dependency on $(prologue_value_h).
* s390-tdep.c: Include "prologue-value.h".
(struct prologue_value): Remove.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register): Remove.
(compute_x_addr): Remove, replace by ...
(s390_addr): ... this new function.
(struct s390_prologue_data): Use pv_t instead of prologue_value.
(s390_store, s390_load): Likewise.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_analyze_prologue): Likewise. Also, simplify and combine
several conditional statements.
2006-04-09 08:26:08 +08:00
|
|
|
/* AHI r1, i2 --- add halfword immediate. */
|
|
|
|
/* AGHI r1, i2 --- add halfword immediate (64-bit version). */
|
|
|
|
/* AFI r1, i2 --- add fullword immediate. */
|
|
|
|
/* AGFI r1, i2 --- add fullword immediate (64-bit version). */
|
|
|
|
else if (is_ri (insn32, op1_ahi, op2_ahi, &r1, &i2)
|
|
|
|
|| is_ri (insn64, op1_aghi, op2_aghi, &r1, &i2)
|
|
|
|
|| is_ril (insn32, op1_afi, op2_afi, &r1, &i2)
|
|
|
|
|| is_ril (insn64, op1_agfi, op2_agfi, &r1, &i2))
|
|
|
|
data->gpr[r1] = pv_add_constant (data->gpr[r1], i2);
|
|
|
|
|
|
|
|
/* ALFI r1, i2 --- add logical immediate. */
|
|
|
|
/* ALGFI r1, i2 --- add logical immediate (64-bit version). */
|
|
|
|
else if (is_ril (insn32, op1_alfi, op2_alfi, &r1, &i2)
|
|
|
|
|| is_ril (insn64, op1_algfi, op2_algfi, &r1, &i2))
|
|
|
|
data->gpr[r1] = pv_add_constant (data->gpr[r1],
|
|
|
|
(CORE_ADDR)i2 & 0xffffffff);
|
|
|
|
|
|
|
|
/* AR r1, r2 -- add register. */
|
|
|
|
/* AGR r1, r2 -- add register (64-bit version). */
|
|
|
|
else if (is_rr (insn32, op_ar, &r1, &r2)
|
|
|
|
|| is_rre (insn64, op_agr, &r1, &r2))
|
|
|
|
data->gpr[r1] = pv_add (data->gpr[r1], data->gpr[r2]);
|
|
|
|
|
|
|
|
/* A r1, d2(x2, b2) -- add. */
|
|
|
|
/* AY r1, d2(x2, b2) -- add (long-displacement version). */
|
|
|
|
/* AG r1, d2(x2, b2) -- add (64-bit version). */
|
|
|
|
else if (is_rx (insn32, op_a, &r1, &d2, &x2, &b2)
|
|
|
|
|| is_rxy (insn32, op1_ay, op2_ay, &r1, &d2, &x2, &b2)
|
|
|
|
|| is_rxy (insn64, op1_ag, op2_ag, &r1, &d2, &x2, &b2))
|
|
|
|
data->gpr[r1] = pv_add (data->gpr[r1],
|
|
|
|
s390_load (data, d2, x2, b2, data->gpr_size));
|
|
|
|
|
|
|
|
/* SLFI r1, i2 --- subtract logical immediate. */
|
|
|
|
/* SLGFI r1, i2 --- subtract logical immediate (64-bit version). */
|
|
|
|
else if (is_ril (insn32, op1_slfi, op2_slfi, &r1, &i2)
|
|
|
|
|| is_ril (insn64, op1_slgfi, op2_slgfi, &r1, &i2))
|
|
|
|
data->gpr[r1] = pv_add_constant (data->gpr[r1],
|
|
|
|
-((CORE_ADDR)i2 & 0xffffffff));
|
|
|
|
|
|
|
|
/* SR r1, r2 -- subtract register. */
|
|
|
|
/* SGR r1, r2 -- subtract register (64-bit version). */
|
|
|
|
else if (is_rr (insn32, op_sr, &r1, &r2)
|
|
|
|
|| is_rre (insn64, op_sgr, &r1, &r2))
|
|
|
|
data->gpr[r1] = pv_subtract (data->gpr[r1], data->gpr[r2]);
|
|
|
|
|
|
|
|
/* S r1, d2(x2, b2) -- subtract. */
|
|
|
|
/* SY r1, d2(x2, b2) -- subtract (long-displacement version). */
|
|
|
|
/* SG r1, d2(x2, b2) -- subtract (64-bit version). */
|
|
|
|
else if (is_rx (insn32, op_s, &r1, &d2, &x2, &b2)
|
|
|
|
|| is_rxy (insn32, op1_sy, op2_sy, &r1, &d2, &x2, &b2)
|
|
|
|
|| is_rxy (insn64, op1_sg, op2_sg, &r1, &d2, &x2, &b2))
|
|
|
|
data->gpr[r1] = pv_subtract (data->gpr[r1],
|
|
|
|
s390_load (data, d2, x2, b2, data->gpr_size));
|
|
|
|
|
|
|
|
/* LA r1, d2(x2, b2) --- load address. */
|
|
|
|
/* LAY r1, d2(x2, b2) --- load address (long-displacement version). */
|
|
|
|
else if (is_rx (insn, op_la, &r1, &d2, &x2, &b2)
|
2013-10-31 01:51:57 +08:00
|
|
|
|| is_rxy (insn, op1_lay, op2_lay, &r1, &d2, &x2, &b2))
|
* Makefile.in (s390-tdep.o): Add dependency on $(prologue_value_h).
* s390-tdep.c: Include "prologue-value.h".
(struct prologue_value): Remove.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register): Remove.
(compute_x_addr): Remove, replace by ...
(s390_addr): ... this new function.
(struct s390_prologue_data): Use pv_t instead of prologue_value.
(s390_store, s390_load): Likewise.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_analyze_prologue): Likewise. Also, simplify and combine
several conditional statements.
2006-04-09 08:26:08 +08:00
|
|
|
data->gpr[r1] = s390_addr (data, d2, x2, b2);
|
|
|
|
|
|
|
|
/* LARL r1, i2 --- load address relative long. */
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
else if (is_ril (insn, op1_larl, op2_larl, &r1, &i2))
|
* Makefile.in (s390-tdep.o): Add dependency on $(prologue_value_h).
* s390-tdep.c: Include "prologue-value.h".
(struct prologue_value): Remove.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register): Remove.
(compute_x_addr): Remove, replace by ...
(s390_addr): ... this new function.
(struct s390_prologue_data): Use pv_t instead of prologue_value.
(s390_store, s390_load): Likewise.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_analyze_prologue): Likewise. Also, simplify and combine
several conditional statements.
2006-04-09 08:26:08 +08:00
|
|
|
data->gpr[r1] = pv_constant (pc + i2 * 2);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
|
* Makefile.in (s390-tdep.o): Add dependency on $(prologue_value_h).
* s390-tdep.c: Include "prologue-value.h".
(struct prologue_value): Remove.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register): Remove.
(compute_x_addr): Remove, replace by ...
(s390_addr): ... this new function.
(struct s390_prologue_data): Use pv_t instead of prologue_value.
(s390_store, s390_load): Likewise.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_analyze_prologue): Likewise. Also, simplify and combine
several conditional statements.
2006-04-09 08:26:08 +08:00
|
|
|
/* BASR r1, 0 --- branch and save.
|
2013-10-31 01:51:57 +08:00
|
|
|
Since r2 is zero, this saves the PC in r1, but doesn't branch. */
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
else if (is_rr (insn, op_basr, &r1, &r2)
|
2013-10-31 01:51:57 +08:00
|
|
|
&& r2 == 0)
|
* Makefile.in (s390-tdep.o): Add dependency on $(prologue_value_h).
* s390-tdep.c: Include "prologue-value.h".
(struct prologue_value): Remove.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register): Remove.
(compute_x_addr): Remove, replace by ...
(s390_addr): ... this new function.
(struct s390_prologue_data): Use pv_t instead of prologue_value.
(s390_store, s390_load): Likewise.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_analyze_prologue): Likewise. Also, simplify and combine
several conditional statements.
2006-04-09 08:26:08 +08:00
|
|
|
data->gpr[r1] = pv_constant (next_pc);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
|
* Makefile.in (s390-tdep.o): Add dependency on $(prologue_value_h).
* s390-tdep.c: Include "prologue-value.h".
(struct prologue_value): Remove.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register): Remove.
(compute_x_addr): Remove, replace by ...
(s390_addr): ... this new function.
(struct s390_prologue_data): Use pv_t instead of prologue_value.
(s390_store, s390_load): Likewise.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_analyze_prologue): Likewise. Also, simplify and combine
several conditional statements.
2006-04-09 08:26:08 +08:00
|
|
|
/* BRAS r1, i2 --- branch relative and save. */
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
else if (is_ri (insn, op1_bras, op2_bras, &r1, &i2))
|
2013-10-31 01:51:57 +08:00
|
|
|
{
|
|
|
|
data->gpr[r1] = pv_constant (next_pc);
|
|
|
|
next_pc = pc + i2 * 2;
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
|
2013-10-31 01:51:57 +08:00
|
|
|
/* We'd better not interpret any backward branches. We'll
|
|
|
|
never terminate. */
|
|
|
|
if (next_pc <= pc)
|
|
|
|
break;
|
|
|
|
}
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
/* Terminate search when hitting any other branch instruction. */
|
|
|
|
else if (is_rr (insn, op_basr, &r1, &r2)
|
|
|
|
|| is_rx (insn, op_bas, &r1, &d2, &x2, &b2)
|
|
|
|
|| is_rr (insn, op_bcr, &r1, &r2)
|
|
|
|
|| is_rx (insn, op_bc, &r1, &d2, &x2, &b2)
|
|
|
|
|| is_ri (insn, op1_brc, op2_brc, &r1, &i2)
|
|
|
|
|| is_ril (insn, op1_brcl, op2_brcl, &r1, &i2)
|
|
|
|
|| is_ril (insn, op1_brasl, op2_brasl, &r2, &i2))
|
|
|
|
break;
|
|
|
|
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
else
|
2012-11-03 02:53:54 +08:00
|
|
|
{
|
|
|
|
/* An instruction we don't know how to simulate. The only
|
|
|
|
safe thing to do would be to set every value we're tracking
|
|
|
|
to 'unknown'. Instead, we'll be optimistic: we assume that
|
|
|
|
we *can* interpret every instruction that the compiler uses
|
|
|
|
to manipulate any of the data we're interested in here --
|
|
|
|
then we can just ignore anything else. */
|
|
|
|
}
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
|
|
|
|
/* Record the address after the last instruction that changed
|
2013-10-31 01:51:57 +08:00
|
|
|
the FP, SP, or backlink. Ignore instructions that changed
|
|
|
|
them back to their original values --- those are probably
|
|
|
|
restore instructions. (The back chain is never restored,
|
|
|
|
just popped.) */
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
{
|
2013-10-31 01:51:57 +08:00
|
|
|
pv_t sp = data->gpr[S390_SP_REGNUM - S390_R0_REGNUM];
|
|
|
|
pv_t fp = data->gpr[S390_FRAME_REGNUM - S390_R0_REGNUM];
|
|
|
|
|
|
|
|
if ((! pv_is_identical (pre_insn_sp, sp)
|
|
|
|
&& ! pv_is_register_k (sp, S390_SP_REGNUM, 0)
|
* Makefile.in (s390-tdep.o): Add dependency on $(prologue_value_h).
* s390-tdep.c: Include "prologue-value.h".
(struct prologue_value): Remove.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register): Remove.
(compute_x_addr): Remove, replace by ...
(s390_addr): ... this new function.
(struct s390_prologue_data): Use pv_t instead of prologue_value.
(s390_store, s390_load): Likewise.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_analyze_prologue): Likewise. Also, simplify and combine
several conditional statements.
2006-04-09 08:26:08 +08:00
|
|
|
&& sp.kind != pvk_unknown)
|
2013-10-31 01:51:57 +08:00
|
|
|
|| (! pv_is_identical (pre_insn_fp, fp)
|
|
|
|
&& ! pv_is_register_k (fp, S390_FRAME_REGNUM, 0)
|
* Makefile.in (s390-tdep.o): Add dependency on $(prologue_value_h).
* s390-tdep.c: Include "prologue-value.h".
(struct prologue_value): Remove.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register): Remove.
(compute_x_addr): Remove, replace by ...
(s390_addr): ... this new function.
(struct s390_prologue_data): Use pv_t instead of prologue_value.
(s390_store, s390_load): Likewise.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_analyze_prologue): Likewise. Also, simplify and combine
several conditional statements.
2006-04-09 08:26:08 +08:00
|
|
|
&& fp.kind != pvk_unknown)
|
2013-10-31 01:51:57 +08:00
|
|
|
|| pre_insn_back_chain_saved_p != data->back_chain_saved_p)
|
|
|
|
result = next_pc;
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
}
|
2001-10-14 06:13:35 +08:00
|
|
|
}
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
|
2006-04-09 09:21:15 +08:00
|
|
|
/* Record where all the registers were saved. */
|
|
|
|
pv_area_scan (data->stack, s390_check_for_saved, data);
|
|
|
|
|
|
|
|
free_pv_area (data->stack);
|
|
|
|
data->stack = NULL;
|
|
|
|
|
New S390 prologue analyzer.
* s390-tdep.c (struct prologue_value, enum pv_boolean): New types.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register, pv_is_array_ref,
compute_x_addr, s390_on_stack, s390_store,
s390_get_signal_frame_info): New functions.
(S390_NUM_SPILL_SLOTS): New macro.
(s390_get_frame_info): Rewritten.
(is_arg_reg): Deleted.
Break out the decoding of S/390 instructions into separate
functions, to make it more legible, and easier to check
against the spec.
* s390-tdep.c (is_ri, is_ril, is_rr, is_rre, is_rs, is_rse,
is_rx, is_rxe): New functions.
(op1_aghi, op2_aghi, op1_ahi, op2_ahi, op_ar, op_basr, op1_bras,
op2_bras, op_l, op_la, op1_larl, op2_larl, op_lgr, op1_lghi,
op2_lghi, op1_lhi, op2_lhi, op_lr, op_nr, op_ngr, op_s, op_st,
op_std, op1_stg, op2_stg, op_stm, op1_stmg, op2_stmg, op_svc): New
enums for opcode values. (Is this an improvement?)
2003-07-03 03:05:56 +08:00
|
|
|
return result;
|
2001-10-14 06:13:35 +08:00
|
|
|
}
|
|
|
|
|
2013-10-31 01:51:57 +08:00
|
|
|
/* Advance PC across any function entry prologue instructions to reach
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
some "real" code. */
|
|
|
|
static CORE_ADDR
|
2008-01-11 21:20:02 +08:00
|
|
|
s390_skip_prologue (struct gdbarch *gdbarch, CORE_ADDR pc)
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
{
|
|
|
|
struct s390_prologue_data data;
|
|
|
|
CORE_ADDR skip_pc;
|
2008-01-11 21:20:02 +08:00
|
|
|
skip_pc = s390_analyze_prologue (gdbarch, pc, (CORE_ADDR)-1, &data);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
return skip_pc ? skip_pc : pc;
|
|
|
|
}
|
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
/* Return true if we are in the functin's epilogue, i.e. after the
|
|
|
|
instruction that destroyed the function's stack frame. */
|
|
|
|
static int
|
|
|
|
s390_in_function_epilogue_p (struct gdbarch *gdbarch, CORE_ADDR pc)
|
|
|
|
{
|
|
|
|
int word_size = gdbarch_ptr_bit (gdbarch) / 8;
|
|
|
|
|
|
|
|
/* In frameless functions, there's not frame to destroy and thus
|
|
|
|
we don't care about the epilogue.
|
|
|
|
|
|
|
|
In functions with frame, the epilogue sequence is a pair of
|
|
|
|
a LM-type instruction that restores (amongst others) the
|
|
|
|
return register %r14 and the stack pointer %r15, followed
|
|
|
|
by a branch 'br %r14' --or equivalent-- that effects the
|
|
|
|
actual return.
|
|
|
|
|
|
|
|
In that situation, this function needs to return 'true' in
|
|
|
|
exactly one case: when pc points to that branch instruction.
|
|
|
|
|
|
|
|
Thus we try to disassemble the one instructions immediately
|
2011-07-05 12:35:00 +08:00
|
|
|
preceding pc and check whether it is an LM-type instruction
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
modifying the stack pointer.
|
|
|
|
|
|
|
|
Note that disassembling backwards is not reliable, so there
|
|
|
|
is a slight chance of false positives here ... */
|
|
|
|
|
|
|
|
bfd_byte insn[6];
|
|
|
|
unsigned int r1, r3, b2;
|
|
|
|
int d2;
|
|
|
|
|
|
|
|
if (word_size == 4
|
* breakpoint.h (breakpoint_restore_shadows): New
declaration.
* breakpoint.c (breakpoint_restore_shadows): New.
(read_memory_nobpt): Delete.
* gdbcore.h (read_memory_nobpt): Delete declaration.
* target.c (memory_xfer_partial): Call
breakpoint_restore_shadows.
(restore_show_memory_breakpoints)
(make_show_memory_beakpoints_cleanup): New.
(show_memory_breakpoints): New.
* target.h (make_show_memory_beakpoints_cleanup): Declare.
* ppc-linux-tdep.c (ppc_linux_memory_remove_breakpoint):
Make sure we see memory breakpoints when checking if
breakpoint is still there.
* alpha-tdep.c, alphanbsd-tdep.c, frame.c, frv-tdep.c,
hppa-linux-tdep.c, hppa-tdep.c, i386-linux-nat.c, i386-tdep.c,
m68klinux-tdep.c, mips-tdep.c, mn10300-tdep.c, s390-tdep.c,
sparc-tdep.c: Use target_read_memory instead of read_memory_nobpt.
2008-03-13 20:22:14 +08:00
|
|
|
&& !target_read_memory (pc - 4, insn, 4)
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
&& is_rs (insn, op_lm, &r1, &r3, &d2, &b2)
|
|
|
|
&& r3 == S390_SP_REGNUM - S390_R0_REGNUM)
|
|
|
|
return 1;
|
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
if (word_size == 4
|
* breakpoint.h (breakpoint_restore_shadows): New
declaration.
* breakpoint.c (breakpoint_restore_shadows): New.
(read_memory_nobpt): Delete.
* gdbcore.h (read_memory_nobpt): Delete declaration.
* target.c (memory_xfer_partial): Call
breakpoint_restore_shadows.
(restore_show_memory_breakpoints)
(make_show_memory_beakpoints_cleanup): New.
(show_memory_breakpoints): New.
* target.h (make_show_memory_beakpoints_cleanup): Declare.
* ppc-linux-tdep.c (ppc_linux_memory_remove_breakpoint):
Make sure we see memory breakpoints when checking if
breakpoint is still there.
* alpha-tdep.c, alphanbsd-tdep.c, frame.c, frv-tdep.c,
hppa-linux-tdep.c, hppa-tdep.c, i386-linux-nat.c, i386-tdep.c,
m68klinux-tdep.c, mips-tdep.c, mn10300-tdep.c, s390-tdep.c,
sparc-tdep.c: Use target_read_memory instead of read_memory_nobpt.
2008-03-13 20:22:14 +08:00
|
|
|
&& !target_read_memory (pc - 6, insn, 6)
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
&& is_rsy (insn, op1_lmy, op2_lmy, &r1, &r3, &d2, &b2)
|
|
|
|
&& r3 == S390_SP_REGNUM - S390_R0_REGNUM)
|
|
|
|
return 1;
|
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
if (word_size == 8
|
* breakpoint.h (breakpoint_restore_shadows): New
declaration.
* breakpoint.c (breakpoint_restore_shadows): New.
(read_memory_nobpt): Delete.
* gdbcore.h (read_memory_nobpt): Delete declaration.
* target.c (memory_xfer_partial): Call
breakpoint_restore_shadows.
(restore_show_memory_breakpoints)
(make_show_memory_beakpoints_cleanup): New.
(show_memory_breakpoints): New.
* target.h (make_show_memory_beakpoints_cleanup): Declare.
* ppc-linux-tdep.c (ppc_linux_memory_remove_breakpoint):
Make sure we see memory breakpoints when checking if
breakpoint is still there.
* alpha-tdep.c, alphanbsd-tdep.c, frame.c, frv-tdep.c,
hppa-linux-tdep.c, hppa-tdep.c, i386-linux-nat.c, i386-tdep.c,
m68klinux-tdep.c, mips-tdep.c, mn10300-tdep.c, s390-tdep.c,
sparc-tdep.c: Use target_read_memory instead of read_memory_nobpt.
2008-03-13 20:22:14 +08:00
|
|
|
&& !target_read_memory (pc - 6, insn, 6)
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
&& is_rsy (insn, op1_lmg, op2_lmg, &r1, &r3, &d2, &b2)
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
&& r3 == S390_SP_REGNUM - S390_R0_REGNUM)
|
|
|
|
return 1;
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|
2001-10-14 06:13:35 +08:00
|
|
|
|
* s390-tdep.c (op_bctr, op_bctgr, op_bct, op1_bctg, op2_bctg,
op_bxh, op1_bxhg, op2_bxhg, op_bxle, op1_bxleg, op2_bxleg,
op1_brct, op2_brct, op1_brctg, op2_brctg, op_brxh, op1_brxhg,
op2_brxhg, op_brxle, op1_brxlg, op2_brxlg): New enum values.
(is_rsi, is_rie): New insn format decoder routines.
(s390_displaced_step_fixup): New function.
(s390_gdbarch_init): Install displaced stepping routines.
2009-09-28 04:47:42 +08:00
|
|
|
/* Displaced stepping. */
|
|
|
|
|
|
|
|
/* Fix up the state of registers and memory after having single-stepped
|
|
|
|
a displaced instruction. */
|
|
|
|
static void
|
|
|
|
s390_displaced_step_fixup (struct gdbarch *gdbarch,
|
|
|
|
struct displaced_step_closure *closure,
|
|
|
|
CORE_ADDR from, CORE_ADDR to,
|
|
|
|
struct regcache *regs)
|
|
|
|
{
|
|
|
|
/* Since we use simple_displaced_step_copy_insn, our closure is a
|
|
|
|
copy of the instruction. */
|
|
|
|
gdb_byte *insn = (gdb_byte *) closure;
|
|
|
|
static int s390_instrlen[] = { 2, 4, 4, 6 };
|
|
|
|
int insnlen = s390_instrlen[insn[0] >> 6];
|
|
|
|
|
|
|
|
/* Fields for various kinds of instructions. */
|
|
|
|
unsigned int b2, r1, r2, x2, r3;
|
|
|
|
int i2, d2;
|
|
|
|
|
|
|
|
/* Get current PC and addressing mode bit. */
|
|
|
|
CORE_ADDR pc = regcache_read_pc (regs);
|
2009-09-29 20:51:34 +08:00
|
|
|
ULONGEST amode = 0;
|
* s390-tdep.c (op_bctr, op_bctgr, op_bct, op1_bctg, op2_bctg,
op_bxh, op1_bxhg, op2_bxhg, op_bxle, op1_bxleg, op2_bxleg,
op1_brct, op2_brct, op1_brctg, op2_brctg, op_brxh, op1_brxhg,
op2_brxhg, op_brxle, op1_brxlg, op2_brxlg): New enum values.
(is_rsi, is_rie): New insn format decoder routines.
(s390_displaced_step_fixup): New function.
(s390_gdbarch_init): Install displaced stepping routines.
2009-09-28 04:47:42 +08:00
|
|
|
|
|
|
|
if (register_size (gdbarch, S390_PSWA_REGNUM) == 4)
|
|
|
|
{
|
|
|
|
regcache_cooked_read_unsigned (regs, S390_PSWA_REGNUM, &amode);
|
|
|
|
amode &= 0x80000000;
|
|
|
|
}
|
|
|
|
|
|
|
|
if (debug_displaced)
|
|
|
|
fprintf_unfiltered (gdb_stdlog,
|
2011-11-30 16:26:06 +08:00
|
|
|
"displaced: (s390) fixup (%s, %s) pc %s len %d amode 0x%x\n",
|
* s390-tdep.c (op_bctr, op_bctgr, op_bct, op1_bctg, op2_bctg,
op_bxh, op1_bxhg, op2_bxhg, op_bxle, op1_bxleg, op2_bxleg,
op1_brct, op2_brct, op1_brctg, op2_brctg, op_brxh, op1_brxhg,
op2_brxhg, op_brxle, op1_brxlg, op2_brxlg): New enum values.
(is_rsi, is_rie): New insn format decoder routines.
(s390_displaced_step_fixup): New function.
(s390_gdbarch_init): Install displaced stepping routines.
2009-09-28 04:47:42 +08:00
|
|
|
paddress (gdbarch, from), paddress (gdbarch, to),
|
2011-11-30 16:26:06 +08:00
|
|
|
paddress (gdbarch, pc), insnlen, (int) amode);
|
* s390-tdep.c (op_bctr, op_bctgr, op_bct, op1_bctg, op2_bctg,
op_bxh, op1_bxhg, op2_bxhg, op_bxle, op1_bxleg, op2_bxleg,
op1_brct, op2_brct, op1_brctg, op2_brctg, op_brxh, op1_brxhg,
op2_brxhg, op_brxle, op1_brxlg, op2_brxlg): New enum values.
(is_rsi, is_rie): New insn format decoder routines.
(s390_displaced_step_fixup): New function.
(s390_gdbarch_init): Install displaced stepping routines.
2009-09-28 04:47:42 +08:00
|
|
|
|
|
|
|
/* Handle absolute branch and save instructions. */
|
|
|
|
if (is_rr (insn, op_basr, &r1, &r2)
|
|
|
|
|| is_rx (insn, op_bas, &r1, &d2, &x2, &b2))
|
|
|
|
{
|
|
|
|
/* Recompute saved return address in R1. */
|
|
|
|
regcache_cooked_write_unsigned (regs, S390_R0_REGNUM + r1,
|
|
|
|
amode | (from + insnlen));
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Handle absolute branch instructions. */
|
|
|
|
else if (is_rr (insn, op_bcr, &r1, &r2)
|
|
|
|
|| is_rx (insn, op_bc, &r1, &d2, &x2, &b2)
|
|
|
|
|| is_rr (insn, op_bctr, &r1, &r2)
|
|
|
|
|| is_rre (insn, op_bctgr, &r1, &r2)
|
|
|
|
|| is_rx (insn, op_bct, &r1, &d2, &x2, &b2)
|
|
|
|
|| is_rxy (insn, op1_bctg, op2_brctg, &r1, &d2, &x2, &b2)
|
|
|
|
|| is_rs (insn, op_bxh, &r1, &r3, &d2, &b2)
|
|
|
|
|| is_rsy (insn, op1_bxhg, op2_bxhg, &r1, &r3, &d2, &b2)
|
|
|
|
|| is_rs (insn, op_bxle, &r1, &r3, &d2, &b2)
|
|
|
|
|| is_rsy (insn, op1_bxleg, op2_bxleg, &r1, &r3, &d2, &b2))
|
|
|
|
{
|
|
|
|
/* Update PC iff branch was *not* taken. */
|
|
|
|
if (pc == to + insnlen)
|
|
|
|
regcache_write_pc (regs, from + insnlen);
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Handle PC-relative branch and save instructions. */
|
|
|
|
else if (is_ri (insn, op1_bras, op2_bras, &r1, &i2)
|
2013-10-31 01:51:57 +08:00
|
|
|
|| is_ril (insn, op1_brasl, op2_brasl, &r1, &i2))
|
* s390-tdep.c (op_bctr, op_bctgr, op_bct, op1_bctg, op2_bctg,
op_bxh, op1_bxhg, op2_bxhg, op_bxle, op1_bxleg, op2_bxleg,
op1_brct, op2_brct, op1_brctg, op2_brctg, op_brxh, op1_brxhg,
op2_brxhg, op_brxle, op1_brxlg, op2_brxlg): New enum values.
(is_rsi, is_rie): New insn format decoder routines.
(s390_displaced_step_fixup): New function.
(s390_gdbarch_init): Install displaced stepping routines.
2009-09-28 04:47:42 +08:00
|
|
|
{
|
|
|
|
/* Update PC. */
|
|
|
|
regcache_write_pc (regs, pc - to + from);
|
|
|
|
/* Recompute saved return address in R1. */
|
|
|
|
regcache_cooked_write_unsigned (regs, S390_R0_REGNUM + r1,
|
|
|
|
amode | (from + insnlen));
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Handle PC-relative branch instructions. */
|
|
|
|
else if (is_ri (insn, op1_brc, op2_brc, &r1, &i2)
|
|
|
|
|| is_ril (insn, op1_brcl, op2_brcl, &r1, &i2)
|
|
|
|
|| is_ri (insn, op1_brct, op2_brct, &r1, &i2)
|
|
|
|
|| is_ri (insn, op1_brctg, op2_brctg, &r1, &i2)
|
|
|
|
|| is_rsi (insn, op_brxh, &r1, &r3, &i2)
|
|
|
|
|| is_rie (insn, op1_brxhg, op2_brxhg, &r1, &r3, &i2)
|
|
|
|
|| is_rsi (insn, op_brxle, &r1, &r3, &i2)
|
|
|
|
|| is_rie (insn, op1_brxlg, op2_brxlg, &r1, &r3, &i2))
|
|
|
|
{
|
|
|
|
/* Update PC. */
|
|
|
|
regcache_write_pc (regs, pc - to + from);
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Handle LOAD ADDRESS RELATIVE LONG. */
|
|
|
|
else if (is_ril (insn, op1_larl, op2_larl, &r1, &i2))
|
|
|
|
{
|
2011-11-30 16:26:06 +08:00
|
|
|
/* Update PC. */
|
|
|
|
regcache_write_pc (regs, from + insnlen);
|
2013-10-31 01:51:57 +08:00
|
|
|
/* Recompute output address in R1. */
|
* s390-tdep.c (op_bctr, op_bctgr, op_bct, op1_bctg, op2_bctg,
op_bxh, op1_bxhg, op2_bxhg, op_bxle, op1_bxleg, op2_bxleg,
op1_brct, op2_brct, op1_brctg, op2_brctg, op_brxh, op1_brxhg,
op2_brxhg, op_brxle, op1_brxlg, op2_brxlg): New enum values.
(is_rsi, is_rie): New insn format decoder routines.
(s390_displaced_step_fixup): New function.
(s390_gdbarch_init): Install displaced stepping routines.
2009-09-28 04:47:42 +08:00
|
|
|
regcache_cooked_write_unsigned (regs, S390_R0_REGNUM + r1,
|
2011-11-30 16:26:06 +08:00
|
|
|
amode | (from + i2 * 2));
|
* s390-tdep.c (op_bctr, op_bctgr, op_bct, op1_bctg, op2_bctg,
op_bxh, op1_bxhg, op2_bxhg, op_bxle, op1_bxleg, op2_bxleg,
op1_brct, op2_brct, op1_brctg, op2_brctg, op_brxh, op1_brxhg,
op2_brxhg, op_brxle, op1_brxlg, op2_brxlg): New enum values.
(is_rsi, is_rie): New insn format decoder routines.
(s390_displaced_step_fixup): New function.
(s390_gdbarch_init): Install displaced stepping routines.
2009-09-28 04:47:42 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
/* If we executed a breakpoint instruction, point PC right back at it. */
|
|
|
|
else if (insn[0] == 0x0 && insn[1] == 0x1)
|
|
|
|
regcache_write_pc (regs, from);
|
|
|
|
|
|
|
|
/* For any other insn, PC points right after the original instruction. */
|
|
|
|
else
|
|
|
|
regcache_write_pc (regs, from + insnlen);
|
2011-11-30 16:26:06 +08:00
|
|
|
|
|
|
|
if (debug_displaced)
|
|
|
|
fprintf_unfiltered (gdb_stdlog,
|
|
|
|
"displaced: (s390) pc is now %s\n",
|
|
|
|
paddress (gdbarch, regcache_read_pc (regs)));
|
* s390-tdep.c (op_bctr, op_bctgr, op_bct, op1_bctg, op2_bctg,
op_bxh, op1_bxhg, op2_bxhg, op_bxle, op1_bxleg, op2_bxleg,
op1_brct, op2_brct, op1_brctg, op2_brctg, op_brxh, op1_brxhg,
op2_brxhg, op_brxle, op1_brxlg, op2_brxlg): New enum values.
(is_rsi, is_rie): New insn format decoder routines.
(s390_displaced_step_fixup): New function.
(s390_gdbarch_init): Install displaced stepping routines.
2009-09-28 04:47:42 +08:00
|
|
|
}
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
|
2011-12-01 00:06:55 +08:00
|
|
|
|
|
|
|
/* Helper routine to unwind pseudo registers. */
|
|
|
|
|
|
|
|
static struct value *
|
|
|
|
s390_unwind_pseudo_register (struct frame_info *this_frame, int regnum)
|
|
|
|
{
|
|
|
|
struct gdbarch *gdbarch = get_frame_arch (this_frame);
|
|
|
|
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
|
|
|
struct type *type = register_type (gdbarch, regnum);
|
|
|
|
|
|
|
|
/* Unwind PC via PSW address. */
|
|
|
|
if (regnum == tdep->pc_regnum)
|
|
|
|
{
|
|
|
|
struct value *val;
|
|
|
|
|
|
|
|
val = frame_unwind_register_value (this_frame, S390_PSWA_REGNUM);
|
|
|
|
if (!value_optimized_out (val))
|
|
|
|
{
|
|
|
|
LONGEST pswa = value_as_long (val);
|
|
|
|
|
|
|
|
if (TYPE_LENGTH (type) == 4)
|
|
|
|
return value_from_pointer (type, pswa & 0x7fffffff);
|
|
|
|
else
|
|
|
|
return value_from_pointer (type, pswa);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Unwind CC via PSW mask. */
|
|
|
|
if (regnum == tdep->cc_regnum)
|
|
|
|
{
|
|
|
|
struct value *val;
|
|
|
|
|
|
|
|
val = frame_unwind_register_value (this_frame, S390_PSWM_REGNUM);
|
|
|
|
if (!value_optimized_out (val))
|
|
|
|
{
|
|
|
|
LONGEST pswm = value_as_long (val);
|
|
|
|
|
|
|
|
if (TYPE_LENGTH (type) == 4)
|
|
|
|
return value_from_longest (type, (pswm >> 12) & 3);
|
|
|
|
else
|
|
|
|
return value_from_longest (type, (pswm >> 44) & 3);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Unwind full GPRs to show at least the lower halves (as the
|
|
|
|
upper halves are undefined). */
|
2013-09-13 22:11:15 +08:00
|
|
|
if (regnum_is_gpr_full (tdep, regnum))
|
2011-12-01 00:06:55 +08:00
|
|
|
{
|
|
|
|
int reg = regnum - tdep->gpr_full_regnum;
|
|
|
|
struct value *val;
|
|
|
|
|
|
|
|
val = frame_unwind_register_value (this_frame, S390_R0_REGNUM + reg);
|
|
|
|
if (!value_optimized_out (val))
|
|
|
|
return value_cast (type, val);
|
|
|
|
}
|
|
|
|
|
|
|
|
return allocate_optimized_out_value (type);
|
|
|
|
}
|
|
|
|
|
|
|
|
static struct value *
|
|
|
|
s390_trad_frame_prev_register (struct frame_info *this_frame,
|
|
|
|
struct trad_frame_saved_reg saved_regs[],
|
|
|
|
int regnum)
|
|
|
|
{
|
|
|
|
if (regnum < S390_NUM_REGS)
|
|
|
|
return trad_frame_get_prev_register (this_frame, saved_regs, regnum);
|
|
|
|
else
|
|
|
|
return s390_unwind_pseudo_register (this_frame, regnum);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
/* Normal stack frames. */
|
|
|
|
|
|
|
|
struct s390_unwind_cache {
|
|
|
|
|
|
|
|
CORE_ADDR func;
|
|
|
|
CORE_ADDR frame_base;
|
|
|
|
CORE_ADDR local_base;
|
|
|
|
|
|
|
|
struct trad_frame_saved_reg *saved_regs;
|
|
|
|
};
|
|
|
|
|
2003-06-11 21:16:30 +08:00
|
|
|
static int
|
2008-05-01 08:18:27 +08:00
|
|
|
s390_prologue_frame_unwind_cache (struct frame_info *this_frame,
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
struct s390_unwind_cache *info)
|
2001-10-14 06:13:35 +08:00
|
|
|
{
|
2008-05-01 08:18:27 +08:00
|
|
|
struct gdbarch *gdbarch = get_frame_arch (this_frame);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
int word_size = gdbarch_ptr_bit (gdbarch) / 8;
|
|
|
|
struct s390_prologue_data data;
|
* Makefile.in (s390-tdep.o): Add dependency on $(prologue_value_h).
* s390-tdep.c: Include "prologue-value.h".
(struct prologue_value): Remove.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register): Remove.
(compute_x_addr): Remove, replace by ...
(s390_addr): ... this new function.
(struct s390_prologue_data): Use pv_t instead of prologue_value.
(s390_store, s390_load): Likewise.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_analyze_prologue): Likewise. Also, simplify and combine
several conditional statements.
2006-04-09 08:26:08 +08:00
|
|
|
pv_t *fp = &data.gpr[S390_FRAME_REGNUM - S390_R0_REGNUM];
|
|
|
|
pv_t *sp = &data.gpr[S390_SP_REGNUM - S390_R0_REGNUM];
|
2004-10-24 00:31:23 +08:00
|
|
|
int i;
|
|
|
|
CORE_ADDR cfa;
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
CORE_ADDR func;
|
|
|
|
CORE_ADDR result;
|
|
|
|
ULONGEST reg;
|
|
|
|
CORE_ADDR prev_sp;
|
|
|
|
int frame_pointer;
|
|
|
|
int size;
|
gdb/
* NEWS: Document inlined function support.
* Makefile.in (SFILES): Add inline-frame.c.
(COMMON_OBS): Add inline-frame.o.
* block.c (contained_in): Rewrite to use lexical nesting.
(block_linkage_function): Skip inlined function blocks.
(block_inlined_p): New.
* block.h (struct block): Update comment.
(block_inlined_p): New prototype.
* blockframe.c (get_frame_block): Handle inlined functions.
(get_frame_function): Do not use block_linkage_function.
(block_innermost_frame): Use get_frame_block and contained_in.
* breakpoint.c (watchpoint_check): Remove extra reinit_frame_cache.
Skip over inlined functions. Simplify epilogue check.
(bpstat_check_breakpoint_conditions): Use get_stack_frame_id.
Update comments.
(set_momentary_breakpoint): Only accept non-inlined frames.
(watch_command_1): Use frame_unwind_caller_pc and
frame_unwind_caller_id instead of get_prev_frame.
(until_break_command): Likewise. Use get_stack_frame_id.
* buildsym.c (end_symtab): Set SYMBOL_SYMTAB for block functions.
* dwarf2loc.c (dwarf_expr_frame_base): Use block_linkage_function.
* dwarf2read.c (process_die): Handle DW_TAG_inlined_subroutine.
(read_func_scope, new_symbol): Likewise. Handle arguments specially
for inlined functions without call site information.
(inherit_abstract_dies): Allow tag mismatch for inlined subroutines.
(die_specification): Treat DW_AT_abstract_origin as a specification.
(read_type_die): Handle DW_TAG_inlined_subroutine.
* frame-unwind.c (frame_unwind_init): Add inline_frame_unwind.
* frame.c (fprint_frame_id): Print inline depth.
(fprint_frame_type): Handle INLINE_FRAME and SENTINEL_FRAME.
(skip_inlined_frames, get_stack_frame_id): New.
(frame_unwind_caller_id): Use skip_inlined_frames.
(frame_id_inlined_p): New.
(frame_id_eq): Make the logic match the comments. Add inline_depth
check.
(frame_id_inner): Handle inlined functions.
(frame_unwind_pc): New function, copied from frame_unwind_caller_pc.
(frame_unwind_caller_pc): Use skip_inlined_frames and frame_unwind_pc.
(get_prev_frame_1): Check for inline frames. Split out frame
allocation to get_prev_frame_raw.
(get_prev_frame_raw): New function.
(get_prev_frame): Handle inline frames.
(get_frame_pc): Use frame_unwind_pc.
(get_frame_address_in_block): Skip inlined frames on both sides.
(pc_notcurrent): Delete.
(find_frame_sal): Rewrite to handle inline call sites. Use
get_frame_address_in_block.
(deprecated_update_frame_pc_hack): Make static.
* frame.h: Update comments.
(struct frame_id): Add inline_depth.
(enum frame_type): Add INLINE_FRAME.
(frame_id_inlined_p, get_stack_frame_id): New prototypes.
* gdbthread.h (struct thread_info): Add step_stack_frame_id field.
* infcmd.c (set_step_frame): New function.
(step_once): Use set_step_frame. Handle inlined functions.
(until_next_command): Use set_step_frame.
(finish_backward), finish_forward): Use get_stack_frame_id.
(finish_command): Support inlined functions.
* inferior.h (set_step_info): New prototype.
* infrun.c (RESUME_ALL): Use minus_one_ptid.
(clear_proceed_status): Clear step_stack_frame_id.
(init_wait_for_inferior): Call clear_inline_frame_state.
(init_execution_control_state): Make static.
(set_step_info): New function.
(init_thread_stepping_state): Do not set the symtab or line here.
(stepped_in_from): New function.
(handle_inferior_event): Handle inlined functions. Use set_step_info.
(insert_step_resume_breakpoint_at_frame): Use get_stack_frame_id.
(struct inferior_status): Add step_stack_frame_id.
(save_inferior_status, restore_inferior_status): Save and restore
step_stack_frame_id.
* inline-frame.c, inline-frame.h: New files.
* minsyms.c (prim_record_minimal_symbol_and_info): Use XCALLOC.
* regcache.c (regcache_write_pc): Call reinit_frame_cache.
* s390-tdep.c (s390_prologue_frame_unwind_cache): Handle INLINE_FRAME.
* stack.c (frame_show_address): New.
(print_frame_info, print_frame): Use it.
(find_frame_funname): Use get_frame_function. Handle inlined blocks.
(frame_info): Mark inlined functions.
(backtrace_command_1): Use get_current_user_frame.
(print_frame_local_vars, print_frame_label_vars): Update comments.
(return_command): Refuse inlined functions.
* symtab.c (lookup_symbol_aux_local): Stop at inlined function
boundaries.
(find_function_start_sal): Avoid inlined functions.
(completion_list_add_fields): New function.
(default_make_symbol_completion_list): Use it. Use block_static_block
and block_global_block. Check for inlined functions.
(skip_prologue_using_sal): Avoid line number comparison across
inlining.
* symtab.h (struct symbol): Add is_inlined.
(SYMBOL_INLINED): New.
* target.c (target_resume): Call clear_inline_frame_state.
* valops.c (value_of_variable): Check block_inlined_p.
gdb/doc/
* gdb.texinfo (Debugging Optimized Code): New chapter.
(Compiling for Debugging): Reference it. Move some
text to the new section.
gdb/testsuite/
* gdb.base/break.exp: Add an XFAIL for gcc/36748.
* gdb.cp/annota2.exp: Accept frames-invalid in more places.
* gdb.opt/Makefile.in (EXECUTABLES): Update.
* gdb.opt/clobbered-registers-O2.exp: Update to GPL v3.
* gdb.opt/inline-bt.c, gdb.opt/inline-bt.exp,
gdb.opt/inline-cmds.c, gdb.opt/inline-cmds.exp,
gdb.opt/inline-locals.c, gdb.opt/inline-locals.exp,
gdb.opt/inline-markers.c: New files.
* lib/gdb.exp (skip_inline_frame_tests): New function.
(skip_inline_var_tests): New function.
2009-06-28 08:20:24 +08:00
|
|
|
struct frame_info *next_frame;
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
|
|
|
|
/* Try to find the function start address. If we can't find it, we don't
|
|
|
|
bother searching for it -- with modern compilers this would be mostly
|
|
|
|
pointless anyway. Trust that we'll either have valid DWARF-2 CFI data
|
|
|
|
or else a valid backchain ... */
|
2008-05-01 08:18:27 +08:00
|
|
|
func = get_frame_func (this_frame);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
if (!func)
|
|
|
|
return 0;
|
2001-10-14 06:13:35 +08:00
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
/* Try to analyze the prologue. */
|
|
|
|
result = s390_analyze_prologue (gdbarch, func,
|
2008-05-01 08:18:27 +08:00
|
|
|
get_frame_pc (this_frame), &data);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
if (!result)
|
2001-10-14 06:13:35 +08:00
|
|
|
return 0;
|
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
/* If this was successful, we should have found the instruction that
|
2013-10-31 01:51:57 +08:00
|
|
|
sets the stack pointer register to the previous value of the stack
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
pointer minus the frame size. */
|
* Makefile.in (s390-tdep.o): Add dependency on $(prologue_value_h).
* s390-tdep.c: Include "prologue-value.h".
(struct prologue_value): Remove.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register): Remove.
(compute_x_addr): Remove, replace by ...
(s390_addr): ... this new function.
(struct s390_prologue_data): Use pv_t instead of prologue_value.
(s390_store, s390_load): Likewise.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_analyze_prologue): Likewise. Also, simplify and combine
several conditional statements.
2006-04-09 08:26:08 +08:00
|
|
|
if (!pv_is_register (*sp, S390_SP_REGNUM))
|
2001-10-14 06:13:35 +08:00
|
|
|
return 0;
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
|
2013-10-31 01:51:57 +08:00
|
|
|
/* A frame size of zero at this point can mean either a real
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
frameless function, or else a failure to find the prologue.
|
2013-10-31 01:51:57 +08:00
|
|
|
Perform some sanity checks to verify we really have a
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
frameless function. */
|
|
|
|
if (sp->k == 0)
|
2001-10-14 06:13:35 +08:00
|
|
|
{
|
2013-10-31 01:51:57 +08:00
|
|
|
/* If the next frame is a NORMAL_FRAME, this frame *cannot* have frame
|
|
|
|
size zero. This is only possible if the next frame is a sentinel
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
frame, a dummy frame, or a signal trampoline frame. */
|
2004-05-02 03:35:22 +08:00
|
|
|
/* FIXME: cagney/2004-05-01: This sanity check shouldn't be
|
|
|
|
needed, instead the code should simpliy rely on its
|
|
|
|
analysis. */
|
gdb/
* NEWS: Document inlined function support.
* Makefile.in (SFILES): Add inline-frame.c.
(COMMON_OBS): Add inline-frame.o.
* block.c (contained_in): Rewrite to use lexical nesting.
(block_linkage_function): Skip inlined function blocks.
(block_inlined_p): New.
* block.h (struct block): Update comment.
(block_inlined_p): New prototype.
* blockframe.c (get_frame_block): Handle inlined functions.
(get_frame_function): Do not use block_linkage_function.
(block_innermost_frame): Use get_frame_block and contained_in.
* breakpoint.c (watchpoint_check): Remove extra reinit_frame_cache.
Skip over inlined functions. Simplify epilogue check.
(bpstat_check_breakpoint_conditions): Use get_stack_frame_id.
Update comments.
(set_momentary_breakpoint): Only accept non-inlined frames.
(watch_command_1): Use frame_unwind_caller_pc and
frame_unwind_caller_id instead of get_prev_frame.
(until_break_command): Likewise. Use get_stack_frame_id.
* buildsym.c (end_symtab): Set SYMBOL_SYMTAB for block functions.
* dwarf2loc.c (dwarf_expr_frame_base): Use block_linkage_function.
* dwarf2read.c (process_die): Handle DW_TAG_inlined_subroutine.
(read_func_scope, new_symbol): Likewise. Handle arguments specially
for inlined functions without call site information.
(inherit_abstract_dies): Allow tag mismatch for inlined subroutines.
(die_specification): Treat DW_AT_abstract_origin as a specification.
(read_type_die): Handle DW_TAG_inlined_subroutine.
* frame-unwind.c (frame_unwind_init): Add inline_frame_unwind.
* frame.c (fprint_frame_id): Print inline depth.
(fprint_frame_type): Handle INLINE_FRAME and SENTINEL_FRAME.
(skip_inlined_frames, get_stack_frame_id): New.
(frame_unwind_caller_id): Use skip_inlined_frames.
(frame_id_inlined_p): New.
(frame_id_eq): Make the logic match the comments. Add inline_depth
check.
(frame_id_inner): Handle inlined functions.
(frame_unwind_pc): New function, copied from frame_unwind_caller_pc.
(frame_unwind_caller_pc): Use skip_inlined_frames and frame_unwind_pc.
(get_prev_frame_1): Check for inline frames. Split out frame
allocation to get_prev_frame_raw.
(get_prev_frame_raw): New function.
(get_prev_frame): Handle inline frames.
(get_frame_pc): Use frame_unwind_pc.
(get_frame_address_in_block): Skip inlined frames on both sides.
(pc_notcurrent): Delete.
(find_frame_sal): Rewrite to handle inline call sites. Use
get_frame_address_in_block.
(deprecated_update_frame_pc_hack): Make static.
* frame.h: Update comments.
(struct frame_id): Add inline_depth.
(enum frame_type): Add INLINE_FRAME.
(frame_id_inlined_p, get_stack_frame_id): New prototypes.
* gdbthread.h (struct thread_info): Add step_stack_frame_id field.
* infcmd.c (set_step_frame): New function.
(step_once): Use set_step_frame. Handle inlined functions.
(until_next_command): Use set_step_frame.
(finish_backward), finish_forward): Use get_stack_frame_id.
(finish_command): Support inlined functions.
* inferior.h (set_step_info): New prototype.
* infrun.c (RESUME_ALL): Use minus_one_ptid.
(clear_proceed_status): Clear step_stack_frame_id.
(init_wait_for_inferior): Call clear_inline_frame_state.
(init_execution_control_state): Make static.
(set_step_info): New function.
(init_thread_stepping_state): Do not set the symtab or line here.
(stepped_in_from): New function.
(handle_inferior_event): Handle inlined functions. Use set_step_info.
(insert_step_resume_breakpoint_at_frame): Use get_stack_frame_id.
(struct inferior_status): Add step_stack_frame_id.
(save_inferior_status, restore_inferior_status): Save and restore
step_stack_frame_id.
* inline-frame.c, inline-frame.h: New files.
* minsyms.c (prim_record_minimal_symbol_and_info): Use XCALLOC.
* regcache.c (regcache_write_pc): Call reinit_frame_cache.
* s390-tdep.c (s390_prologue_frame_unwind_cache): Handle INLINE_FRAME.
* stack.c (frame_show_address): New.
(print_frame_info, print_frame): Use it.
(find_frame_funname): Use get_frame_function. Handle inlined blocks.
(frame_info): Mark inlined functions.
(backtrace_command_1): Use get_current_user_frame.
(print_frame_local_vars, print_frame_label_vars): Update comments.
(return_command): Refuse inlined functions.
* symtab.c (lookup_symbol_aux_local): Stop at inlined function
boundaries.
(find_function_start_sal): Avoid inlined functions.
(completion_list_add_fields): New function.
(default_make_symbol_completion_list): Use it. Use block_static_block
and block_global_block. Check for inlined functions.
(skip_prologue_using_sal): Avoid line number comparison across
inlining.
* symtab.h (struct symbol): Add is_inlined.
(SYMBOL_INLINED): New.
* target.c (target_resume): Call clear_inline_frame_state.
* valops.c (value_of_variable): Check block_inlined_p.
gdb/doc/
* gdb.texinfo (Debugging Optimized Code): New chapter.
(Compiling for Debugging): Reference it. Move some
text to the new section.
gdb/testsuite/
* gdb.base/break.exp: Add an XFAIL for gcc/36748.
* gdb.cp/annota2.exp: Accept frames-invalid in more places.
* gdb.opt/Makefile.in (EXECUTABLES): Update.
* gdb.opt/clobbered-registers-O2.exp: Update to GPL v3.
* gdb.opt/inline-bt.c, gdb.opt/inline-bt.exp,
gdb.opt/inline-cmds.c, gdb.opt/inline-cmds.exp,
gdb.opt/inline-locals.c, gdb.opt/inline-locals.exp,
gdb.opt/inline-markers.c: New files.
* lib/gdb.exp (skip_inline_frame_tests): New function.
(skip_inline_var_tests): New function.
2009-06-28 08:20:24 +08:00
|
|
|
next_frame = get_next_frame (this_frame);
|
|
|
|
while (next_frame && get_frame_type (next_frame) == INLINE_FRAME)
|
|
|
|
next_frame = get_next_frame (next_frame);
|
|
|
|
if (next_frame
|
2008-05-01 08:18:27 +08:00
|
|
|
&& get_frame_type (get_next_frame (this_frame)) == NORMAL_FRAME)
|
2001-10-14 06:13:35 +08:00
|
|
|
return 0;
|
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
/* If we really have a frameless function, %r14 must be valid
|
|
|
|
-- in particular, it must point to a different function. */
|
2008-05-01 08:18:27 +08:00
|
|
|
reg = get_frame_register_unsigned (this_frame, S390_RETADDR_REGNUM);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
reg = gdbarch_addr_bits_remove (gdbarch, reg) - 1;
|
|
|
|
if (get_pc_function_start (reg) == func)
|
2001-10-14 06:13:35 +08:00
|
|
|
{
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
/* However, there is one case where it *is* valid for %r14
|
|
|
|
to point to the same function -- if this is a recursive
|
|
|
|
call, and we have stopped in the prologue *before* the
|
|
|
|
stack frame was allocated.
|
|
|
|
|
|
|
|
Recognize this case by looking ahead a bit ... */
|
2001-10-14 06:13:35 +08:00
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
struct s390_prologue_data data2;
|
* Makefile.in (s390-tdep.o): Add dependency on $(prologue_value_h).
* s390-tdep.c: Include "prologue-value.h".
(struct prologue_value): Remove.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register): Remove.
(compute_x_addr): Remove, replace by ...
(s390_addr): ... this new function.
(struct s390_prologue_data): Use pv_t instead of prologue_value.
(s390_store, s390_load): Likewise.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_analyze_prologue): Likewise. Also, simplify and combine
several conditional statements.
2006-04-09 08:26:08 +08:00
|
|
|
pv_t *sp = &data2.gpr[S390_SP_REGNUM - S390_R0_REGNUM];
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
|
|
|
|
if (!(s390_analyze_prologue (gdbarch, func, (CORE_ADDR)-1, &data2)
|
2013-10-31 01:51:57 +08:00
|
|
|
&& pv_is_register (*sp, S390_SP_REGNUM)
|
|
|
|
&& sp->k != 0))
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
return 0;
|
2001-10-14 06:13:35 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
/* OK, we've found valid prologue data. */
|
|
|
|
size = -sp->k;
|
2001-10-14 06:13:35 +08:00
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
/* If the frame pointer originally also holds the same value
|
|
|
|
as the stack pointer, we're probably using it. If it holds
|
|
|
|
some other value -- even a constant offset -- it is most
|
|
|
|
likely used as temp register. */
|
* Makefile.in (s390-tdep.o): Add dependency on $(prologue_value_h).
* s390-tdep.c: Include "prologue-value.h".
(struct prologue_value): Remove.
(pv_set_to_unknown, pv_set_to_constant, pv_set_to_register,
pv_constant_last, pv_add, pv_add_constant, pv_subtract,
pv_logical_and, pv_is_identical, pv_is_register): Remove.
(compute_x_addr): Remove, replace by ...
(s390_addr): ... this new function.
(struct s390_prologue_data): Use pv_t instead of prologue_value.
(s390_store, s390_load): Likewise.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_analyze_prologue): Likewise. Also, simplify and combine
several conditional statements.
2006-04-09 08:26:08 +08:00
|
|
|
if (pv_is_identical (*sp, *fp))
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
frame_pointer = S390_FRAME_REGNUM;
|
|
|
|
else
|
|
|
|
frame_pointer = S390_SP_REGNUM;
|
|
|
|
|
2013-10-31 01:51:57 +08:00
|
|
|
/* If we've detected a function with stack frame, we'll still have to
|
|
|
|
treat it as frameless if we're currently within the function epilog
|
2011-01-12 05:53:25 +08:00
|
|
|
code at a point where the frame pointer has already been restored.
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
This can only happen in an innermost frame. */
|
2004-05-02 03:35:22 +08:00
|
|
|
/* FIXME: cagney/2004-05-01: This sanity check shouldn't be needed,
|
|
|
|
instead the code should simpliy rely on its analysis. */
|
gdb/
* NEWS: Document inlined function support.
* Makefile.in (SFILES): Add inline-frame.c.
(COMMON_OBS): Add inline-frame.o.
* block.c (contained_in): Rewrite to use lexical nesting.
(block_linkage_function): Skip inlined function blocks.
(block_inlined_p): New.
* block.h (struct block): Update comment.
(block_inlined_p): New prototype.
* blockframe.c (get_frame_block): Handle inlined functions.
(get_frame_function): Do not use block_linkage_function.
(block_innermost_frame): Use get_frame_block and contained_in.
* breakpoint.c (watchpoint_check): Remove extra reinit_frame_cache.
Skip over inlined functions. Simplify epilogue check.
(bpstat_check_breakpoint_conditions): Use get_stack_frame_id.
Update comments.
(set_momentary_breakpoint): Only accept non-inlined frames.
(watch_command_1): Use frame_unwind_caller_pc and
frame_unwind_caller_id instead of get_prev_frame.
(until_break_command): Likewise. Use get_stack_frame_id.
* buildsym.c (end_symtab): Set SYMBOL_SYMTAB for block functions.
* dwarf2loc.c (dwarf_expr_frame_base): Use block_linkage_function.
* dwarf2read.c (process_die): Handle DW_TAG_inlined_subroutine.
(read_func_scope, new_symbol): Likewise. Handle arguments specially
for inlined functions without call site information.
(inherit_abstract_dies): Allow tag mismatch for inlined subroutines.
(die_specification): Treat DW_AT_abstract_origin as a specification.
(read_type_die): Handle DW_TAG_inlined_subroutine.
* frame-unwind.c (frame_unwind_init): Add inline_frame_unwind.
* frame.c (fprint_frame_id): Print inline depth.
(fprint_frame_type): Handle INLINE_FRAME and SENTINEL_FRAME.
(skip_inlined_frames, get_stack_frame_id): New.
(frame_unwind_caller_id): Use skip_inlined_frames.
(frame_id_inlined_p): New.
(frame_id_eq): Make the logic match the comments. Add inline_depth
check.
(frame_id_inner): Handle inlined functions.
(frame_unwind_pc): New function, copied from frame_unwind_caller_pc.
(frame_unwind_caller_pc): Use skip_inlined_frames and frame_unwind_pc.
(get_prev_frame_1): Check for inline frames. Split out frame
allocation to get_prev_frame_raw.
(get_prev_frame_raw): New function.
(get_prev_frame): Handle inline frames.
(get_frame_pc): Use frame_unwind_pc.
(get_frame_address_in_block): Skip inlined frames on both sides.
(pc_notcurrent): Delete.
(find_frame_sal): Rewrite to handle inline call sites. Use
get_frame_address_in_block.
(deprecated_update_frame_pc_hack): Make static.
* frame.h: Update comments.
(struct frame_id): Add inline_depth.
(enum frame_type): Add INLINE_FRAME.
(frame_id_inlined_p, get_stack_frame_id): New prototypes.
* gdbthread.h (struct thread_info): Add step_stack_frame_id field.
* infcmd.c (set_step_frame): New function.
(step_once): Use set_step_frame. Handle inlined functions.
(until_next_command): Use set_step_frame.
(finish_backward), finish_forward): Use get_stack_frame_id.
(finish_command): Support inlined functions.
* inferior.h (set_step_info): New prototype.
* infrun.c (RESUME_ALL): Use minus_one_ptid.
(clear_proceed_status): Clear step_stack_frame_id.
(init_wait_for_inferior): Call clear_inline_frame_state.
(init_execution_control_state): Make static.
(set_step_info): New function.
(init_thread_stepping_state): Do not set the symtab or line here.
(stepped_in_from): New function.
(handle_inferior_event): Handle inlined functions. Use set_step_info.
(insert_step_resume_breakpoint_at_frame): Use get_stack_frame_id.
(struct inferior_status): Add step_stack_frame_id.
(save_inferior_status, restore_inferior_status): Save and restore
step_stack_frame_id.
* inline-frame.c, inline-frame.h: New files.
* minsyms.c (prim_record_minimal_symbol_and_info): Use XCALLOC.
* regcache.c (regcache_write_pc): Call reinit_frame_cache.
* s390-tdep.c (s390_prologue_frame_unwind_cache): Handle INLINE_FRAME.
* stack.c (frame_show_address): New.
(print_frame_info, print_frame): Use it.
(find_frame_funname): Use get_frame_function. Handle inlined blocks.
(frame_info): Mark inlined functions.
(backtrace_command_1): Use get_current_user_frame.
(print_frame_local_vars, print_frame_label_vars): Update comments.
(return_command): Refuse inlined functions.
* symtab.c (lookup_symbol_aux_local): Stop at inlined function
boundaries.
(find_function_start_sal): Avoid inlined functions.
(completion_list_add_fields): New function.
(default_make_symbol_completion_list): Use it. Use block_static_block
and block_global_block. Check for inlined functions.
(skip_prologue_using_sal): Avoid line number comparison across
inlining.
* symtab.h (struct symbol): Add is_inlined.
(SYMBOL_INLINED): New.
* target.c (target_resume): Call clear_inline_frame_state.
* valops.c (value_of_variable): Check block_inlined_p.
gdb/doc/
* gdb.texinfo (Debugging Optimized Code): New chapter.
(Compiling for Debugging): Reference it. Move some
text to the new section.
gdb/testsuite/
* gdb.base/break.exp: Add an XFAIL for gcc/36748.
* gdb.cp/annota2.exp: Accept frames-invalid in more places.
* gdb.opt/Makefile.in (EXECUTABLES): Update.
* gdb.opt/clobbered-registers-O2.exp: Update to GPL v3.
* gdb.opt/inline-bt.c, gdb.opt/inline-bt.exp,
gdb.opt/inline-cmds.c, gdb.opt/inline-cmds.exp,
gdb.opt/inline-locals.c, gdb.opt/inline-locals.exp,
gdb.opt/inline-markers.c: New files.
* lib/gdb.exp (skip_inline_frame_tests): New function.
(skip_inline_var_tests): New function.
2009-06-28 08:20:24 +08:00
|
|
|
next_frame = get_next_frame (this_frame);
|
|
|
|
while (next_frame && get_frame_type (next_frame) == INLINE_FRAME)
|
|
|
|
next_frame = get_next_frame (next_frame);
|
2008-05-01 08:18:27 +08:00
|
|
|
if (size > 0
|
gdb/
* NEWS: Document inlined function support.
* Makefile.in (SFILES): Add inline-frame.c.
(COMMON_OBS): Add inline-frame.o.
* block.c (contained_in): Rewrite to use lexical nesting.
(block_linkage_function): Skip inlined function blocks.
(block_inlined_p): New.
* block.h (struct block): Update comment.
(block_inlined_p): New prototype.
* blockframe.c (get_frame_block): Handle inlined functions.
(get_frame_function): Do not use block_linkage_function.
(block_innermost_frame): Use get_frame_block and contained_in.
* breakpoint.c (watchpoint_check): Remove extra reinit_frame_cache.
Skip over inlined functions. Simplify epilogue check.
(bpstat_check_breakpoint_conditions): Use get_stack_frame_id.
Update comments.
(set_momentary_breakpoint): Only accept non-inlined frames.
(watch_command_1): Use frame_unwind_caller_pc and
frame_unwind_caller_id instead of get_prev_frame.
(until_break_command): Likewise. Use get_stack_frame_id.
* buildsym.c (end_symtab): Set SYMBOL_SYMTAB for block functions.
* dwarf2loc.c (dwarf_expr_frame_base): Use block_linkage_function.
* dwarf2read.c (process_die): Handle DW_TAG_inlined_subroutine.
(read_func_scope, new_symbol): Likewise. Handle arguments specially
for inlined functions without call site information.
(inherit_abstract_dies): Allow tag mismatch for inlined subroutines.
(die_specification): Treat DW_AT_abstract_origin as a specification.
(read_type_die): Handle DW_TAG_inlined_subroutine.
* frame-unwind.c (frame_unwind_init): Add inline_frame_unwind.
* frame.c (fprint_frame_id): Print inline depth.
(fprint_frame_type): Handle INLINE_FRAME and SENTINEL_FRAME.
(skip_inlined_frames, get_stack_frame_id): New.
(frame_unwind_caller_id): Use skip_inlined_frames.
(frame_id_inlined_p): New.
(frame_id_eq): Make the logic match the comments. Add inline_depth
check.
(frame_id_inner): Handle inlined functions.
(frame_unwind_pc): New function, copied from frame_unwind_caller_pc.
(frame_unwind_caller_pc): Use skip_inlined_frames and frame_unwind_pc.
(get_prev_frame_1): Check for inline frames. Split out frame
allocation to get_prev_frame_raw.
(get_prev_frame_raw): New function.
(get_prev_frame): Handle inline frames.
(get_frame_pc): Use frame_unwind_pc.
(get_frame_address_in_block): Skip inlined frames on both sides.
(pc_notcurrent): Delete.
(find_frame_sal): Rewrite to handle inline call sites. Use
get_frame_address_in_block.
(deprecated_update_frame_pc_hack): Make static.
* frame.h: Update comments.
(struct frame_id): Add inline_depth.
(enum frame_type): Add INLINE_FRAME.
(frame_id_inlined_p, get_stack_frame_id): New prototypes.
* gdbthread.h (struct thread_info): Add step_stack_frame_id field.
* infcmd.c (set_step_frame): New function.
(step_once): Use set_step_frame. Handle inlined functions.
(until_next_command): Use set_step_frame.
(finish_backward), finish_forward): Use get_stack_frame_id.
(finish_command): Support inlined functions.
* inferior.h (set_step_info): New prototype.
* infrun.c (RESUME_ALL): Use minus_one_ptid.
(clear_proceed_status): Clear step_stack_frame_id.
(init_wait_for_inferior): Call clear_inline_frame_state.
(init_execution_control_state): Make static.
(set_step_info): New function.
(init_thread_stepping_state): Do not set the symtab or line here.
(stepped_in_from): New function.
(handle_inferior_event): Handle inlined functions. Use set_step_info.
(insert_step_resume_breakpoint_at_frame): Use get_stack_frame_id.
(struct inferior_status): Add step_stack_frame_id.
(save_inferior_status, restore_inferior_status): Save and restore
step_stack_frame_id.
* inline-frame.c, inline-frame.h: New files.
* minsyms.c (prim_record_minimal_symbol_and_info): Use XCALLOC.
* regcache.c (regcache_write_pc): Call reinit_frame_cache.
* s390-tdep.c (s390_prologue_frame_unwind_cache): Handle INLINE_FRAME.
* stack.c (frame_show_address): New.
(print_frame_info, print_frame): Use it.
(find_frame_funname): Use get_frame_function. Handle inlined blocks.
(frame_info): Mark inlined functions.
(backtrace_command_1): Use get_current_user_frame.
(print_frame_local_vars, print_frame_label_vars): Update comments.
(return_command): Refuse inlined functions.
* symtab.c (lookup_symbol_aux_local): Stop at inlined function
boundaries.
(find_function_start_sal): Avoid inlined functions.
(completion_list_add_fields): New function.
(default_make_symbol_completion_list): Use it. Use block_static_block
and block_global_block. Check for inlined functions.
(skip_prologue_using_sal): Avoid line number comparison across
inlining.
* symtab.h (struct symbol): Add is_inlined.
(SYMBOL_INLINED): New.
* target.c (target_resume): Call clear_inline_frame_state.
* valops.c (value_of_variable): Check block_inlined_p.
gdb/doc/
* gdb.texinfo (Debugging Optimized Code): New chapter.
(Compiling for Debugging): Reference it. Move some
text to the new section.
gdb/testsuite/
* gdb.base/break.exp: Add an XFAIL for gcc/36748.
* gdb.cp/annota2.exp: Accept frames-invalid in more places.
* gdb.opt/Makefile.in (EXECUTABLES): Update.
* gdb.opt/clobbered-registers-O2.exp: Update to GPL v3.
* gdb.opt/inline-bt.c, gdb.opt/inline-bt.exp,
gdb.opt/inline-cmds.c, gdb.opt/inline-cmds.exp,
gdb.opt/inline-locals.c, gdb.opt/inline-locals.exp,
gdb.opt/inline-markers.c: New files.
* lib/gdb.exp (skip_inline_frame_tests): New function.
(skip_inline_var_tests): New function.
2009-06-28 08:20:24 +08:00
|
|
|
&& (next_frame == NULL
|
2008-05-01 08:18:27 +08:00
|
|
|
|| get_frame_type (get_next_frame (this_frame)) != NORMAL_FRAME))
|
2001-10-14 06:13:35 +08:00
|
|
|
{
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
/* See the comment in s390_in_function_epilogue_p on why this is
|
|
|
|
not completely reliable ... */
|
2008-05-01 08:18:27 +08:00
|
|
|
if (s390_in_function_epilogue_p (gdbarch, get_frame_pc (this_frame)))
|
2001-10-14 06:13:35 +08:00
|
|
|
{
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
memset (&data, 0, sizeof (data));
|
|
|
|
size = 0;
|
|
|
|
frame_pointer = S390_SP_REGNUM;
|
2001-10-14 06:13:35 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
/* Once we know the frame register and the frame size, we can unwind
|
|
|
|
the current value of the frame register from the next frame, and
|
2013-10-31 01:51:57 +08:00
|
|
|
add back the frame size to arrive that the previous frame's
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
stack pointer value. */
|
2008-05-01 08:18:27 +08:00
|
|
|
prev_sp = get_frame_register_unsigned (this_frame, frame_pointer) + size;
|
2004-10-24 00:31:23 +08:00
|
|
|
cfa = prev_sp + 16*word_size + 32;
|
2001-10-14 06:13:35 +08:00
|
|
|
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
/* Set up ABI call-saved/call-clobbered registers. */
|
|
|
|
for (i = 0; i < S390_NUM_REGS; i++)
|
|
|
|
if (!s390_register_call_saved (gdbarch, i))
|
|
|
|
trad_frame_set_unknown (info->saved_regs, i);
|
|
|
|
|
|
|
|
/* CC is always call-clobbered. */
|
2011-12-01 00:06:55 +08:00
|
|
|
trad_frame_set_unknown (info->saved_regs, S390_PSWM_REGNUM);
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
|
2004-10-24 00:31:23 +08:00
|
|
|
/* Record the addresses of all register spill slots the prologue parser
|
|
|
|
has recognized. Consider only registers defined as call-saved by the
|
|
|
|
ABI; for call-clobbered registers the parser may have recognized
|
|
|
|
spurious stores. */
|
2001-10-14 06:13:35 +08:00
|
|
|
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
for (i = 0; i < 16; i++)
|
|
|
|
if (s390_register_call_saved (gdbarch, S390_R0_REGNUM + i)
|
|
|
|
&& data.gpr_slot[i] != 0)
|
2004-10-24 00:31:23 +08:00
|
|
|
info->saved_regs[S390_R0_REGNUM + i].addr = cfa - data.gpr_slot[i];
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
for (i = 0; i < 16; i++)
|
|
|
|
if (s390_register_call_saved (gdbarch, S390_F0_REGNUM + i)
|
|
|
|
&& data.fpr_slot[i] != 0)
|
|
|
|
info->saved_regs[S390_F0_REGNUM + i].addr = cfa - data.fpr_slot[i];
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
|
|
|
|
/* Function return will set PC to %r14. */
|
2011-12-01 00:06:55 +08:00
|
|
|
info->saved_regs[S390_PSWA_REGNUM] = info->saved_regs[S390_RETADDR_REGNUM];
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
|
|
|
|
/* In frameless functions, we unwind simply by moving the return
|
|
|
|
address to the PC. However, if we actually stored to the
|
|
|
|
save area, use that -- we might only think the function frameless
|
|
|
|
because we're in the middle of the prologue ... */
|
|
|
|
if (size == 0
|
2011-12-01 00:06:55 +08:00
|
|
|
&& !trad_frame_addr_p (info->saved_regs, S390_PSWA_REGNUM))
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
{
|
2011-12-01 00:06:55 +08:00
|
|
|
info->saved_regs[S390_PSWA_REGNUM].realreg = S390_RETADDR_REGNUM;
|
2001-10-14 06:13:35 +08:00
|
|
|
}
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
|
|
|
|
/* Another sanity check: unless this is a frameless function,
|
|
|
|
we should have found spill slots for SP and PC.
|
|
|
|
If not, we cannot unwind further -- this happens e.g. in
|
|
|
|
libc's thread_start routine. */
|
|
|
|
if (size > 0)
|
2001-10-14 06:13:35 +08:00
|
|
|
{
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
if (!trad_frame_addr_p (info->saved_regs, S390_SP_REGNUM)
|
2011-12-01 00:06:55 +08:00
|
|
|
|| !trad_frame_addr_p (info->saved_regs, S390_PSWA_REGNUM))
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
prev_sp = -1;
|
2001-10-14 06:13:35 +08:00
|
|
|
}
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
|
|
|
|
/* We use the current value of the frame register as local_base,
|
|
|
|
and the top of the register save area as frame_base. */
|
|
|
|
if (prev_sp != -1)
|
|
|
|
{
|
|
|
|
info->frame_base = prev_sp + 16*word_size + 32;
|
|
|
|
info->local_base = prev_sp - size;
|
|
|
|
}
|
|
|
|
|
|
|
|
info->func = func;
|
|
|
|
return 1;
|
2001-10-14 06:13:35 +08:00
|
|
|
}
|
|
|
|
|
2003-06-11 21:16:30 +08:00
|
|
|
static void
|
2008-05-01 08:18:27 +08:00
|
|
|
s390_backchain_frame_unwind_cache (struct frame_info *this_frame,
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
struct s390_unwind_cache *info)
|
2001-10-14 06:13:35 +08:00
|
|
|
{
|
2008-05-01 08:18:27 +08:00
|
|
|
struct gdbarch *gdbarch = get_frame_arch (this_frame);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
int word_size = gdbarch_ptr_bit (gdbarch) / 8;
|
* 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
|
|
|
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
CORE_ADDR backchain;
|
|
|
|
ULONGEST reg;
|
|
|
|
LONGEST sp;
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
int i;
|
|
|
|
|
|
|
|
/* Set up ABI call-saved/call-clobbered registers. */
|
|
|
|
for (i = 0; i < S390_NUM_REGS; i++)
|
|
|
|
if (!s390_register_call_saved (gdbarch, i))
|
|
|
|
trad_frame_set_unknown (info->saved_regs, i);
|
|
|
|
|
|
|
|
/* CC is always call-clobbered. */
|
2011-12-01 00:06:55 +08:00
|
|
|
trad_frame_set_unknown (info->saved_regs, S390_PSWM_REGNUM);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
|
|
|
|
/* Get the backchain. */
|
2008-05-01 08:18:27 +08:00
|
|
|
reg = get_frame_register_unsigned (this_frame, S390_SP_REGNUM);
|
* 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
|
|
|
backchain = read_memory_unsigned_integer (reg, word_size, byte_order);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
|
|
|
|
/* A zero backchain terminates the frame chain. As additional
|
|
|
|
sanity check, let's verify that the spill slot for SP in the
|
|
|
|
save area pointed to by the backchain in fact links back to
|
|
|
|
the save area. */
|
|
|
|
if (backchain != 0
|
* 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
|
|
|
&& safe_read_memory_integer (backchain + 15*word_size,
|
|
|
|
word_size, byte_order, &sp)
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
&& (CORE_ADDR)sp == backchain)
|
|
|
|
{
|
|
|
|
/* We don't know which registers were saved, but it will have
|
2013-10-31 01:51:57 +08:00
|
|
|
to be at least %r14 and %r15. This will allow us to continue
|
|
|
|
unwinding, but other prev-frame registers may be incorrect ... */
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
info->saved_regs[S390_SP_REGNUM].addr = backchain + 15*word_size;
|
|
|
|
info->saved_regs[S390_RETADDR_REGNUM].addr = backchain + 14*word_size;
|
|
|
|
|
|
|
|
/* Function return will set PC to %r14. */
|
2011-12-01 00:06:55 +08:00
|
|
|
info->saved_regs[S390_PSWA_REGNUM]
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
= info->saved_regs[S390_RETADDR_REGNUM];
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
|
|
|
|
/* We use the current value of the frame register as local_base,
|
2013-10-31 01:51:57 +08:00
|
|
|
and the top of the register save area as frame_base. */
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
info->frame_base = backchain + 16*word_size + 32;
|
|
|
|
info->local_base = reg;
|
|
|
|
}
|
|
|
|
|
2008-05-01 08:18:27 +08:00
|
|
|
info->func = get_frame_pc (this_frame);
|
2001-10-14 06:13:35 +08:00
|
|
|
}
|
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
static struct s390_unwind_cache *
|
2008-05-01 08:18:27 +08:00
|
|
|
s390_frame_unwind_cache (struct frame_info *this_frame,
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
void **this_prologue_cache)
|
|
|
|
{
|
Fix gdb.trace/mi-traceframe-changed.exp on s390.
The test fails on s390 with:
-trace-find frame-number 0^M
&"PC not available\n"^M
^done,found="1",tracepoint="1",traceframe="0",frame={level="-1",addr="<unavailable>",func="??",args=[]}^M
(gdb) ^M
FAIL: gdb.trace/mi-traceframe-changed.exp: tfile: -trace-find frame-number 0
tfile knows to infer the PC from the tracepoint's address if the PC
wasn't collected (tfile_fetch_registers) but, that only works on
targets whose PC register is a raw register, and on s390, the PC
register is a pseudo register.
But even if GDB doesn't know how to infer the value of PC, saying the
current frame is level -1 is a bug:
^done,found="1",tracepoint="1",traceframe="0",frame={level="-1",addr="<unavailable>",func="??",args=[]}^M
^^^^^^^^^
'-1' is the level of the sentinel frame, which should never be visible.
This is caused by the s390's heuristic unwinder accepting the frame
(the fallback heuristic unwinders _always_ accept the frame), but then
the unwind->this_id method throws that "PC not available\n" error.
IOW, the s390's heuristic unwinder was never adjusted to handle
unavailable register values gracefully, which can happen with e.g., a
trimmed core file too.
This is just the minimal necessary for
<unavailable> frames, which at least gets us:
(gdb) tfind
Found trace frame 0, tracepoint 1
#0 <unavailable> in ?? ()
That is, frame #0 instead of -1.
We could get better info out of "info frame" (this patch makes us show
"outermost"), but this change would still be necessary.
gdb/
2014-01-16 Pedro Alves <palves@redhat.com>
* s390-linux-tdep.c (s390_frame_unwind_cache): Swallow
NOT_AVAILABLE_ERROR errors while parsing the prologue or reading
the backchain.
2014-01-17 01:43:26 +08:00
|
|
|
volatile struct gdb_exception ex;
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
struct s390_unwind_cache *info;
|
Fix gdb.trace/mi-traceframe-changed.exp on s390.
The test fails on s390 with:
-trace-find frame-number 0^M
&"PC not available\n"^M
^done,found="1",tracepoint="1",traceframe="0",frame={level="-1",addr="<unavailable>",func="??",args=[]}^M
(gdb) ^M
FAIL: gdb.trace/mi-traceframe-changed.exp: tfile: -trace-find frame-number 0
tfile knows to infer the PC from the tracepoint's address if the PC
wasn't collected (tfile_fetch_registers) but, that only works on
targets whose PC register is a raw register, and on s390, the PC
register is a pseudo register.
But even if GDB doesn't know how to infer the value of PC, saying the
current frame is level -1 is a bug:
^done,found="1",tracepoint="1",traceframe="0",frame={level="-1",addr="<unavailable>",func="??",args=[]}^M
^^^^^^^^^
'-1' is the level of the sentinel frame, which should never be visible.
This is caused by the s390's heuristic unwinder accepting the frame
(the fallback heuristic unwinders _always_ accept the frame), but then
the unwind->this_id method throws that "PC not available\n" error.
IOW, the s390's heuristic unwinder was never adjusted to handle
unavailable register values gracefully, which can happen with e.g., a
trimmed core file too.
This is just the minimal necessary for
<unavailable> frames, which at least gets us:
(gdb) tfind
Found trace frame 0, tracepoint 1
#0 <unavailable> in ?? ()
That is, frame #0 instead of -1.
We could get better info out of "info frame" (this patch makes us show
"outermost"), but this change would still be necessary.
gdb/
2014-01-16 Pedro Alves <palves@redhat.com>
* s390-linux-tdep.c (s390_frame_unwind_cache): Swallow
NOT_AVAILABLE_ERROR errors while parsing the prologue or reading
the backchain.
2014-01-17 01:43:26 +08:00
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
if (*this_prologue_cache)
|
|
|
|
return *this_prologue_cache;
|
|
|
|
|
|
|
|
info = FRAME_OBSTACK_ZALLOC (struct s390_unwind_cache);
|
|
|
|
*this_prologue_cache = info;
|
2008-05-01 08:18:27 +08:00
|
|
|
info->saved_regs = trad_frame_alloc_saved_regs (this_frame);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
info->func = -1;
|
|
|
|
info->frame_base = -1;
|
|
|
|
info->local_base = -1;
|
|
|
|
|
Fix gdb.trace/mi-traceframe-changed.exp on s390.
The test fails on s390 with:
-trace-find frame-number 0^M
&"PC not available\n"^M
^done,found="1",tracepoint="1",traceframe="0",frame={level="-1",addr="<unavailable>",func="??",args=[]}^M
(gdb) ^M
FAIL: gdb.trace/mi-traceframe-changed.exp: tfile: -trace-find frame-number 0
tfile knows to infer the PC from the tracepoint's address if the PC
wasn't collected (tfile_fetch_registers) but, that only works on
targets whose PC register is a raw register, and on s390, the PC
register is a pseudo register.
But even if GDB doesn't know how to infer the value of PC, saying the
current frame is level -1 is a bug:
^done,found="1",tracepoint="1",traceframe="0",frame={level="-1",addr="<unavailable>",func="??",args=[]}^M
^^^^^^^^^
'-1' is the level of the sentinel frame, which should never be visible.
This is caused by the s390's heuristic unwinder accepting the frame
(the fallback heuristic unwinders _always_ accept the frame), but then
the unwind->this_id method throws that "PC not available\n" error.
IOW, the s390's heuristic unwinder was never adjusted to handle
unavailable register values gracefully, which can happen with e.g., a
trimmed core file too.
This is just the minimal necessary for
<unavailable> frames, which at least gets us:
(gdb) tfind
Found trace frame 0, tracepoint 1
#0 <unavailable> in ?? ()
That is, frame #0 instead of -1.
We could get better info out of "info frame" (this patch makes us show
"outermost"), but this change would still be necessary.
gdb/
2014-01-16 Pedro Alves <palves@redhat.com>
* s390-linux-tdep.c (s390_frame_unwind_cache): Swallow
NOT_AVAILABLE_ERROR errors while parsing the prologue or reading
the backchain.
2014-01-17 01:43:26 +08:00
|
|
|
TRY_CATCH (ex, RETURN_MASK_ERROR)
|
|
|
|
{
|
|
|
|
/* Try to use prologue analysis to fill the unwind cache.
|
|
|
|
If this fails, fall back to reading the stack backchain. */
|
|
|
|
if (!s390_prologue_frame_unwind_cache (this_frame, info))
|
|
|
|
s390_backchain_frame_unwind_cache (this_frame, info);
|
|
|
|
}
|
|
|
|
if (ex.reason < 0 && ex.error != NOT_AVAILABLE_ERROR)
|
|
|
|
throw_exception (ex);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
|
|
|
|
return info;
|
|
|
|
}
|
2001-10-14 06:13:35 +08:00
|
|
|
|
2003-06-11 21:16:30 +08:00
|
|
|
static void
|
2008-05-01 08:18:27 +08:00
|
|
|
s390_frame_this_id (struct frame_info *this_frame,
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
void **this_prologue_cache,
|
|
|
|
struct frame_id *this_id)
|
2001-10-14 06:13:35 +08:00
|
|
|
{
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
struct s390_unwind_cache *info
|
2008-05-01 08:18:27 +08:00
|
|
|
= s390_frame_unwind_cache (this_frame, this_prologue_cache);
|
2001-10-14 06:13:35 +08:00
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
if (info->frame_base == -1)
|
|
|
|
return;
|
2001-10-14 06:13:35 +08:00
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
*this_id = frame_id_build (info->frame_base, info->func);
|
2001-10-14 06:13:35 +08:00
|
|
|
}
|
|
|
|
|
2008-05-01 08:18:27 +08:00
|
|
|
static struct value *
|
|
|
|
s390_frame_prev_register (struct frame_info *this_frame,
|
|
|
|
void **this_prologue_cache, int regnum)
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
{
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
struct gdbarch *gdbarch = get_frame_arch (this_frame);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
struct s390_unwind_cache *info
|
2008-05-01 08:18:27 +08:00
|
|
|
= s390_frame_unwind_cache (this_frame, this_prologue_cache);
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
|
2011-12-01 00:06:55 +08:00
|
|
|
return s390_trad_frame_prev_register (this_frame, info->saved_regs, regnum);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
static const struct frame_unwind s390_frame_unwind = {
|
|
|
|
NORMAL_FRAME,
|
gdb/
* frame.c (frame_unwind_register): Throw an error if unwinding the
register failed.
* get_prev_frame_1 (get_prev_frame_1): Ask the unwinder if there's
an unwind stop reason.
(frame_stop_reason_string): Handle UNWIND_UNAVAILABLE.
* frame.h (enum unwind_stop_reason) <UNWIND_OUTERMOST,
UNWIND_UNAVAILABLE>: New.
* inline-frame.c (inline_frame_unwind): Install
default_frame_unwind_stop_reason.
* frame-unwind.c: Include "exceptions.h".
(frame_unwind_find_by_frame): Swallow NOT_AVAILABLE_ERROR errors.
(default_frame_unwind_stop_reason): New.
* frame-unwind.h (frame_unwind_stop_reason_ftype): New typedef.
(default_frame_unwind_stop_reason): Declare.
(struct frame_unwind) <stop_reason>: New function pointer.
* dummy-frame.c: Install default_frame_unwind_stop_reason.
* dwarf2-frame.c: Include exceptions.h.
(struct dwarf2_frame_cache) <unavailable_retaddr>: New field.
(dwarf2_frame_cache): Swallow NOT_AVAILABLE_ERROR errors when
computing the CFA. If such an error was thrown, set
unavailable_retaddr.
(dwarf2_frame_unwind_stop_reason): New.
(dwarf2_frame_this_id): Don't build a frame id if the CFA was
unavailable.
(dwarf2_frame_unwind): Install dwarf2_frame_unwind_stop_reason.
(dwarf2_signal_frame_unwind): Ditto.
* amd64-tdep.c: Include "exceptions.h".
(struct amd64_frame_cache): New field "base_p".
(amd64_init_frame_cache): Clear it.
(amd64_frame_cache_1): New, factored out from amd64_frame_cache.
Avoid reading registers with functions that throw if the register
is not necessary to compute the frame base.
(amd64_frame_cache): Reimplement wrapping amd64_frame_cache_1, and
swallowing NOT_AVAILABLE_ERROR.
(amd64_frame_unwind_stop_reason): New.
(amd64_frame_this_id): Don't build a frame id if the frame base
was unavailable.
(amd64_frame_unwind): Install amd64_frame_unwind_stop_reason.
(amd64_sigtramp_frame_cache): Swallow NOT_AVAILABLE_ERROR, and set
base_p if the frame base was computable.
(amd64_sigtramp_frame_unwind_stop_reason): New.
(amd64_sigtramp_frame_this_id): Don't build a frame id if the
frame base was unavailable.
(amd64_sigtramp_frame_unwind): Install
amd64_sigtramp_frame_unwind_stop_reason.
(amd64_epilogue_frame_cache): Swallow NOT_AVAILABLE_ERROR, and set
base_p if the frame base was computable.
(amd64_epilogue_frame_unwind_stop_reason): New.
(amd64_epilogue_frame_this_id): Don't build a frame id if the
frame base was unavailable.
(amd64_epilogue_frame_unwind): Install
amd64_epilogue_frame_unwind_stop_reason.
* i386-tdep.c: Include "exceptions.h".
(struct i386_frame_cache): New field "base_p".
(i386_init_frame_cache): Clear it.
(i386_frame_cache_1): New, factored out from amd64_frame_cache.
Avoid reading registers with functions that throw if the register
is not necessary to compute the frame base.
(i386_frame_cache): Reimplement wrapping amd64_frame_cache_1, and
swallowing NOT_AVAILABLE_ERROR.
(i386_frame_unwind_stop_reason): New.
(i386_frame_this_id): Don't build a frame id if the frame base was
unavailable.
(i386_frame_prev_register): Handle unavailable SP.
(i386_frame_unwind): Install i386_frame_unwind_stop_reason.
(i386_epilogue_frame_cache): Swallow NOT_AVAILABLE_ERROR, and set
base_p if the frame base was computable.
(i386_epilogue_frame_unwind_stop_reason): New.
(i386_epilogue_frame_this_id): Don't build a frame id if the frame
base was unavailable.
(i386_epilogue_frame_unwind): Install
i386_epilogue_frame_unwind_stop_reason.
(i386_sigtramp_frame_cache): Swallow NOT_AVAILABLE_ERROR, and set
base_p if the frame base was computable.
(i386_sigtramp_frame_unwind_stop_reason): New.
(i386_sigtramp_frame_this_id): Don't build a frame id if the frame
base was unavailable.
(i386_sigtramp_frame_unwind): Install
i386_sigtramp_frame_unwind_stop_reason.
* sentinel-frame.c (sentinel_frame_prev_register): Use the value
type's size, not the register's.
(sentinel_frame_unwind): Install default_frame_unwind_stop_reason.
* alpha-mdebug-tdep.c (alpha_mdebug_frame_unwind): Install
default_frame_unwind_stop_reason.
* alpha-tdep.c (alpha_sigtramp_frame_unwind)
(alpha_heuristic_frame_unwind): Ditto.
* amd64obsd-tdep.c (amd64obsd_trapframe_unwind): Ditto.
* arm-tdep.c (arm_prologue_unwind, arm_stub_unwind): Ditto.
* avr-tdep.c (avr_frame_unwind): Ditto.
* cris-tdep.c (cris_sigtramp_frame_unwind, cris_frame_unwind):
Ditto.
* frv-linux-tdep.c (frv_linux_sigtramp_frame_unwind): Ditto.
* frv-tdep.c (frv_frame_unwind): Ditto.
* h8300-tdep.c (h8300_frame_unwind): Ditto.
* hppa-hpux-tdep.c (hppa_hpux_sigtramp_frame_unwind): Ditto.
* hppa-linux-tdep.c (hppa_linux_sigtramp_frame_unwind): Ditto.
* hppa-tdep.c (hppa_frame_unwind, hppa_fallback_frame_unwind)
(hppa_stub_frame_unwind): Ditto.
* i386obsd-tdep.c (i386obsd_trapframe_unwind): Ditto.
* ia64-tdep.c (ia64_frame_unwind, ia64_sigtramp_frame_unwind)
(ia64_libunwind_frame_unwind)
(ia64_libunwind_sigtramp_frame_unwind): Ditto.
* iq2000-tdep.c (iq2000_frame_unwind): Ditto.
* lm32-tdep.c (lm32_frame_unwind): Ditto.
* m32c-tdep.c (m32c_unwind): Ditto.
* m32r-linux-tdep.c (m32r_linux_sigtramp_frame_unwind): Ditto.
* m32r-tdep.c (m32r_frame_unwind): Ditto.
* m68hc11-tdep.c (m68hc11_frame_unwind): Ditto.
* m68k-tdep.c (m68k_frame_unwind): Ditto.
* m68klinux-tdep.c (m68k_linux_sigtramp_frame_unwind): Ditto.
* m88k-tdep.c (m88k_frame_unwind): Ditto.
* mep-tdep.c (mep_frame_unwind): Ditto.
* microblaze-tdep.c (microblaze_frame_unwind): Ditto.
* mips-tdep.c (mips_insn16_frame_unwind, mips_insn32_frame_unwind)
(mips_stub_frame_unwind): Ditto.
* mn10300-tdep.c (mn10300_frame_unwind): Ditto.
* moxie-tdep.c (moxie_frame_unwind): Ditto.
* mt-tdep.c (mt_frame_unwind): Ditto.
* ppc-linux-tdep.c (ppu2spu_unwind): Ditto.
* ppcobsd-tdep.c (ppcobsd_sigtramp_frame_unwind): Ditto.
* rs6000-tdep.c (rs6000_frame_unwind): Ditto.
* s390-tdep.c (s390_frame_unwind, s390_stub_frame_unwind)
(s390_sigtramp_frame_unwind): Ditto.
* score-tdep.c (score_prologue_unwind): Ditto.
* sh-tdep.c (sh_frame_unwind): Ditto.
* sh64-tdep.c (sh64_frame_unwind): Ditto.
* sparc-sol2-tdep.c (sparc32_sol2_sigtramp_frame_unwind): Ditto.
* sparc-tdep.c (sparc32_frame_unwind): Ditto.
* sparc64-sol2-tdep.c (sparc64_sol2_sigtramp_frame_unwind): Ditto.
* sparc64-tdep.c (sparc64_frame_unwind): Ditto.
* sparc64fbsd-tdep.c (sparc64fbsd_sigtramp_frame_unwind): Ditto.
* sparc64nbsd-tdep.c (sparc64nbsd_sigcontext_frame_unwind): Ditto.
* sparc64obsd-tdep.c (sparc64obsd_frame_unwind)
(sparc64obsd_trapframe_unwind): Ditto.
* sparcnbsd-tdep.c (sparc32nbsd_sigcontext_frame_unwind): Ditto.
* sparcobsd-tdep.c (sparc32obsd_sigtramp_frame_unwind): Ditto.
* spu-tdep.c (spu_frame_unwind, spu2ppu_unwind): Ditto.
* v850-tdep.c (v850_frame_unwind): Ditto.
* vax-tdep.c (vax_frame_unwind): Ditto.
* vaxobsd-tdep.c (vaxobsd_sigtramp_frame_unwind): Ditto.
* xstormy16-tdep.c (frame_unwind xstormy16_frame_unwind): Ditto.
* xtensa-tdep.c (xtensa_unwind): Ditto.
2011-03-19 02:52:32 +08:00
|
|
|
default_frame_unwind_stop_reason,
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
s390_frame_this_id,
|
2008-05-01 08:18:27 +08:00
|
|
|
s390_frame_prev_register,
|
|
|
|
NULL,
|
|
|
|
default_frame_sniffer
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
};
|
|
|
|
|
2001-10-14 06:13:35 +08:00
|
|
|
|
2004-03-23 06:33:33 +08:00
|
|
|
/* Code stubs and their stack frames. For things like PLTs and NULL
|
|
|
|
function calls (where there is no true frame and the return address
|
|
|
|
is in the RETADDR register). */
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
|
2004-03-23 06:33:33 +08:00
|
|
|
struct s390_stub_unwind_cache
|
|
|
|
{
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
CORE_ADDR frame_base;
|
|
|
|
struct trad_frame_saved_reg *saved_regs;
|
|
|
|
};
|
|
|
|
|
2004-03-23 06:33:33 +08:00
|
|
|
static struct s390_stub_unwind_cache *
|
2008-05-01 08:18:27 +08:00
|
|
|
s390_stub_frame_unwind_cache (struct frame_info *this_frame,
|
2004-03-23 06:33:33 +08:00
|
|
|
void **this_prologue_cache)
|
2001-10-14 06:13:35 +08:00
|
|
|
{
|
2008-05-01 08:18:27 +08:00
|
|
|
struct gdbarch *gdbarch = get_frame_arch (this_frame);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
int word_size = gdbarch_ptr_bit (gdbarch) / 8;
|
2004-03-23 06:33:33 +08:00
|
|
|
struct s390_stub_unwind_cache *info;
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
ULONGEST reg;
|
2001-11-28 11:40:50 +08:00
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
if (*this_prologue_cache)
|
|
|
|
return *this_prologue_cache;
|
2001-11-28 11:40:50 +08:00
|
|
|
|
2004-03-23 06:33:33 +08:00
|
|
|
info = FRAME_OBSTACK_ZALLOC (struct s390_stub_unwind_cache);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
*this_prologue_cache = info;
|
2008-05-01 08:18:27 +08:00
|
|
|
info->saved_regs = trad_frame_alloc_saved_regs (this_frame);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
|
|
|
|
/* The return address is in register %r14. */
|
2011-12-01 00:06:55 +08:00
|
|
|
info->saved_regs[S390_PSWA_REGNUM].realreg = S390_RETADDR_REGNUM;
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
|
|
|
|
/* Retrieve stack pointer and determine our frame base. */
|
2008-05-01 08:18:27 +08:00
|
|
|
reg = get_frame_register_unsigned (this_frame, S390_SP_REGNUM);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
info->frame_base = reg + 16*word_size + 32;
|
|
|
|
|
|
|
|
return info;
|
2001-10-14 06:13:35 +08:00
|
|
|
}
|
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
static void
|
2008-05-01 08:18:27 +08:00
|
|
|
s390_stub_frame_this_id (struct frame_info *this_frame,
|
2004-03-23 06:33:33 +08:00
|
|
|
void **this_prologue_cache,
|
|
|
|
struct frame_id *this_id)
|
2001-10-14 06:13:35 +08:00
|
|
|
{
|
2004-03-23 06:33:33 +08:00
|
|
|
struct s390_stub_unwind_cache *info
|
2008-05-01 08:18:27 +08:00
|
|
|
= s390_stub_frame_unwind_cache (this_frame, this_prologue_cache);
|
|
|
|
*this_id = frame_id_build (info->frame_base, get_frame_pc (this_frame));
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
}
|
2001-10-14 06:13:35 +08:00
|
|
|
|
2008-05-01 08:18:27 +08:00
|
|
|
static struct value *
|
|
|
|
s390_stub_frame_prev_register (struct frame_info *this_frame,
|
|
|
|
void **this_prologue_cache, int regnum)
|
2004-03-23 06:33:33 +08:00
|
|
|
{
|
|
|
|
struct s390_stub_unwind_cache *info
|
2008-05-01 08:18:27 +08:00
|
|
|
= s390_stub_frame_unwind_cache (this_frame, this_prologue_cache);
|
2011-12-01 00:06:55 +08:00
|
|
|
return s390_trad_frame_prev_register (this_frame, info->saved_regs, regnum);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
}
|
|
|
|
|
2008-05-01 08:18:27 +08:00
|
|
|
static int
|
|
|
|
s390_stub_frame_sniffer (const struct frame_unwind *self,
|
|
|
|
struct frame_info *this_frame,
|
|
|
|
void **this_prologue_cache)
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
{
|
* dwarf2-frame.c (dwarf2_frame_cache, dwarf2_frame_this_id)
(dwarf2_frame_sniffer): Update.
(dwarf2_signal_frame_this_id): New function.
(dwarf2_signal_frame_unwind): Use it.
(dwarf2_frame_base_sniffer): Use frame_unwind_address_in_block.
* frame.c (frame_func_unwind): Add this_type argument.
(get_frame_func): Update.
(frame_unwind_address_in_block): Add this_type argument and check it.
Fix a typo.
(get_frame_address_in_block): Update.
* frame.h (enum frame_type): Move higher in the file.
(frame_unwind_address_in_block, frame_func_unwind): Add enum frame_type
argument.
* alpha-mdebug-tdep.c, alpha-tdep.c, amd64-tdep.c, amd64obsd-tdep.c,
arm-tdep.c, avr-tdep.c, cris-tdep.c, frv-tdep.c, h8300-tdep.c,
hppa-tdep.c, i386-tdep.c, i386obsd-tdep.c, ia64-tdep.c,
libunwind-frame.c, m32c-tdep.c, m32r-linux-tdep.c, m32r-tdep.c,
m68hc11-tdep.c, m68k-tdep.c, m88k-tdep.c, mips-mdebug-tdep.c,
mips-tdep.c, mn10300-tdep.c, mt-tdep.c, rs6000-tdep.c, s390-tdep.c,
score-tdep.c, sh-tdep.c, sh64-tdep.c, sparc-tdep.c,
sparc64obsd-tdep.c, spu-tdep.c, v850-tdep.c, vax-tdep.c,
xstormy16-tdep.c, xtensa-tdep.c: Update calls to
frame_func_unwind and frame_unwind_address_in_block to specify
the frame type. Use frame_unwind_address_in_block instead of
frame_pc_unwind in sniffers.
* gdb.arch/i386-signal.c, gdb.arch/i386-signal.exp: New files.
2007-02-28 04:17:19 +08:00
|
|
|
CORE_ADDR addr_in_block;
|
2004-03-23 06:33:33 +08:00
|
|
|
bfd_byte insn[S390_MAX_INSTR_SIZE];
|
|
|
|
|
|
|
|
/* If the current PC points to non-readable memory, we assume we
|
|
|
|
have trapped due to an invalid function pointer call. We handle
|
|
|
|
the non-existing current function like a PLT stub. */
|
2008-05-01 08:18:27 +08:00
|
|
|
addr_in_block = get_frame_address_in_block (this_frame);
|
2013-06-25 06:18:32 +08:00
|
|
|
if (in_plt_section (addr_in_block)
|
2008-05-01 08:18:27 +08:00
|
|
|
|| s390_readinstruction (insn, get_frame_pc (this_frame)) < 0)
|
|
|
|
return 1;
|
|
|
|
return 0;
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
}
|
2001-10-14 06:13:35 +08:00
|
|
|
|
2008-05-01 08:18:27 +08:00
|
|
|
static const struct frame_unwind s390_stub_frame_unwind = {
|
|
|
|
NORMAL_FRAME,
|
gdb/
* frame.c (frame_unwind_register): Throw an error if unwinding the
register failed.
* get_prev_frame_1 (get_prev_frame_1): Ask the unwinder if there's
an unwind stop reason.
(frame_stop_reason_string): Handle UNWIND_UNAVAILABLE.
* frame.h (enum unwind_stop_reason) <UNWIND_OUTERMOST,
UNWIND_UNAVAILABLE>: New.
* inline-frame.c (inline_frame_unwind): Install
default_frame_unwind_stop_reason.
* frame-unwind.c: Include "exceptions.h".
(frame_unwind_find_by_frame): Swallow NOT_AVAILABLE_ERROR errors.
(default_frame_unwind_stop_reason): New.
* frame-unwind.h (frame_unwind_stop_reason_ftype): New typedef.
(default_frame_unwind_stop_reason): Declare.
(struct frame_unwind) <stop_reason>: New function pointer.
* dummy-frame.c: Install default_frame_unwind_stop_reason.
* dwarf2-frame.c: Include exceptions.h.
(struct dwarf2_frame_cache) <unavailable_retaddr>: New field.
(dwarf2_frame_cache): Swallow NOT_AVAILABLE_ERROR errors when
computing the CFA. If such an error was thrown, set
unavailable_retaddr.
(dwarf2_frame_unwind_stop_reason): New.
(dwarf2_frame_this_id): Don't build a frame id if the CFA was
unavailable.
(dwarf2_frame_unwind): Install dwarf2_frame_unwind_stop_reason.
(dwarf2_signal_frame_unwind): Ditto.
* amd64-tdep.c: Include "exceptions.h".
(struct amd64_frame_cache): New field "base_p".
(amd64_init_frame_cache): Clear it.
(amd64_frame_cache_1): New, factored out from amd64_frame_cache.
Avoid reading registers with functions that throw if the register
is not necessary to compute the frame base.
(amd64_frame_cache): Reimplement wrapping amd64_frame_cache_1, and
swallowing NOT_AVAILABLE_ERROR.
(amd64_frame_unwind_stop_reason): New.
(amd64_frame_this_id): Don't build a frame id if the frame base
was unavailable.
(amd64_frame_unwind): Install amd64_frame_unwind_stop_reason.
(amd64_sigtramp_frame_cache): Swallow NOT_AVAILABLE_ERROR, and set
base_p if the frame base was computable.
(amd64_sigtramp_frame_unwind_stop_reason): New.
(amd64_sigtramp_frame_this_id): Don't build a frame id if the
frame base was unavailable.
(amd64_sigtramp_frame_unwind): Install
amd64_sigtramp_frame_unwind_stop_reason.
(amd64_epilogue_frame_cache): Swallow NOT_AVAILABLE_ERROR, and set
base_p if the frame base was computable.
(amd64_epilogue_frame_unwind_stop_reason): New.
(amd64_epilogue_frame_this_id): Don't build a frame id if the
frame base was unavailable.
(amd64_epilogue_frame_unwind): Install
amd64_epilogue_frame_unwind_stop_reason.
* i386-tdep.c: Include "exceptions.h".
(struct i386_frame_cache): New field "base_p".
(i386_init_frame_cache): Clear it.
(i386_frame_cache_1): New, factored out from amd64_frame_cache.
Avoid reading registers with functions that throw if the register
is not necessary to compute the frame base.
(i386_frame_cache): Reimplement wrapping amd64_frame_cache_1, and
swallowing NOT_AVAILABLE_ERROR.
(i386_frame_unwind_stop_reason): New.
(i386_frame_this_id): Don't build a frame id if the frame base was
unavailable.
(i386_frame_prev_register): Handle unavailable SP.
(i386_frame_unwind): Install i386_frame_unwind_stop_reason.
(i386_epilogue_frame_cache): Swallow NOT_AVAILABLE_ERROR, and set
base_p if the frame base was computable.
(i386_epilogue_frame_unwind_stop_reason): New.
(i386_epilogue_frame_this_id): Don't build a frame id if the frame
base was unavailable.
(i386_epilogue_frame_unwind): Install
i386_epilogue_frame_unwind_stop_reason.
(i386_sigtramp_frame_cache): Swallow NOT_AVAILABLE_ERROR, and set
base_p if the frame base was computable.
(i386_sigtramp_frame_unwind_stop_reason): New.
(i386_sigtramp_frame_this_id): Don't build a frame id if the frame
base was unavailable.
(i386_sigtramp_frame_unwind): Install
i386_sigtramp_frame_unwind_stop_reason.
* sentinel-frame.c (sentinel_frame_prev_register): Use the value
type's size, not the register's.
(sentinel_frame_unwind): Install default_frame_unwind_stop_reason.
* alpha-mdebug-tdep.c (alpha_mdebug_frame_unwind): Install
default_frame_unwind_stop_reason.
* alpha-tdep.c (alpha_sigtramp_frame_unwind)
(alpha_heuristic_frame_unwind): Ditto.
* amd64obsd-tdep.c (amd64obsd_trapframe_unwind): Ditto.
* arm-tdep.c (arm_prologue_unwind, arm_stub_unwind): Ditto.
* avr-tdep.c (avr_frame_unwind): Ditto.
* cris-tdep.c (cris_sigtramp_frame_unwind, cris_frame_unwind):
Ditto.
* frv-linux-tdep.c (frv_linux_sigtramp_frame_unwind): Ditto.
* frv-tdep.c (frv_frame_unwind): Ditto.
* h8300-tdep.c (h8300_frame_unwind): Ditto.
* hppa-hpux-tdep.c (hppa_hpux_sigtramp_frame_unwind): Ditto.
* hppa-linux-tdep.c (hppa_linux_sigtramp_frame_unwind): Ditto.
* hppa-tdep.c (hppa_frame_unwind, hppa_fallback_frame_unwind)
(hppa_stub_frame_unwind): Ditto.
* i386obsd-tdep.c (i386obsd_trapframe_unwind): Ditto.
* ia64-tdep.c (ia64_frame_unwind, ia64_sigtramp_frame_unwind)
(ia64_libunwind_frame_unwind)
(ia64_libunwind_sigtramp_frame_unwind): Ditto.
* iq2000-tdep.c (iq2000_frame_unwind): Ditto.
* lm32-tdep.c (lm32_frame_unwind): Ditto.
* m32c-tdep.c (m32c_unwind): Ditto.
* m32r-linux-tdep.c (m32r_linux_sigtramp_frame_unwind): Ditto.
* m32r-tdep.c (m32r_frame_unwind): Ditto.
* m68hc11-tdep.c (m68hc11_frame_unwind): Ditto.
* m68k-tdep.c (m68k_frame_unwind): Ditto.
* m68klinux-tdep.c (m68k_linux_sigtramp_frame_unwind): Ditto.
* m88k-tdep.c (m88k_frame_unwind): Ditto.
* mep-tdep.c (mep_frame_unwind): Ditto.
* microblaze-tdep.c (microblaze_frame_unwind): Ditto.
* mips-tdep.c (mips_insn16_frame_unwind, mips_insn32_frame_unwind)
(mips_stub_frame_unwind): Ditto.
* mn10300-tdep.c (mn10300_frame_unwind): Ditto.
* moxie-tdep.c (moxie_frame_unwind): Ditto.
* mt-tdep.c (mt_frame_unwind): Ditto.
* ppc-linux-tdep.c (ppu2spu_unwind): Ditto.
* ppcobsd-tdep.c (ppcobsd_sigtramp_frame_unwind): Ditto.
* rs6000-tdep.c (rs6000_frame_unwind): Ditto.
* s390-tdep.c (s390_frame_unwind, s390_stub_frame_unwind)
(s390_sigtramp_frame_unwind): Ditto.
* score-tdep.c (score_prologue_unwind): Ditto.
* sh-tdep.c (sh_frame_unwind): Ditto.
* sh64-tdep.c (sh64_frame_unwind): Ditto.
* sparc-sol2-tdep.c (sparc32_sol2_sigtramp_frame_unwind): Ditto.
* sparc-tdep.c (sparc32_frame_unwind): Ditto.
* sparc64-sol2-tdep.c (sparc64_sol2_sigtramp_frame_unwind): Ditto.
* sparc64-tdep.c (sparc64_frame_unwind): Ditto.
* sparc64fbsd-tdep.c (sparc64fbsd_sigtramp_frame_unwind): Ditto.
* sparc64nbsd-tdep.c (sparc64nbsd_sigcontext_frame_unwind): Ditto.
* sparc64obsd-tdep.c (sparc64obsd_frame_unwind)
(sparc64obsd_trapframe_unwind): Ditto.
* sparcnbsd-tdep.c (sparc32nbsd_sigcontext_frame_unwind): Ditto.
* sparcobsd-tdep.c (sparc32obsd_sigtramp_frame_unwind): Ditto.
* spu-tdep.c (spu_frame_unwind, spu2ppu_unwind): Ditto.
* v850-tdep.c (v850_frame_unwind): Ditto.
* vax-tdep.c (vax_frame_unwind): Ditto.
* vaxobsd-tdep.c (vaxobsd_sigtramp_frame_unwind): Ditto.
* xstormy16-tdep.c (frame_unwind xstormy16_frame_unwind): Ditto.
* xtensa-tdep.c (xtensa_unwind): Ditto.
2011-03-19 02:52:32 +08:00
|
|
|
default_frame_unwind_stop_reason,
|
2008-05-01 08:18:27 +08:00
|
|
|
s390_stub_frame_this_id,
|
|
|
|
s390_stub_frame_prev_register,
|
|
|
|
NULL,
|
|
|
|
s390_stub_frame_sniffer
|
|
|
|
};
|
|
|
|
|
2001-10-14 06:13:35 +08:00
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
/* Signal trampoline stack frames. */
|
2001-10-14 06:13:35 +08:00
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
struct s390_sigtramp_unwind_cache {
|
|
|
|
CORE_ADDR frame_base;
|
|
|
|
struct trad_frame_saved_reg *saved_regs;
|
|
|
|
};
|
2001-10-14 06:13:35 +08:00
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
static struct s390_sigtramp_unwind_cache *
|
2008-05-01 08:18:27 +08:00
|
|
|
s390_sigtramp_frame_unwind_cache (struct frame_info *this_frame,
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
void **this_prologue_cache)
|
2001-10-14 06:13:35 +08:00
|
|
|
{
|
2008-05-01 08:18:27 +08:00
|
|
|
struct gdbarch *gdbarch = get_frame_arch (this_frame);
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
int word_size = gdbarch_ptr_bit (gdbarch) / 8;
|
* 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
|
|
|
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
struct s390_sigtramp_unwind_cache *info;
|
|
|
|
ULONGEST this_sp, prev_sp;
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
CORE_ADDR next_ra, next_cfa, sigreg_ptr, sigreg_high_off;
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
int i;
|
|
|
|
|
|
|
|
if (*this_prologue_cache)
|
|
|
|
return *this_prologue_cache;
|
2001-10-14 06:13:35 +08:00
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
info = FRAME_OBSTACK_ZALLOC (struct s390_sigtramp_unwind_cache);
|
|
|
|
*this_prologue_cache = info;
|
2008-05-01 08:18:27 +08:00
|
|
|
info->saved_regs = trad_frame_alloc_saved_regs (this_frame);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
|
2008-05-01 08:18:27 +08:00
|
|
|
this_sp = get_frame_register_unsigned (this_frame, S390_SP_REGNUM);
|
|
|
|
next_ra = get_frame_pc (this_frame);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
next_cfa = this_sp + 16*word_size + 32;
|
|
|
|
|
|
|
|
/* New-style RT frame:
|
|
|
|
retcode + alignment (8 bytes)
|
|
|
|
siginfo (128 bytes)
|
2011-01-12 05:53:25 +08:00
|
|
|
ucontext (contains sigregs at offset 5 words). */
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
if (next_ra == next_cfa)
|
|
|
|
{
|
2004-05-05 02:50:26 +08:00
|
|
|
sigreg_ptr = next_cfa + 8 + 128 + align_up (5*word_size, 8);
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
/* sigregs are followed by uc_sigmask (8 bytes), then by the
|
|
|
|
upper GPR halves if present. */
|
|
|
|
sigreg_high_off = 8;
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
/* Old-style RT frame and all non-RT frames:
|
|
|
|
old signal mask (8 bytes)
|
2011-01-12 05:53:25 +08:00
|
|
|
pointer to sigregs. */
|
2001-10-14 06:13:35 +08:00
|
|
|
else
|
|
|
|
{
|
* 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
|
|
|
sigreg_ptr = read_memory_unsigned_integer (next_cfa + 8,
|
|
|
|
word_size, byte_order);
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
/* sigregs are followed by signo (4 bytes), then by the
|
|
|
|
upper GPR halves if present. */
|
|
|
|
sigreg_high_off = 4;
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
}
|
2001-10-14 06:13:35 +08:00
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
/* The sigregs structure looks like this:
|
2013-10-31 01:51:57 +08:00
|
|
|
long psw_mask;
|
|
|
|
long psw_addr;
|
|
|
|
long gprs[16];
|
|
|
|
int acrs[16];
|
|
|
|
int fpc;
|
|
|
|
int __pad;
|
|
|
|
double fprs[16]; */
|
2001-10-14 06:13:35 +08:00
|
|
|
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
/* PSW mask and address. */
|
|
|
|
info->saved_regs[S390_PSWM_REGNUM].addr = sigreg_ptr;
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
sigreg_ptr += word_size;
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
info->saved_regs[S390_PSWA_REGNUM].addr = sigreg_ptr;
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
sigreg_ptr += word_size;
|
|
|
|
|
|
|
|
/* Then the GPRs. */
|
|
|
|
for (i = 0; i < 16; i++)
|
|
|
|
{
|
|
|
|
info->saved_regs[S390_R0_REGNUM + i].addr = sigreg_ptr;
|
|
|
|
sigreg_ptr += word_size;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Then the ACRs. */
|
|
|
|
for (i = 0; i < 16; i++)
|
|
|
|
{
|
|
|
|
info->saved_regs[S390_A0_REGNUM + i].addr = sigreg_ptr;
|
|
|
|
sigreg_ptr += 4;
|
2001-10-14 06:13:35 +08:00
|
|
|
}
|
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
/* The floating-point control word. */
|
|
|
|
info->saved_regs[S390_FPC_REGNUM].addr = sigreg_ptr;
|
|
|
|
sigreg_ptr += 8;
|
2001-10-14 06:13:35 +08:00
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
/* And finally the FPRs. */
|
|
|
|
for (i = 0; i < 16; i++)
|
|
|
|
{
|
|
|
|
info->saved_regs[S390_F0_REGNUM + i].addr = sigreg_ptr;
|
|
|
|
sigreg_ptr += 8;
|
|
|
|
}
|
|
|
|
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
/* If we have them, the GPR upper halves are appended at the end. */
|
|
|
|
sigreg_ptr += sigreg_high_off;
|
|
|
|
if (tdep->gpr_full_regnum != -1)
|
|
|
|
for (i = 0; i < 16; i++)
|
|
|
|
{
|
2013-10-31 01:51:57 +08:00
|
|
|
info->saved_regs[S390_R0_UPPER_REGNUM + i].addr = sigreg_ptr;
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
sigreg_ptr += 4;
|
|
|
|
}
|
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
/* Restore the previous frame's SP. */
|
|
|
|
prev_sp = read_memory_unsigned_integer (
|
|
|
|
info->saved_regs[S390_SP_REGNUM].addr,
|
* 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
|
|
|
word_size, byte_order);
|
2001-10-14 06:13:35 +08:00
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
/* Determine our frame base. */
|
|
|
|
info->frame_base = prev_sp + 16*word_size + 32;
|
2001-10-14 06:13:35 +08:00
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
return info;
|
2001-10-14 06:13:35 +08:00
|
|
|
}
|
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
static void
|
2008-05-01 08:18:27 +08:00
|
|
|
s390_sigtramp_frame_this_id (struct frame_info *this_frame,
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
void **this_prologue_cache,
|
|
|
|
struct frame_id *this_id)
|
2001-10-14 06:13:35 +08:00
|
|
|
{
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
struct s390_sigtramp_unwind_cache *info
|
2008-05-01 08:18:27 +08:00
|
|
|
= s390_sigtramp_frame_unwind_cache (this_frame, this_prologue_cache);
|
|
|
|
*this_id = frame_id_build (info->frame_base, get_frame_pc (this_frame));
|
2001-10-14 06:13:35 +08:00
|
|
|
}
|
|
|
|
|
2008-05-01 08:18:27 +08:00
|
|
|
static struct value *
|
|
|
|
s390_sigtramp_frame_prev_register (struct frame_info *this_frame,
|
|
|
|
void **this_prologue_cache, int regnum)
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
{
|
|
|
|
struct s390_sigtramp_unwind_cache *info
|
2008-05-01 08:18:27 +08:00
|
|
|
= s390_sigtramp_frame_unwind_cache (this_frame, this_prologue_cache);
|
2011-12-01 00:06:55 +08:00
|
|
|
return s390_trad_frame_prev_register (this_frame, info->saved_regs, regnum);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
}
|
|
|
|
|
2008-05-01 08:18:27 +08:00
|
|
|
static int
|
|
|
|
s390_sigtramp_frame_sniffer (const struct frame_unwind *self,
|
|
|
|
struct frame_info *this_frame,
|
|
|
|
void **this_prologue_cache)
|
2001-10-14 06:13:35 +08:00
|
|
|
{
|
2008-05-01 08:18:27 +08:00
|
|
|
CORE_ADDR pc = get_frame_pc (this_frame);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
bfd_byte sigreturn[2];
|
2001-11-14 01:38:49 +08:00
|
|
|
|
* breakpoint.h (breakpoint_restore_shadows): New
declaration.
* breakpoint.c (breakpoint_restore_shadows): New.
(read_memory_nobpt): Delete.
* gdbcore.h (read_memory_nobpt): Delete declaration.
* target.c (memory_xfer_partial): Call
breakpoint_restore_shadows.
(restore_show_memory_breakpoints)
(make_show_memory_beakpoints_cleanup): New.
(show_memory_breakpoints): New.
* target.h (make_show_memory_beakpoints_cleanup): Declare.
* ppc-linux-tdep.c (ppc_linux_memory_remove_breakpoint):
Make sure we see memory breakpoints when checking if
breakpoint is still there.
* alpha-tdep.c, alphanbsd-tdep.c, frame.c, frv-tdep.c,
hppa-linux-tdep.c, hppa-tdep.c, i386-linux-nat.c, i386-tdep.c,
m68klinux-tdep.c, mips-tdep.c, mn10300-tdep.c, s390-tdep.c,
sparc-tdep.c: Use target_read_memory instead of read_memory_nobpt.
2008-03-13 20:22:14 +08:00
|
|
|
if (target_read_memory (pc, sigreturn, 2))
|
2008-05-01 08:18:27 +08:00
|
|
|
return 0;
|
2001-11-14 01:38:49 +08:00
|
|
|
|
2014-01-23 01:54:43 +08:00
|
|
|
if (sigreturn[0] != op_svc)
|
2008-05-01 08:18:27 +08:00
|
|
|
return 0;
|
2001-10-14 06:13:35 +08:00
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
if (sigreturn[1] != 119 /* sigreturn */
|
|
|
|
&& sigreturn[1] != 173 /* rt_sigreturn */)
|
2008-05-01 08:18:27 +08:00
|
|
|
return 0;
|
2013-10-31 01:51:57 +08:00
|
|
|
|
2008-05-01 08:18:27 +08:00
|
|
|
return 1;
|
2001-10-14 06:13:35 +08:00
|
|
|
}
|
|
|
|
|
2008-05-01 08:18:27 +08:00
|
|
|
static const struct frame_unwind s390_sigtramp_frame_unwind = {
|
|
|
|
SIGTRAMP_FRAME,
|
gdb/
* frame.c (frame_unwind_register): Throw an error if unwinding the
register failed.
* get_prev_frame_1 (get_prev_frame_1): Ask the unwinder if there's
an unwind stop reason.
(frame_stop_reason_string): Handle UNWIND_UNAVAILABLE.
* frame.h (enum unwind_stop_reason) <UNWIND_OUTERMOST,
UNWIND_UNAVAILABLE>: New.
* inline-frame.c (inline_frame_unwind): Install
default_frame_unwind_stop_reason.
* frame-unwind.c: Include "exceptions.h".
(frame_unwind_find_by_frame): Swallow NOT_AVAILABLE_ERROR errors.
(default_frame_unwind_stop_reason): New.
* frame-unwind.h (frame_unwind_stop_reason_ftype): New typedef.
(default_frame_unwind_stop_reason): Declare.
(struct frame_unwind) <stop_reason>: New function pointer.
* dummy-frame.c: Install default_frame_unwind_stop_reason.
* dwarf2-frame.c: Include exceptions.h.
(struct dwarf2_frame_cache) <unavailable_retaddr>: New field.
(dwarf2_frame_cache): Swallow NOT_AVAILABLE_ERROR errors when
computing the CFA. If such an error was thrown, set
unavailable_retaddr.
(dwarf2_frame_unwind_stop_reason): New.
(dwarf2_frame_this_id): Don't build a frame id if the CFA was
unavailable.
(dwarf2_frame_unwind): Install dwarf2_frame_unwind_stop_reason.
(dwarf2_signal_frame_unwind): Ditto.
* amd64-tdep.c: Include "exceptions.h".
(struct amd64_frame_cache): New field "base_p".
(amd64_init_frame_cache): Clear it.
(amd64_frame_cache_1): New, factored out from amd64_frame_cache.
Avoid reading registers with functions that throw if the register
is not necessary to compute the frame base.
(amd64_frame_cache): Reimplement wrapping amd64_frame_cache_1, and
swallowing NOT_AVAILABLE_ERROR.
(amd64_frame_unwind_stop_reason): New.
(amd64_frame_this_id): Don't build a frame id if the frame base
was unavailable.
(amd64_frame_unwind): Install amd64_frame_unwind_stop_reason.
(amd64_sigtramp_frame_cache): Swallow NOT_AVAILABLE_ERROR, and set
base_p if the frame base was computable.
(amd64_sigtramp_frame_unwind_stop_reason): New.
(amd64_sigtramp_frame_this_id): Don't build a frame id if the
frame base was unavailable.
(amd64_sigtramp_frame_unwind): Install
amd64_sigtramp_frame_unwind_stop_reason.
(amd64_epilogue_frame_cache): Swallow NOT_AVAILABLE_ERROR, and set
base_p if the frame base was computable.
(amd64_epilogue_frame_unwind_stop_reason): New.
(amd64_epilogue_frame_this_id): Don't build a frame id if the
frame base was unavailable.
(amd64_epilogue_frame_unwind): Install
amd64_epilogue_frame_unwind_stop_reason.
* i386-tdep.c: Include "exceptions.h".
(struct i386_frame_cache): New field "base_p".
(i386_init_frame_cache): Clear it.
(i386_frame_cache_1): New, factored out from amd64_frame_cache.
Avoid reading registers with functions that throw if the register
is not necessary to compute the frame base.
(i386_frame_cache): Reimplement wrapping amd64_frame_cache_1, and
swallowing NOT_AVAILABLE_ERROR.
(i386_frame_unwind_stop_reason): New.
(i386_frame_this_id): Don't build a frame id if the frame base was
unavailable.
(i386_frame_prev_register): Handle unavailable SP.
(i386_frame_unwind): Install i386_frame_unwind_stop_reason.
(i386_epilogue_frame_cache): Swallow NOT_AVAILABLE_ERROR, and set
base_p if the frame base was computable.
(i386_epilogue_frame_unwind_stop_reason): New.
(i386_epilogue_frame_this_id): Don't build a frame id if the frame
base was unavailable.
(i386_epilogue_frame_unwind): Install
i386_epilogue_frame_unwind_stop_reason.
(i386_sigtramp_frame_cache): Swallow NOT_AVAILABLE_ERROR, and set
base_p if the frame base was computable.
(i386_sigtramp_frame_unwind_stop_reason): New.
(i386_sigtramp_frame_this_id): Don't build a frame id if the frame
base was unavailable.
(i386_sigtramp_frame_unwind): Install
i386_sigtramp_frame_unwind_stop_reason.
* sentinel-frame.c (sentinel_frame_prev_register): Use the value
type's size, not the register's.
(sentinel_frame_unwind): Install default_frame_unwind_stop_reason.
* alpha-mdebug-tdep.c (alpha_mdebug_frame_unwind): Install
default_frame_unwind_stop_reason.
* alpha-tdep.c (alpha_sigtramp_frame_unwind)
(alpha_heuristic_frame_unwind): Ditto.
* amd64obsd-tdep.c (amd64obsd_trapframe_unwind): Ditto.
* arm-tdep.c (arm_prologue_unwind, arm_stub_unwind): Ditto.
* avr-tdep.c (avr_frame_unwind): Ditto.
* cris-tdep.c (cris_sigtramp_frame_unwind, cris_frame_unwind):
Ditto.
* frv-linux-tdep.c (frv_linux_sigtramp_frame_unwind): Ditto.
* frv-tdep.c (frv_frame_unwind): Ditto.
* h8300-tdep.c (h8300_frame_unwind): Ditto.
* hppa-hpux-tdep.c (hppa_hpux_sigtramp_frame_unwind): Ditto.
* hppa-linux-tdep.c (hppa_linux_sigtramp_frame_unwind): Ditto.
* hppa-tdep.c (hppa_frame_unwind, hppa_fallback_frame_unwind)
(hppa_stub_frame_unwind): Ditto.
* i386obsd-tdep.c (i386obsd_trapframe_unwind): Ditto.
* ia64-tdep.c (ia64_frame_unwind, ia64_sigtramp_frame_unwind)
(ia64_libunwind_frame_unwind)
(ia64_libunwind_sigtramp_frame_unwind): Ditto.
* iq2000-tdep.c (iq2000_frame_unwind): Ditto.
* lm32-tdep.c (lm32_frame_unwind): Ditto.
* m32c-tdep.c (m32c_unwind): Ditto.
* m32r-linux-tdep.c (m32r_linux_sigtramp_frame_unwind): Ditto.
* m32r-tdep.c (m32r_frame_unwind): Ditto.
* m68hc11-tdep.c (m68hc11_frame_unwind): Ditto.
* m68k-tdep.c (m68k_frame_unwind): Ditto.
* m68klinux-tdep.c (m68k_linux_sigtramp_frame_unwind): Ditto.
* m88k-tdep.c (m88k_frame_unwind): Ditto.
* mep-tdep.c (mep_frame_unwind): Ditto.
* microblaze-tdep.c (microblaze_frame_unwind): Ditto.
* mips-tdep.c (mips_insn16_frame_unwind, mips_insn32_frame_unwind)
(mips_stub_frame_unwind): Ditto.
* mn10300-tdep.c (mn10300_frame_unwind): Ditto.
* moxie-tdep.c (moxie_frame_unwind): Ditto.
* mt-tdep.c (mt_frame_unwind): Ditto.
* ppc-linux-tdep.c (ppu2spu_unwind): Ditto.
* ppcobsd-tdep.c (ppcobsd_sigtramp_frame_unwind): Ditto.
* rs6000-tdep.c (rs6000_frame_unwind): Ditto.
* s390-tdep.c (s390_frame_unwind, s390_stub_frame_unwind)
(s390_sigtramp_frame_unwind): Ditto.
* score-tdep.c (score_prologue_unwind): Ditto.
* sh-tdep.c (sh_frame_unwind): Ditto.
* sh64-tdep.c (sh64_frame_unwind): Ditto.
* sparc-sol2-tdep.c (sparc32_sol2_sigtramp_frame_unwind): Ditto.
* sparc-tdep.c (sparc32_frame_unwind): Ditto.
* sparc64-sol2-tdep.c (sparc64_sol2_sigtramp_frame_unwind): Ditto.
* sparc64-tdep.c (sparc64_frame_unwind): Ditto.
* sparc64fbsd-tdep.c (sparc64fbsd_sigtramp_frame_unwind): Ditto.
* sparc64nbsd-tdep.c (sparc64nbsd_sigcontext_frame_unwind): Ditto.
* sparc64obsd-tdep.c (sparc64obsd_frame_unwind)
(sparc64obsd_trapframe_unwind): Ditto.
* sparcnbsd-tdep.c (sparc32nbsd_sigcontext_frame_unwind): Ditto.
* sparcobsd-tdep.c (sparc32obsd_sigtramp_frame_unwind): Ditto.
* spu-tdep.c (spu_frame_unwind, spu2ppu_unwind): Ditto.
* v850-tdep.c (v850_frame_unwind): Ditto.
* vax-tdep.c (vax_frame_unwind): Ditto.
* vaxobsd-tdep.c (vaxobsd_sigtramp_frame_unwind): Ditto.
* xstormy16-tdep.c (frame_unwind xstormy16_frame_unwind): Ditto.
* xtensa-tdep.c (xtensa_unwind): Ditto.
2011-03-19 02:52:32 +08:00
|
|
|
default_frame_unwind_stop_reason,
|
2008-05-01 08:18:27 +08:00
|
|
|
s390_sigtramp_frame_this_id,
|
|
|
|
s390_sigtramp_frame_prev_register,
|
|
|
|
NULL,
|
|
|
|
s390_sigtramp_frame_sniffer
|
|
|
|
};
|
|
|
|
|
2014-01-23 01:54:43 +08:00
|
|
|
/* Retrieve the syscall number at a ptrace syscall-stop. Return -1
|
|
|
|
upon error. */
|
|
|
|
|
|
|
|
static LONGEST
|
|
|
|
s390_linux_get_syscall_number (struct gdbarch *gdbarch,
|
|
|
|
ptid_t ptid)
|
|
|
|
{
|
|
|
|
struct regcache *regs = get_thread_regcache (ptid);
|
|
|
|
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
|
|
|
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
|
|
|
|
ULONGEST pc;
|
|
|
|
ULONGEST svc_number = -1;
|
|
|
|
unsigned opcode;
|
|
|
|
|
|
|
|
/* Assume that the PC points after the 2-byte SVC instruction. We
|
|
|
|
don't currently support SVC via EXECUTE. */
|
|
|
|
regcache_cooked_read_unsigned (regs, tdep->pc_regnum, &pc);
|
|
|
|
pc -= 2;
|
|
|
|
opcode = read_memory_unsigned_integer ((CORE_ADDR) pc, 1, byte_order);
|
|
|
|
if (opcode != op_svc)
|
|
|
|
return -1;
|
|
|
|
|
|
|
|
svc_number = read_memory_unsigned_integer ((CORE_ADDR) pc + 1, 1,
|
|
|
|
byte_order);
|
|
|
|
if (svc_number == 0)
|
|
|
|
regcache_cooked_read_unsigned (regs, S390_R1_REGNUM, &svc_number);
|
|
|
|
|
|
|
|
return svc_number;
|
|
|
|
}
|
|
|
|
|
2001-11-14 01:38:49 +08:00
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
/* Frame base handling. */
|
|
|
|
|
|
|
|
static CORE_ADDR
|
2008-05-01 08:18:27 +08:00
|
|
|
s390_frame_base_address (struct frame_info *this_frame, void **this_cache)
|
2001-11-14 01:38:49 +08:00
|
|
|
{
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
struct s390_unwind_cache *info
|
2008-05-01 08:18:27 +08:00
|
|
|
= s390_frame_unwind_cache (this_frame, this_cache);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
return info->frame_base;
|
|
|
|
}
|
|
|
|
|
|
|
|
static CORE_ADDR
|
2008-05-01 08:18:27 +08:00
|
|
|
s390_local_base_address (struct frame_info *this_frame, void **this_cache)
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
{
|
|
|
|
struct s390_unwind_cache *info
|
2008-05-01 08:18:27 +08:00
|
|
|
= s390_frame_unwind_cache (this_frame, this_cache);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
return info->local_base;
|
|
|
|
}
|
|
|
|
|
|
|
|
static const struct frame_base s390_frame_base = {
|
|
|
|
&s390_frame_unwind,
|
|
|
|
s390_frame_base_address,
|
|
|
|
s390_local_base_address,
|
|
|
|
s390_local_base_address
|
|
|
|
};
|
|
|
|
|
|
|
|
static CORE_ADDR
|
|
|
|
s390_unwind_pc (struct gdbarch *gdbarch, struct frame_info *next_frame)
|
|
|
|
{
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
ULONGEST pc;
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
pc = frame_unwind_register_unsigned (next_frame, tdep->pc_regnum);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
return gdbarch_addr_bits_remove (gdbarch, pc);
|
|
|
|
}
|
|
|
|
|
|
|
|
static CORE_ADDR
|
|
|
|
s390_unwind_sp (struct gdbarch *gdbarch, struct frame_info *next_frame)
|
|
|
|
{
|
|
|
|
ULONGEST sp;
|
|
|
|
sp = frame_unwind_register_unsigned (next_frame, S390_SP_REGNUM);
|
|
|
|
return gdbarch_addr_bits_remove (gdbarch, sp);
|
2001-11-14 01:38:49 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2004-02-27 07:48:01 +08:00
|
|
|
/* DWARF-2 frame support. */
|
|
|
|
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
static struct value *
|
|
|
|
s390_dwarf2_prev_register (struct frame_info *this_frame, void **this_cache,
|
|
|
|
int regnum)
|
|
|
|
{
|
2011-12-01 00:06:55 +08:00
|
|
|
return s390_unwind_pseudo_register (this_frame, regnum);
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
}
|
|
|
|
|
2004-02-27 07:48:01 +08:00
|
|
|
static void
|
|
|
|
s390_dwarf2_frame_init_reg (struct gdbarch *gdbarch, int regnum,
|
2013-10-31 01:51:57 +08:00
|
|
|
struct dwarf2_frame_state_reg *reg,
|
2008-05-01 05:18:28 +08:00
|
|
|
struct frame_info *this_frame)
|
2004-02-27 07:48:01 +08:00
|
|
|
{
|
|
|
|
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
|
|
|
|
2011-12-01 00:06:55 +08:00
|
|
|
/* The condition code (and thus PSW mask) is call-clobbered. */
|
|
|
|
if (regnum == S390_PSWM_REGNUM)
|
|
|
|
reg->how = DWARF2_FRAME_REG_UNDEFINED;
|
|
|
|
|
|
|
|
/* The PSW address unwinds to the return address. */
|
|
|
|
else if (regnum == S390_PSWA_REGNUM)
|
|
|
|
reg->how = DWARF2_FRAME_REG_RA;
|
|
|
|
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
/* Fixed registers are call-saved or call-clobbered
|
|
|
|
depending on the ABI in use. */
|
2011-12-01 00:06:55 +08:00
|
|
|
else if (regnum < S390_NUM_REGS)
|
2004-02-27 07:48:01 +08:00
|
|
|
{
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
if (s390_register_call_saved (gdbarch, regnum))
|
2004-02-27 07:48:01 +08:00
|
|
|
reg->how = DWARF2_FRAME_REG_SAME_VALUE;
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
else
|
2004-02-27 07:48:01 +08:00
|
|
|
reg->how = DWARF2_FRAME_REG_UNDEFINED;
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
}
|
2004-02-27 07:48:01 +08:00
|
|
|
|
2011-12-01 00:06:55 +08:00
|
|
|
/* We install a special function to unwind pseudos. */
|
|
|
|
else
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
{
|
|
|
|
reg->how = DWARF2_FRAME_REG_FN;
|
|
|
|
reg->loc.fn = s390_dwarf2_prev_register;
|
2004-02-27 07:48:01 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
/* Dummy function calls. */
|
|
|
|
|
2001-11-14 01:47:19 +08:00
|
|
|
/* Return non-zero if TYPE is an integer-like type, zero otherwise.
|
|
|
|
"Integer-like" types are those that should be passed the way
|
|
|
|
integers are: integers, enums, ranges, characters, and booleans. */
|
|
|
|
static int
|
|
|
|
is_integer_like (struct type *type)
|
|
|
|
{
|
|
|
|
enum type_code code = TYPE_CODE (type);
|
|
|
|
|
|
|
|
return (code == TYPE_CODE_INT
|
2013-10-31 01:51:57 +08:00
|
|
|
|| code == TYPE_CODE_ENUM
|
|
|
|
|| code == TYPE_CODE_RANGE
|
|
|
|
|| code == TYPE_CODE_CHAR
|
|
|
|
|| code == TYPE_CODE_BOOL);
|
2001-11-14 01:47:19 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
/* Return non-zero if TYPE is a pointer-like type, zero otherwise.
|
|
|
|
"Pointer-like" types are those that should be passed the way
|
|
|
|
pointers are: pointers and references. */
|
|
|
|
static int
|
|
|
|
is_pointer_like (struct type *type)
|
|
|
|
{
|
|
|
|
enum type_code code = TYPE_CODE (type);
|
|
|
|
|
|
|
|
return (code == TYPE_CODE_PTR
|
2013-10-31 01:51:57 +08:00
|
|
|
|| code == TYPE_CODE_REF);
|
2001-11-14 01:47:19 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2001-11-17 05:40:36 +08:00
|
|
|
/* Return non-zero if TYPE is a `float singleton' or `double
|
|
|
|
singleton', zero otherwise.
|
|
|
|
|
|
|
|
A `T singleton' is a struct type with one member, whose type is
|
|
|
|
either T or a `T singleton'. So, the following are all float
|
|
|
|
singletons:
|
|
|
|
|
|
|
|
struct { float x };
|
|
|
|
struct { struct { float x; } x; };
|
|
|
|
struct { struct { struct { float x; } x; } x; };
|
|
|
|
|
|
|
|
... and so on.
|
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
All such structures are passed as if they were floats or doubles,
|
|
|
|
as the (revised) ABI says. */
|
2001-11-17 05:40:36 +08:00
|
|
|
static int
|
|
|
|
is_float_singleton (struct type *type)
|
|
|
|
{
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
if (TYPE_CODE (type) == TYPE_CODE_STRUCT && TYPE_NFIELDS (type) == 1)
|
|
|
|
{
|
|
|
|
struct type *singleton_type = TYPE_FIELD_TYPE (type, 0);
|
|
|
|
CHECK_TYPEDEF (singleton_type);
|
|
|
|
|
|
|
|
return (TYPE_CODE (singleton_type) == TYPE_CODE_FLT
|
2008-01-31 23:43:32 +08:00
|
|
|
|| TYPE_CODE (singleton_type) == TYPE_CODE_DECFLOAT
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
|| is_float_singleton (singleton_type));
|
|
|
|
}
|
|
|
|
|
|
|
|
return 0;
|
2001-11-17 05:40:36 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* Return non-zero if TYPE is a struct-like type, zero otherwise.
|
|
|
|
"Struct-like" types are those that should be passed as structs are:
|
|
|
|
structs and unions.
|
|
|
|
|
|
|
|
As an odd quirk, not mentioned in the ABI, GCC passes float and
|
|
|
|
double singletons as if they were a plain float, double, etc. (The
|
|
|
|
corresponding union types are handled normally.) So we exclude
|
|
|
|
those types here. *shrug* */
|
|
|
|
static int
|
|
|
|
is_struct_like (struct type *type)
|
|
|
|
{
|
|
|
|
enum type_code code = TYPE_CODE (type);
|
|
|
|
|
|
|
|
return (code == TYPE_CODE_UNION
|
2013-10-31 01:51:57 +08:00
|
|
|
|| (code == TYPE_CODE_STRUCT && ! is_float_singleton (type)));
|
2001-11-17 05:40:36 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* Return non-zero if TYPE is a float-like type, zero otherwise.
|
|
|
|
"Float-like" types are those that should be passed as
|
|
|
|
floating-point values are.
|
|
|
|
|
|
|
|
You'd think this would just be floats, doubles, long doubles, etc.
|
|
|
|
But as an odd quirk, not mentioned in the ABI, GCC passes float and
|
|
|
|
double singletons as if they were a plain float, double, etc. (The
|
2003-07-01 08:05:37 +08:00
|
|
|
corresponding union types are handled normally.) So we include
|
2001-11-17 05:40:36 +08:00
|
|
|
those types here. *shrug* */
|
|
|
|
static int
|
|
|
|
is_float_like (struct type *type)
|
|
|
|
{
|
|
|
|
return (TYPE_CODE (type) == TYPE_CODE_FLT
|
2008-01-31 23:43:32 +08:00
|
|
|
|| TYPE_CODE (type) == TYPE_CODE_DECFLOAT
|
2013-10-31 01:51:57 +08:00
|
|
|
|| is_float_singleton (type));
|
2001-11-17 05:40:36 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
2001-11-14 01:47:19 +08:00
|
|
|
static int
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
is_power_of_two (unsigned int n)
|
2001-11-14 01:47:19 +08:00
|
|
|
{
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
return ((n & (n - 1)) == 0);
|
2001-11-14 01:47:19 +08:00
|
|
|
}
|
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
/* Return non-zero if TYPE should be passed as a pointer to a copy,
|
|
|
|
zero otherwise. */
|
2003-07-01 08:05:37 +08:00
|
|
|
static int
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
s390_function_arg_pass_by_reference (struct type *type)
|
2003-07-01 08:05:37 +08:00
|
|
|
{
|
2012-09-17 16:52:18 +08:00
|
|
|
if (TYPE_LENGTH (type) > 8)
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
return 1;
|
2003-07-01 08:05:37 +08:00
|
|
|
|
2011-09-22 01:00:31 +08:00
|
|
|
return (is_struct_like (type) && !is_power_of_two (TYPE_LENGTH (type)))
|
|
|
|
|| TYPE_CODE (type) == TYPE_CODE_COMPLEX
|
|
|
|
|| (TYPE_CODE (type) == TYPE_CODE_ARRAY && TYPE_VECTOR (type));
|
2003-07-01 08:05:37 +08:00
|
|
|
}
|
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
/* Return non-zero if TYPE should be passed in a float register
|
|
|
|
if possible. */
|
2001-11-14 01:47:19 +08:00
|
|
|
static int
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
s390_function_arg_float (struct type *type)
|
2001-11-14 01:47:19 +08:00
|
|
|
{
|
2012-09-17 16:52:18 +08:00
|
|
|
if (TYPE_LENGTH (type) > 8)
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
return 0;
|
2001-11-14 01:47:19 +08:00
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
return is_float_like (type);
|
2003-07-01 08:05:37 +08:00
|
|
|
}
|
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
/* Return non-zero if TYPE should be passed in an integer register
|
|
|
|
(or a pair of integer registers) if possible. */
|
2001-11-14 01:47:19 +08:00
|
|
|
static int
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
s390_function_arg_integer (struct type *type)
|
2001-11-14 01:47:19 +08:00
|
|
|
{
|
2012-09-17 16:52:18 +08:00
|
|
|
if (TYPE_LENGTH (type) > 8)
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
return 0;
|
2001-11-14 01:47:19 +08:00
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
return is_integer_like (type)
|
|
|
|
|| is_pointer_like (type)
|
2012-09-17 16:52:18 +08:00
|
|
|
|| (is_struct_like (type) && is_power_of_two (TYPE_LENGTH (type)));
|
2001-11-14 01:47:19 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
/* Return ARG, a `SIMPLE_ARG', sign-extended or zero-extended to a full
|
|
|
|
word as required for the ABI. */
|
|
|
|
static LONGEST
|
* 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
|
|
|
extend_simple_arg (struct gdbarch *gdbarch, struct value *arg)
|
2001-11-14 01:47:19 +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
|
|
|
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
|
2011-09-22 01:00:31 +08:00
|
|
|
struct type *type = check_typedef (value_type (arg));
|
2001-11-14 01:47:19 +08:00
|
|
|
|
|
|
|
/* Even structs get passed in the least significant bits of the
|
|
|
|
register / memory word. It's not really right to extract them as
|
|
|
|
an integer, but it does take care of the extension. */
|
|
|
|
if (TYPE_UNSIGNED (type))
|
2005-02-06 Andrew Cagney <cagney@gnu.org>
* value.c (value_contents, value_contents_writeable): New
functions.
* value.h (VALUE_CONTENTS): Delete macro.
(value_contents, value_contents_writeable): Declare.
* xstormy16-tdep.c, value.c, valops.c, valarith.c: Update.
* stack.c, sparc-tdep.c, sparc64-tdep.c, sh-tdep.c: Update.
* sh64-tdep.c, scm-valprint.c, scm-exp.c, s390-tdep.c: Update.
* rs6000-tdep.c, p-valprint.c, printcmd.c: Update.
* ppc-sysv-tdep.c, mips-tdep.c, mi/mi-main.c: Update.
* m88k-tdep.c, m68hc11-tdep.c, m32r-tdep.c: Update.
* jv-valprint.c, ia64-tdep.c, hppa-tdep.c: Update.
* hpacc-abi.c, f-valprint.c, frv-tdep.c, eval.c: Update.
* c-valprint.c, cris-tdep.c, cp-valprint.c: Update.
* cli/cli-dump.c, breakpoint.c, avr-tdep.c, arm-tdep.c: Update.
* arm-linux-tdep.c, amd64-tdep.c, alpha-tdep.c: Update.
* ada-valprint.c, ada-lang.c: Update.
2005-02-07 08:09:56 +08:00
|
|
|
return extract_unsigned_integer (value_contents (arg),
|
2013-10-31 01:51:57 +08:00
|
|
|
TYPE_LENGTH (type), byte_order);
|
2001-11-14 01:47:19 +08:00
|
|
|
else
|
2005-02-06 Andrew Cagney <cagney@gnu.org>
* value.c (value_contents, value_contents_writeable): New
functions.
* value.h (VALUE_CONTENTS): Delete macro.
(value_contents, value_contents_writeable): Declare.
* xstormy16-tdep.c, value.c, valops.c, valarith.c: Update.
* stack.c, sparc-tdep.c, sparc64-tdep.c, sh-tdep.c: Update.
* sh64-tdep.c, scm-valprint.c, scm-exp.c, s390-tdep.c: Update.
* rs6000-tdep.c, p-valprint.c, printcmd.c: Update.
* ppc-sysv-tdep.c, mips-tdep.c, mi/mi-main.c: Update.
* m88k-tdep.c, m68hc11-tdep.c, m32r-tdep.c: Update.
* jv-valprint.c, ia64-tdep.c, hppa-tdep.c: Update.
* hpacc-abi.c, f-valprint.c, frv-tdep.c, eval.c: Update.
* c-valprint.c, cris-tdep.c, cp-valprint.c: Update.
* cli/cli-dump.c, breakpoint.c, avr-tdep.c, arm-tdep.c: Update.
* arm-linux-tdep.c, amd64-tdep.c, alpha-tdep.c: Update.
* ada-valprint.c, ada-lang.c: Update.
2005-02-07 08:09:56 +08:00
|
|
|
return extract_signed_integer (value_contents (arg),
|
2013-10-31 01:51:57 +08:00
|
|
|
TYPE_LENGTH (type), byte_order);
|
2001-11-14 01:47:19 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* Return the alignment required by TYPE. */
|
|
|
|
static int
|
|
|
|
alignment_of (struct type *type)
|
|
|
|
{
|
|
|
|
int alignment;
|
|
|
|
|
|
|
|
if (is_integer_like (type)
|
|
|
|
|| is_pointer_like (type)
|
2008-01-31 23:43:32 +08:00
|
|
|
|| TYPE_CODE (type) == TYPE_CODE_FLT
|
|
|
|
|| TYPE_CODE (type) == TYPE_CODE_DECFLOAT)
|
2001-11-14 01:47:19 +08:00
|
|
|
alignment = TYPE_LENGTH (type);
|
|
|
|
else if (TYPE_CODE (type) == TYPE_CODE_STRUCT
|
2013-10-31 01:51:57 +08:00
|
|
|
|| TYPE_CODE (type) == TYPE_CODE_UNION)
|
2001-11-14 01:47:19 +08:00
|
|
|
{
|
|
|
|
int i;
|
|
|
|
|
|
|
|
alignment = 1;
|
|
|
|
for (i = 0; i < TYPE_NFIELDS (type); i++)
|
2013-10-31 01:51:57 +08:00
|
|
|
{
|
|
|
|
int field_alignment
|
2011-09-22 01:00:31 +08:00
|
|
|
= alignment_of (check_typedef (TYPE_FIELD_TYPE (type, i)));
|
2001-11-14 01:47:19 +08:00
|
|
|
|
2013-10-31 01:51:57 +08:00
|
|
|
if (field_alignment > alignment)
|
|
|
|
alignment = field_alignment;
|
|
|
|
}
|
2001-11-14 01:47:19 +08:00
|
|
|
}
|
|
|
|
else
|
|
|
|
alignment = 1;
|
|
|
|
|
|
|
|
/* Check that everything we ever return is a power of two. Lots of
|
|
|
|
code doesn't want to deal with aligning things to arbitrary
|
|
|
|
boundaries. */
|
|
|
|
gdb_assert ((alignment & (alignment - 1)) == 0);
|
|
|
|
|
|
|
|
return alignment;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* Put the actual parameter values pointed to by ARGS[0..NARGS-1] in
|
2002-02-25 06:31:19 +08:00
|
|
|
place to be passed to a function, as specified by the "GNU/Linux
|
|
|
|
for S/390 ELF Application Binary Interface Supplement".
|
2001-11-14 01:47:19 +08:00
|
|
|
|
|
|
|
SP is the current stack pointer. We must put arguments, links,
|
|
|
|
padding, etc. whereever they belong, and return the new stack
|
|
|
|
pointer value.
|
2013-10-31 01:51:57 +08:00
|
|
|
|
2001-11-14 01:47:19 +08:00
|
|
|
If STRUCT_RETURN is non-zero, then the function we're calling is
|
|
|
|
going to return a structure by value; STRUCT_ADDR is the address of
|
|
|
|
a block we've allocated for it on the stack.
|
|
|
|
|
|
|
|
Our caller has taken care of any type promotions needed to satisfy
|
|
|
|
prototypes or the old K&R argument-passing rules. */
|
2003-06-11 21:16:30 +08:00
|
|
|
static CORE_ADDR
|
2004-06-07 10:02:55 +08:00
|
|
|
s390_push_dummy_call (struct gdbarch *gdbarch, struct value *function,
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
struct regcache *regcache, CORE_ADDR bp_addr,
|
|
|
|
int nargs, struct value **args, CORE_ADDR sp,
|
|
|
|
int struct_return, CORE_ADDR struct_addr)
|
2001-10-14 06:13:35 +08:00
|
|
|
{
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
|
|
|
|
int word_size = gdbarch_ptr_bit (gdbarch) / 8;
|
* 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
|
|
|
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
|
2001-11-14 01:47:19 +08:00
|
|
|
int i;
|
2001-10-14 06:13:35 +08:00
|
|
|
|
2001-11-14 01:47:19 +08:00
|
|
|
/* If the i'th argument is passed as a reference to a copy, then
|
|
|
|
copy_addr[i] is the address of the copy we made. */
|
|
|
|
CORE_ADDR *copy_addr = alloca (nargs * sizeof (CORE_ADDR));
|
2001-10-14 06:13:35 +08:00
|
|
|
|
2010-06-26 01:47:29 +08:00
|
|
|
/* Reserve space for the reference-to-copy area. */
|
2001-11-14 01:47:19 +08:00
|
|
|
for (i = 0; i < nargs; i++)
|
|
|
|
{
|
|
|
|
struct value *arg = args[i];
|
2011-09-22 01:00:31 +08:00
|
|
|
struct type *type = check_typedef (value_type (arg));
|
2001-10-14 06:13:35 +08:00
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
if (s390_function_arg_pass_by_reference (type))
|
2013-10-31 01:51:57 +08:00
|
|
|
{
|
|
|
|
sp -= TYPE_LENGTH (type);
|
|
|
|
sp = align_down (sp, alignment_of (type));
|
|
|
|
copy_addr[i] = sp;
|
|
|
|
}
|
2001-10-14 06:13:35 +08:00
|
|
|
}
|
|
|
|
|
2001-11-14 01:47:19 +08:00
|
|
|
/* Reserve space for the parameter area. As a conservative
|
|
|
|
simplification, we assume that everything will be passed on the
|
2013-10-31 01:51:57 +08:00
|
|
|
stack. Since every argument larger than 8 bytes will be
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
passed by reference, we use this simple upper bound. */
|
|
|
|
sp -= nargs * 8;
|
2001-11-14 01:47:19 +08:00
|
|
|
|
|
|
|
/* After all that, make sure it's still aligned on an eight-byte
|
|
|
|
boundary. */
|
2003-09-20 00:22:39 +08:00
|
|
|
sp = align_down (sp, 8);
|
2001-11-14 01:47:19 +08:00
|
|
|
|
2010-06-26 01:47:29 +08:00
|
|
|
/* Allocate the standard frame areas: the register save area, the
|
|
|
|
word reserved for the compiler (which seems kind of meaningless),
|
|
|
|
and the back chain pointer. */
|
|
|
|
sp -= 16*word_size + 32;
|
|
|
|
|
|
|
|
/* Now we have the final SP value. Make sure we didn't underflow;
|
|
|
|
on 31-bit, this would result in addresses with the high bit set,
|
|
|
|
which causes confusion elsewhere. Note that if we error out
|
|
|
|
here, stack and registers remain untouched. */
|
|
|
|
if (gdbarch_addr_bits_remove (gdbarch, sp) != sp)
|
|
|
|
error (_("Stack overflow"));
|
|
|
|
|
|
|
|
|
2001-11-14 01:47:19 +08:00
|
|
|
/* Finally, place the actual parameters, working from SP towards
|
|
|
|
higher addresses. The code above is supposed to reserve enough
|
|
|
|
space for this. */
|
|
|
|
{
|
|
|
|
int fr = 0;
|
|
|
|
int gr = 2;
|
2010-06-26 01:47:29 +08:00
|
|
|
CORE_ADDR starg = sp + 16*word_size + 32;
|
2001-11-14 01:47:19 +08:00
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
/* A struct is returned using general register 2. */
|
2003-07-01 08:05:37 +08:00
|
|
|
if (struct_return)
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
{
|
|
|
|
regcache_cooked_write_unsigned (regcache, S390_R0_REGNUM + gr,
|
2013-10-31 01:51:57 +08:00
|
|
|
struct_addr);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
gr++;
|
|
|
|
}
|
2003-07-01 08:05:37 +08:00
|
|
|
|
2001-11-14 01:47:19 +08:00
|
|
|
for (i = 0; i < nargs; i++)
|
|
|
|
{
|
2013-10-31 01:51:57 +08:00
|
|
|
struct value *arg = args[i];
|
|
|
|
struct type *type = check_typedef (value_type (arg));
|
|
|
|
unsigned length = TYPE_LENGTH (type);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
|
|
|
|
if (s390_function_arg_pass_by_reference (type))
|
|
|
|
{
|
2010-06-26 01:47:29 +08:00
|
|
|
/* Actually copy the argument contents to the stack slot
|
|
|
|
that was reserved above. */
|
|
|
|
write_memory (copy_addr[i], value_contents (arg), length);
|
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
if (gr <= 6)
|
|
|
|
{
|
|
|
|
regcache_cooked_write_unsigned (regcache, S390_R0_REGNUM + gr,
|
2013-10-31 01:51:57 +08:00
|
|
|
copy_addr[i]);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
gr++;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
* 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
|
|
|
write_memory_unsigned_integer (starg, word_size, byte_order,
|
|
|
|
copy_addr[i]);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
starg += word_size;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (s390_function_arg_float (type))
|
|
|
|
{
|
|
|
|
/* The GNU/Linux for S/390 ABI uses FPRs 0 and 2 to pass arguments,
|
|
|
|
the GNU/Linux for zSeries ABI uses 0, 2, 4, and 6. */
|
|
|
|
if (fr <= (tdep->abi == ABI_LINUX_S390 ? 2 : 6))
|
|
|
|
{
|
|
|
|
/* When we store a single-precision value in an FP register,
|
|
|
|
it occupies the leftmost bits. */
|
|
|
|
regcache_cooked_write_part (regcache, S390_F0_REGNUM + fr,
|
2005-02-06 Andrew Cagney <cagney@gnu.org>
* value.c (value_contents, value_contents_writeable): New
functions.
* value.h (VALUE_CONTENTS): Delete macro.
(value_contents, value_contents_writeable): Declare.
* xstormy16-tdep.c, value.c, valops.c, valarith.c: Update.
* stack.c, sparc-tdep.c, sparc64-tdep.c, sh-tdep.c: Update.
* sh64-tdep.c, scm-valprint.c, scm-exp.c, s390-tdep.c: Update.
* rs6000-tdep.c, p-valprint.c, printcmd.c: Update.
* ppc-sysv-tdep.c, mips-tdep.c, mi/mi-main.c: Update.
* m88k-tdep.c, m68hc11-tdep.c, m32r-tdep.c: Update.
* jv-valprint.c, ia64-tdep.c, hppa-tdep.c: Update.
* hpacc-abi.c, f-valprint.c, frv-tdep.c, eval.c: Update.
* c-valprint.c, cris-tdep.c, cp-valprint.c: Update.
* cli/cli-dump.c, breakpoint.c, avr-tdep.c, arm-tdep.c: Update.
* arm-linux-tdep.c, amd64-tdep.c, alpha-tdep.c: Update.
* ada-valprint.c, ada-lang.c: Update.
2005-02-07 08:09:56 +08:00
|
|
|
0, length, value_contents (arg));
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
fr += 2;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
/* When we store a single-precision value in a stack slot,
|
|
|
|
it occupies the rightmost bits. */
|
|
|
|
starg = align_up (starg + length, word_size);
|
2013-10-31 01:51:57 +08:00
|
|
|
write_memory (starg - length, value_contents (arg), length);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (s390_function_arg_integer (type) && length <= word_size)
|
|
|
|
{
|
|
|
|
if (gr <= 6)
|
|
|
|
{
|
|
|
|
/* Integer arguments are always extended to word size. */
|
|
|
|
regcache_cooked_write_signed (regcache, S390_R0_REGNUM + gr,
|
2011-01-12 05:53:25 +08:00
|
|
|
extend_simple_arg (gdbarch,
|
|
|
|
arg));
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
gr++;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
/* Integer arguments are always extended to word size. */
|
* 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
|
|
|
write_memory_signed_integer (starg, word_size, byte_order,
|
2013-10-31 01:51:57 +08:00
|
|
|
extend_simple_arg (gdbarch, arg));
|
|
|
|
starg += word_size;
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (s390_function_arg_integer (type) && length == 2*word_size)
|
|
|
|
{
|
|
|
|
if (gr <= 5)
|
|
|
|
{
|
|
|
|
regcache_cooked_write (regcache, S390_R0_REGNUM + gr,
|
2005-02-06 Andrew Cagney <cagney@gnu.org>
* value.c (value_contents, value_contents_writeable): New
functions.
* value.h (VALUE_CONTENTS): Delete macro.
(value_contents, value_contents_writeable): Declare.
* xstormy16-tdep.c, value.c, valops.c, valarith.c: Update.
* stack.c, sparc-tdep.c, sparc64-tdep.c, sh-tdep.c: Update.
* sh64-tdep.c, scm-valprint.c, scm-exp.c, s390-tdep.c: Update.
* rs6000-tdep.c, p-valprint.c, printcmd.c: Update.
* ppc-sysv-tdep.c, mips-tdep.c, mi/mi-main.c: Update.
* m88k-tdep.c, m68hc11-tdep.c, m32r-tdep.c: Update.
* jv-valprint.c, ia64-tdep.c, hppa-tdep.c: Update.
* hpacc-abi.c, f-valprint.c, frv-tdep.c, eval.c: Update.
* c-valprint.c, cris-tdep.c, cp-valprint.c: Update.
* cli/cli-dump.c, breakpoint.c, avr-tdep.c, arm-tdep.c: Update.
* arm-linux-tdep.c, amd64-tdep.c, alpha-tdep.c: Update.
* ada-valprint.c, ada-lang.c: Update.
2005-02-07 08:09:56 +08:00
|
|
|
value_contents (arg));
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
regcache_cooked_write (regcache, S390_R0_REGNUM + gr + 1,
|
2005-02-06 Andrew Cagney <cagney@gnu.org>
* value.c (value_contents, value_contents_writeable): New
functions.
* value.h (VALUE_CONTENTS): Delete macro.
(value_contents, value_contents_writeable): Declare.
* xstormy16-tdep.c, value.c, valops.c, valarith.c: Update.
* stack.c, sparc-tdep.c, sparc64-tdep.c, sh-tdep.c: Update.
* sh64-tdep.c, scm-valprint.c, scm-exp.c, s390-tdep.c: Update.
* rs6000-tdep.c, p-valprint.c, printcmd.c: Update.
* ppc-sysv-tdep.c, mips-tdep.c, mi/mi-main.c: Update.
* m88k-tdep.c, m68hc11-tdep.c, m32r-tdep.c: Update.
* jv-valprint.c, ia64-tdep.c, hppa-tdep.c: Update.
* hpacc-abi.c, f-valprint.c, frv-tdep.c, eval.c: Update.
* c-valprint.c, cris-tdep.c, cp-valprint.c: Update.
* cli/cli-dump.c, breakpoint.c, avr-tdep.c, arm-tdep.c: Update.
* arm-linux-tdep.c, amd64-tdep.c, alpha-tdep.c: Update.
* ada-valprint.c, ada-lang.c: Update.
2005-02-07 08:09:56 +08:00
|
|
|
value_contents (arg) + word_size);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
gr += 2;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
/* If we skipped r6 because we couldn't fit a DOUBLE_ARG
|
|
|
|
in it, then don't go back and use it again later. */
|
|
|
|
gr = 7;
|
|
|
|
|
2005-02-06 Andrew Cagney <cagney@gnu.org>
* value.c (value_contents, value_contents_writeable): New
functions.
* value.h (VALUE_CONTENTS): Delete macro.
(value_contents, value_contents_writeable): Declare.
* xstormy16-tdep.c, value.c, valops.c, valarith.c: Update.
* stack.c, sparc-tdep.c, sparc64-tdep.c, sh-tdep.c: Update.
* sh64-tdep.c, scm-valprint.c, scm-exp.c, s390-tdep.c: Update.
* rs6000-tdep.c, p-valprint.c, printcmd.c: Update.
* ppc-sysv-tdep.c, mips-tdep.c, mi/mi-main.c: Update.
* m88k-tdep.c, m68hc11-tdep.c, m32r-tdep.c: Update.
* jv-valprint.c, ia64-tdep.c, hppa-tdep.c: Update.
* hpacc-abi.c, f-valprint.c, frv-tdep.c, eval.c: Update.
* c-valprint.c, cris-tdep.c, cp-valprint.c: Update.
* cli/cli-dump.c, breakpoint.c, avr-tdep.c, arm-tdep.c: Update.
* arm-linux-tdep.c, amd64-tdep.c, alpha-tdep.c: Update.
* ada-valprint.c, ada-lang.c: Update.
2005-02-07 08:09:56 +08:00
|
|
|
write_memory (starg, value_contents (arg), length);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
starg += length;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else
|
2005-02-11 Andrew Cagney <cagney@gnu.org>
Mark up error_no_arg, query, perror_with_name, complaint, and
internal_error.
* breakpoint.c, cp-abi.c, cp-namespace.c, cp-support.c: Update.
* cris-tdep.c, dbxread.c, dictionary.c, dsrec.c: Update.
* dummy-frame.c, dve3900-rom.c, dwarf2-frame.c, dwarf2expr.c: Update.
* dwarf2read.c, dwarfread.c, elfread.c, event-loop.c: Update.
* exceptions.c, exec.c, f-lang.c, findvar.c, fork-child.c: Update.
* frame-unwind.c, frame.c, frv-linux-tdep.c, frv-tdep.c: Update.
* gdb_assert.h, gdbarch.c, gdbtypes.c, gnu-nat.c: Update.
* go32-nat.c, hppa-tdep.c, hppabsd-nat.c, hpread.c: Update.
* i386-linux-nat.c, i386-nat.c, i386-tdep.c, i386bsd-nat.c: Update.
* i386fbsd-nat.c, inf-ptrace.c, inf-ttrace.c, infcall.c: Update.
* infcmd.c, inflow.c, infptrace.c, infrun.c, inftarg.c: Update.
* interps.c, language.c, linespec.c, linux-nat.c: Update.
* m32r-linux-nat.c, m68k-tdep.c, m68kbsd-nat.c: Update.
* m68klinux-nat.c, m88kbsd-nat.c, macroexp.c, macroscope.c: Update.
* macrotab.c, maint.c, mdebugread.c, memattr.c: Update.
* mips-linux-tdep.c, mips-tdep.c, mips64obsd-nat.c: Update.
* mipsnbsd-nat.c, mn10300-tdep.c, monitor.c, nto-procfs.c: Update.
* objc-lang.c, objfiles.c, objfiles.h, ocd.c, osabi.c: Update.
* parse.c, ppc-bdm.c, ppc-linux-nat.c, ppc-sysv-tdep.c: Update.
* ppcnbsd-nat.c, ppcobsd-nat.c, printcmd.c, procfs.c: Update.
* regcache.c, reggroups.c, remote-e7000.c, remote-mips.c: Update.
* remote-rdp.c, remote-sds.c, remote-sim.c, remote-st.c: Update.
* remote-utils.c, remote.c, rs6000-nat.c, rs6000-tdep.c: Update.
* s390-nat.c, s390-tdep.c, sentinel-frame.c, serial.c: Update.
* sh-tdep.c, sh3-rom.c, sh64-tdep.c, shnbsd-nat.c: Update.
* solib-aix5.c, solib-svr4.c, solib.c, source.c: Update.
* sparc-nat.c, stabsread.c, stack.c, symfile.c, symtab.c: Update.
* symtab.h, target.c, tracepoint.c, ui-file.c, ui-out.c: Update.
* utils.c, valops.c, valprint.c, vax-nat.c, vaxbsd-nat.c: Update.
* win32-nat.c, xcoffread.c, xstormy16-tdep.c: Update.
* cli/cli-cmds.c, cli/cli-logging.c, cli/cli-script.c: Update.
* cli/cli-setshow.c, mi/mi-cmd-break.c, mi/mi-cmds.c: Update.
* mi/mi-console.c, mi/mi-getopt.c, mi/mi-out.c: Update.
* tui/tui-file.c, tui/tui-interp.c: Update.
2005-02-12 02:13:55 +08:00
|
|
|
internal_error (__FILE__, __LINE__, _("unknown argument type"));
|
2001-11-14 01:47:19 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2011-12-20 05:44:57 +08:00
|
|
|
/* Store return PSWA. In 31-bit mode, keep addressing mode bit. */
|
|
|
|
if (word_size == 4)
|
|
|
|
{
|
|
|
|
ULONGEST pswa;
|
|
|
|
regcache_cooked_read_unsigned (regcache, S390_PSWA_REGNUM, &pswa);
|
|
|
|
bp_addr = (bp_addr & 0x7fffffff) | (pswa & 0x80000000);
|
|
|
|
}
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
regcache_cooked_write_unsigned (regcache, S390_RETADDR_REGNUM, bp_addr);
|
2011-12-20 05:44:57 +08:00
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
/* Store updated stack pointer. */
|
|
|
|
regcache_cooked_write_unsigned (regcache, S390_SP_REGNUM, sp);
|
2001-11-14 01:47:19 +08:00
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
/* We need to return the 'stack part' of the frame ID,
|
2004-10-24 00:31:23 +08:00
|
|
|
which is actually the top of the register save area. */
|
|
|
|
return sp + 16*word_size + 32;
|
2001-10-14 06:13:35 +08:00
|
|
|
}
|
|
|
|
|
2008-05-01 08:18:27 +08:00
|
|
|
/* Assuming THIS_FRAME is a dummy, return the frame ID of that
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
dummy frame. The frame ID's base needs to match the TOS value
|
|
|
|
returned by push_dummy_call, and the PC match the dummy frame's
|
|
|
|
breakpoint. */
|
|
|
|
static struct frame_id
|
2008-05-01 08:18:27 +08:00
|
|
|
s390_dummy_id (struct gdbarch *gdbarch, struct frame_info *this_frame)
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
{
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
int word_size = gdbarch_ptr_bit (gdbarch) / 8;
|
2008-05-01 08:18:27 +08:00
|
|
|
CORE_ADDR sp = get_frame_register_unsigned (this_frame, S390_SP_REGNUM);
|
|
|
|
sp = gdbarch_addr_bits_remove (gdbarch, sp);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
|
2004-10-24 00:31:23 +08:00
|
|
|
return frame_id_build (sp + 16*word_size + 32,
|
2013-10-31 01:51:57 +08:00
|
|
|
get_frame_pc (this_frame));
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
}
|
2001-11-30 06:24:42 +08:00
|
|
|
|
2003-04-19 04:20:21 +08:00
|
|
|
static CORE_ADDR
|
|
|
|
s390_frame_align (struct gdbarch *gdbarch, CORE_ADDR addr)
|
|
|
|
{
|
|
|
|
/* Both the 32- and 64-bit ABI's say that the stack pointer should
|
|
|
|
always be aligned on an eight-byte boundary. */
|
|
|
|
return (addr & -8);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
/* Function return value access. */
|
|
|
|
|
|
|
|
static enum return_value_convention
|
|
|
|
s390_return_value_convention (struct gdbarch *gdbarch, struct type *type)
|
2001-11-30 06:24:42 +08:00
|
|
|
{
|
2012-09-17 16:52:18 +08:00
|
|
|
if (TYPE_LENGTH (type) > 8)
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
return RETURN_VALUE_STRUCT_CONVENTION;
|
|
|
|
|
|
|
|
switch (TYPE_CODE (type))
|
|
|
|
{
|
|
|
|
case TYPE_CODE_STRUCT:
|
|
|
|
case TYPE_CODE_UNION:
|
|
|
|
case TYPE_CODE_ARRAY:
|
2011-09-22 01:00:31 +08:00
|
|
|
case TYPE_CODE_COMPLEX:
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
return RETURN_VALUE_STRUCT_CONVENTION;
|
2001-11-30 06:24:42 +08:00
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
default:
|
|
|
|
return RETURN_VALUE_REGISTER_CONVENTION;
|
|
|
|
}
|
2001-11-30 06:24:42 +08:00
|
|
|
}
|
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
static enum return_value_convention
|
2012-05-16 22:35:09 +08:00
|
|
|
s390_return_value (struct gdbarch *gdbarch, struct value *function,
|
2008-04-22 19:03:42 +08:00
|
|
|
struct type *type, struct regcache *regcache,
|
|
|
|
gdb_byte *out, const gdb_byte *in)
|
2001-10-14 06:13:35 +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
|
|
|
enum bfd_endian byte_order = gdbarch_byte_order (gdbarch);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
int word_size = gdbarch_ptr_bit (gdbarch) / 8;
|
2011-09-22 01:00:31 +08:00
|
|
|
enum return_value_convention rvc;
|
|
|
|
int length;
|
|
|
|
|
|
|
|
type = check_typedef (type);
|
|
|
|
rvc = s390_return_value_convention (gdbarch, type);
|
|
|
|
length = TYPE_LENGTH (type);
|
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
if (in)
|
|
|
|
{
|
|
|
|
switch (rvc)
|
|
|
|
{
|
|
|
|
case RETURN_VALUE_REGISTER_CONVENTION:
|
2008-01-31 23:43:32 +08:00
|
|
|
if (TYPE_CODE (type) == TYPE_CODE_FLT
|
|
|
|
|| TYPE_CODE (type) == TYPE_CODE_DECFLOAT)
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
{
|
|
|
|
/* When we store a single-precision value in an FP register,
|
|
|
|
it occupies the leftmost bits. */
|
2013-10-31 01:51:57 +08:00
|
|
|
regcache_cooked_write_part (regcache, S390_F0_REGNUM,
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
0, length, in);
|
|
|
|
}
|
|
|
|
else if (length <= word_size)
|
|
|
|
{
|
|
|
|
/* Integer arguments are always extended to word size. */
|
|
|
|
if (TYPE_UNSIGNED (type))
|
|
|
|
regcache_cooked_write_unsigned (regcache, S390_R2_REGNUM,
|
* 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
|
|
|
extract_unsigned_integer (in, length, byte_order));
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
else
|
|
|
|
regcache_cooked_write_signed (regcache, S390_R2_REGNUM,
|
* 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
|
|
|
extract_signed_integer (in, length, byte_order));
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
}
|
|
|
|
else if (length == 2*word_size)
|
|
|
|
{
|
|
|
|
regcache_cooked_write (regcache, S390_R2_REGNUM, in);
|
2005-05-16 20:38:09 +08:00
|
|
|
regcache_cooked_write (regcache, S390_R3_REGNUM, in + word_size);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
}
|
|
|
|
else
|
2005-02-11 Andrew Cagney <cagney@gnu.org>
Mark up error_no_arg, query, perror_with_name, complaint, and
internal_error.
* breakpoint.c, cp-abi.c, cp-namespace.c, cp-support.c: Update.
* cris-tdep.c, dbxread.c, dictionary.c, dsrec.c: Update.
* dummy-frame.c, dve3900-rom.c, dwarf2-frame.c, dwarf2expr.c: Update.
* dwarf2read.c, dwarfread.c, elfread.c, event-loop.c: Update.
* exceptions.c, exec.c, f-lang.c, findvar.c, fork-child.c: Update.
* frame-unwind.c, frame.c, frv-linux-tdep.c, frv-tdep.c: Update.
* gdb_assert.h, gdbarch.c, gdbtypes.c, gnu-nat.c: Update.
* go32-nat.c, hppa-tdep.c, hppabsd-nat.c, hpread.c: Update.
* i386-linux-nat.c, i386-nat.c, i386-tdep.c, i386bsd-nat.c: Update.
* i386fbsd-nat.c, inf-ptrace.c, inf-ttrace.c, infcall.c: Update.
* infcmd.c, inflow.c, infptrace.c, infrun.c, inftarg.c: Update.
* interps.c, language.c, linespec.c, linux-nat.c: Update.
* m32r-linux-nat.c, m68k-tdep.c, m68kbsd-nat.c: Update.
* m68klinux-nat.c, m88kbsd-nat.c, macroexp.c, macroscope.c: Update.
* macrotab.c, maint.c, mdebugread.c, memattr.c: Update.
* mips-linux-tdep.c, mips-tdep.c, mips64obsd-nat.c: Update.
* mipsnbsd-nat.c, mn10300-tdep.c, monitor.c, nto-procfs.c: Update.
* objc-lang.c, objfiles.c, objfiles.h, ocd.c, osabi.c: Update.
* parse.c, ppc-bdm.c, ppc-linux-nat.c, ppc-sysv-tdep.c: Update.
* ppcnbsd-nat.c, ppcobsd-nat.c, printcmd.c, procfs.c: Update.
* regcache.c, reggroups.c, remote-e7000.c, remote-mips.c: Update.
* remote-rdp.c, remote-sds.c, remote-sim.c, remote-st.c: Update.
* remote-utils.c, remote.c, rs6000-nat.c, rs6000-tdep.c: Update.
* s390-nat.c, s390-tdep.c, sentinel-frame.c, serial.c: Update.
* sh-tdep.c, sh3-rom.c, sh64-tdep.c, shnbsd-nat.c: Update.
* solib-aix5.c, solib-svr4.c, solib.c, source.c: Update.
* sparc-nat.c, stabsread.c, stack.c, symfile.c, symtab.c: Update.
* symtab.h, target.c, tracepoint.c, ui-file.c, ui-out.c: Update.
* utils.c, valops.c, valprint.c, vax-nat.c, vaxbsd-nat.c: Update.
* win32-nat.c, xcoffread.c, xstormy16-tdep.c: Update.
* cli/cli-cmds.c, cli/cli-logging.c, cli/cli-script.c: Update.
* cli/cli-setshow.c, mi/mi-cmd-break.c, mi/mi-cmds.c: Update.
* mi/mi-console.c, mi/mi-getopt.c, mi/mi-out.c: Update.
* tui/tui-file.c, tui/tui-interp.c: Update.
2005-02-12 02:13:55 +08:00
|
|
|
internal_error (__FILE__, __LINE__, _("invalid return type"));
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
break;
|
|
|
|
|
|
|
|
case RETURN_VALUE_STRUCT_CONVENTION:
|
2005-02-10 Andrew Cagney <cagney@gnu.org>
Mark up all error and warning messages.
* ada-lang.c, amd64-tdep.c, arch-utils.c, breakpoint.c: Update.
* bsd-kvm.c, bsd-uthread.c, coff-solib.h, coffread.c: Update.
* core-aout.c, core-regset.c, corefile.c, corelow.c: Update.
* cp-abi.c, cp-support.c, cp-valprint.c, cris-tdep.c: Update.
* dbxread.c, demangle.c, doublest.c, dsrec.c: Update.
* dve3900-rom.c, dwarf2expr.c, dwarf2loc.c: Update.
* dwarf2read.c, dwarfread.c, elfread.c, eval.c: Update.
* event-top.c, exec.c, expprint.c, f-lang.c: Update.
* f-typeprint.c, f-valprint.c, fbsd-nat.c, findvar.c: Update.
* frame.c, frv-linux-tdep.c, gcore.c, gdbtypes.c: Update.
* gnu-nat.c, gnu-v2-abi.c, gnu-v3-abi.c, go32-nat.c: Update.
* hpacc-abi.c, hppa-hpux-nat.c, hppa-hpux-tdep.c: Update.
* hppa-linux-nat.c, hppa-linux-tdep.c, hppa-tdep.c: Update.
* hpread.c, hpux-thread.c, i386-linux-nat.c: Update.
* i386-linux-tdep.c, i386-tdep.c, i386bsd-nat.c: Update.
* i386gnu-nat.c, i387-tdep.c, ia64-linux-nat.c: Update.
* ia64-tdep.c, inf-child.c, inf-ptrace.c, inf-ttrace.c: Update.
* infcall.c, infcmd.c, inflow.c, infptrace.c, infrun.c: Update.
* inftarg.c, interps.c, irix5-nat.c, jv-lang.c: Update.
* kod-cisco.c, kod.c, language.c, libunwind-frame.c: Update.
* linespec.c, linux-nat.c, linux-thread-db.c, m2-lang.c: Update.
* m32r-rom.c, m68hc11-tdep.c, m68k-tdep.c: Update.
* m68klinux-nat.c, macrocmd.c, macroexp.c, main.c: Update.
* maint.c, mdebugread.c, mem-break.c, memattr.c: Update.
* mips-linux-tdep.c, mips-tdep.c, mipsread.c, monitor.c: Update.
* nlmread.c, nto-procfs.c, objc-lang.c, objfiles.c: Update.
* observer.c, ocd.c, p-lang.c, p-typeprint.c: Update.
* p-valprint.c, pa64solib.c, parse.c, ppc-linux-tdep.c: Update.
* ppcnbsd-tdep.c, printcmd.c, procfs.c, remote-e7000.c: Update.
* remote-fileio.c, remote-m32r-sdi.c, remote-rdi.c: Update.
* remote-rdp.c, remote-sim.c, remote-st.c: Update.
* remote-utils.c, remote-utils.h, remote.c: Update.
* rom68k-rom.c, rs6000-nat.c, s390-tdep.c, scm-lang.c: Update.
* ser-e7kpc.c, ser-tcp.c, ser-unix.c, sh-tdep.c: Update.
* sh3-rom.c, shnbsd-tdep.c, sol-thread.c, solib-aix5.c: Update.
* solib-frv.c, solib-irix.c, solib-osf.c, solib-pa64.c: Update.
* solib-som.c, solib-sunos.c, solib-svr4.c, solib.c: Update.
* somread.c, somsolib.c, source.c, stabsread.c: Update.
* stack.c, std-regs.c, symfile-mem.c, symfile.c: Update.
* symmisc.c, symtab.c, target.c, thread.c, top.c: Update.
* tracepoint.c, trad-frame.c, typeprint.c, utils.c: Update.
* uw-thread.c, valarith.c, valops.c, valprint.c: Update.
* value.c, varobj.c, version.in, win32-nat.c, wince.c: Update.
* xcoffread.c, xcoffsolib.c, cli/cli-cmds.c: Update.
* cli/cli-decode.c, cli/cli-dump.c, cli/cli-logging.c: Update.
* cli/cli-script.c, cli/cli-setshow.c, mi/mi-cmd-break.c: Update.
* mi/mi-cmd-disas.c, mi/mi-cmd-env.c, mi/mi-cmd-file.c: Update.
* mi/mi-cmd-stack.c, mi/mi-cmd-var.c, mi/mi-getopt.c: Update.
* mi/mi-symbol-cmds.c, tui/tui-layout.c, tui/tui-stack.c: Update.
* tui/tui-win.c: Update.
2005-02-11 12:06:14 +08:00
|
|
|
error (_("Cannot set function return value."));
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if (out)
|
|
|
|
{
|
|
|
|
switch (rvc)
|
|
|
|
{
|
|
|
|
case RETURN_VALUE_REGISTER_CONVENTION:
|
2008-01-31 23:43:32 +08:00
|
|
|
if (TYPE_CODE (type) == TYPE_CODE_FLT
|
|
|
|
|| TYPE_CODE (type) == TYPE_CODE_DECFLOAT)
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
{
|
|
|
|
/* When we store a single-precision value in an FP register,
|
|
|
|
it occupies the leftmost bits. */
|
2013-10-31 01:51:57 +08:00
|
|
|
regcache_cooked_read_part (regcache, S390_F0_REGNUM,
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
0, length, out);
|
|
|
|
}
|
|
|
|
else if (length <= word_size)
|
|
|
|
{
|
|
|
|
/* Integer arguments occupy the rightmost bits. */
|
2013-10-31 01:51:57 +08:00
|
|
|
regcache_cooked_read_part (regcache, S390_R2_REGNUM,
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
word_size - length, length, out);
|
|
|
|
}
|
|
|
|
else if (length == 2*word_size)
|
|
|
|
{
|
|
|
|
regcache_cooked_read (regcache, S390_R2_REGNUM, out);
|
2005-05-16 20:38:09 +08:00
|
|
|
regcache_cooked_read (regcache, S390_R3_REGNUM, out + word_size);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
}
|
|
|
|
else
|
2005-02-11 Andrew Cagney <cagney@gnu.org>
Mark up error_no_arg, query, perror_with_name, complaint, and
internal_error.
* breakpoint.c, cp-abi.c, cp-namespace.c, cp-support.c: Update.
* cris-tdep.c, dbxread.c, dictionary.c, dsrec.c: Update.
* dummy-frame.c, dve3900-rom.c, dwarf2-frame.c, dwarf2expr.c: Update.
* dwarf2read.c, dwarfread.c, elfread.c, event-loop.c: Update.
* exceptions.c, exec.c, f-lang.c, findvar.c, fork-child.c: Update.
* frame-unwind.c, frame.c, frv-linux-tdep.c, frv-tdep.c: Update.
* gdb_assert.h, gdbarch.c, gdbtypes.c, gnu-nat.c: Update.
* go32-nat.c, hppa-tdep.c, hppabsd-nat.c, hpread.c: Update.
* i386-linux-nat.c, i386-nat.c, i386-tdep.c, i386bsd-nat.c: Update.
* i386fbsd-nat.c, inf-ptrace.c, inf-ttrace.c, infcall.c: Update.
* infcmd.c, inflow.c, infptrace.c, infrun.c, inftarg.c: Update.
* interps.c, language.c, linespec.c, linux-nat.c: Update.
* m32r-linux-nat.c, m68k-tdep.c, m68kbsd-nat.c: Update.
* m68klinux-nat.c, m88kbsd-nat.c, macroexp.c, macroscope.c: Update.
* macrotab.c, maint.c, mdebugread.c, memattr.c: Update.
* mips-linux-tdep.c, mips-tdep.c, mips64obsd-nat.c: Update.
* mipsnbsd-nat.c, mn10300-tdep.c, monitor.c, nto-procfs.c: Update.
* objc-lang.c, objfiles.c, objfiles.h, ocd.c, osabi.c: Update.
* parse.c, ppc-bdm.c, ppc-linux-nat.c, ppc-sysv-tdep.c: Update.
* ppcnbsd-nat.c, ppcobsd-nat.c, printcmd.c, procfs.c: Update.
* regcache.c, reggroups.c, remote-e7000.c, remote-mips.c: Update.
* remote-rdp.c, remote-sds.c, remote-sim.c, remote-st.c: Update.
* remote-utils.c, remote.c, rs6000-nat.c, rs6000-tdep.c: Update.
* s390-nat.c, s390-tdep.c, sentinel-frame.c, serial.c: Update.
* sh-tdep.c, sh3-rom.c, sh64-tdep.c, shnbsd-nat.c: Update.
* solib-aix5.c, solib-svr4.c, solib.c, source.c: Update.
* sparc-nat.c, stabsread.c, stack.c, symfile.c, symtab.c: Update.
* symtab.h, target.c, tracepoint.c, ui-file.c, ui-out.c: Update.
* utils.c, valops.c, valprint.c, vax-nat.c, vaxbsd-nat.c: Update.
* win32-nat.c, xcoffread.c, xstormy16-tdep.c: Update.
* cli/cli-cmds.c, cli/cli-logging.c, cli/cli-script.c: Update.
* cli/cli-setshow.c, mi/mi-cmd-break.c, mi/mi-cmds.c: Update.
* mi/mi-console.c, mi/mi-getopt.c, mi/mi-out.c: Update.
* tui/tui-file.c, tui/tui-interp.c: Update.
2005-02-12 02:13:55 +08:00
|
|
|
internal_error (__FILE__, __LINE__, _("invalid return type"));
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
break;
|
2001-10-14 06:13:35 +08:00
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
case RETURN_VALUE_STRUCT_CONVENTION:
|
2005-02-10 Andrew Cagney <cagney@gnu.org>
Mark up all error and warning messages.
* ada-lang.c, amd64-tdep.c, arch-utils.c, breakpoint.c: Update.
* bsd-kvm.c, bsd-uthread.c, coff-solib.h, coffread.c: Update.
* core-aout.c, core-regset.c, corefile.c, corelow.c: Update.
* cp-abi.c, cp-support.c, cp-valprint.c, cris-tdep.c: Update.
* dbxread.c, demangle.c, doublest.c, dsrec.c: Update.
* dve3900-rom.c, dwarf2expr.c, dwarf2loc.c: Update.
* dwarf2read.c, dwarfread.c, elfread.c, eval.c: Update.
* event-top.c, exec.c, expprint.c, f-lang.c: Update.
* f-typeprint.c, f-valprint.c, fbsd-nat.c, findvar.c: Update.
* frame.c, frv-linux-tdep.c, gcore.c, gdbtypes.c: Update.
* gnu-nat.c, gnu-v2-abi.c, gnu-v3-abi.c, go32-nat.c: Update.
* hpacc-abi.c, hppa-hpux-nat.c, hppa-hpux-tdep.c: Update.
* hppa-linux-nat.c, hppa-linux-tdep.c, hppa-tdep.c: Update.
* hpread.c, hpux-thread.c, i386-linux-nat.c: Update.
* i386-linux-tdep.c, i386-tdep.c, i386bsd-nat.c: Update.
* i386gnu-nat.c, i387-tdep.c, ia64-linux-nat.c: Update.
* ia64-tdep.c, inf-child.c, inf-ptrace.c, inf-ttrace.c: Update.
* infcall.c, infcmd.c, inflow.c, infptrace.c, infrun.c: Update.
* inftarg.c, interps.c, irix5-nat.c, jv-lang.c: Update.
* kod-cisco.c, kod.c, language.c, libunwind-frame.c: Update.
* linespec.c, linux-nat.c, linux-thread-db.c, m2-lang.c: Update.
* m32r-rom.c, m68hc11-tdep.c, m68k-tdep.c: Update.
* m68klinux-nat.c, macrocmd.c, macroexp.c, main.c: Update.
* maint.c, mdebugread.c, mem-break.c, memattr.c: Update.
* mips-linux-tdep.c, mips-tdep.c, mipsread.c, monitor.c: Update.
* nlmread.c, nto-procfs.c, objc-lang.c, objfiles.c: Update.
* observer.c, ocd.c, p-lang.c, p-typeprint.c: Update.
* p-valprint.c, pa64solib.c, parse.c, ppc-linux-tdep.c: Update.
* ppcnbsd-tdep.c, printcmd.c, procfs.c, remote-e7000.c: Update.
* remote-fileio.c, remote-m32r-sdi.c, remote-rdi.c: Update.
* remote-rdp.c, remote-sim.c, remote-st.c: Update.
* remote-utils.c, remote-utils.h, remote.c: Update.
* rom68k-rom.c, rs6000-nat.c, s390-tdep.c, scm-lang.c: Update.
* ser-e7kpc.c, ser-tcp.c, ser-unix.c, sh-tdep.c: Update.
* sh3-rom.c, shnbsd-tdep.c, sol-thread.c, solib-aix5.c: Update.
* solib-frv.c, solib-irix.c, solib-osf.c, solib-pa64.c: Update.
* solib-som.c, solib-sunos.c, solib-svr4.c, solib.c: Update.
* somread.c, somsolib.c, source.c, stabsread.c: Update.
* stack.c, std-regs.c, symfile-mem.c, symfile.c: Update.
* symmisc.c, symtab.c, target.c, thread.c, top.c: Update.
* tracepoint.c, trad-frame.c, typeprint.c, utils.c: Update.
* uw-thread.c, valarith.c, valops.c, valprint.c: Update.
* value.c, varobj.c, version.in, win32-nat.c, wince.c: Update.
* xcoffread.c, xcoffsolib.c, cli/cli-cmds.c: Update.
* cli/cli-decode.c, cli/cli-dump.c, cli/cli-logging.c: Update.
* cli/cli-script.c, cli/cli-setshow.c, mi/mi-cmd-break.c: Update.
* mi/mi-cmd-disas.c, mi/mi-cmd-env.c, mi/mi-cmd-file.c: Update.
* mi/mi-cmd-stack.c, mi/mi-cmd-var.c, mi/mi-getopt.c: Update.
* mi/mi-symbol-cmds.c, tui/tui-layout.c, tui/tui-stack.c: Update.
* tui/tui-win.c: Update.
2005-02-11 12:06:14 +08:00
|
|
|
error (_("Function return value unknown."));
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
return rvc;
|
|
|
|
}
|
2001-10-14 06:13:35 +08:00
|
|
|
|
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
/* Breakpoints. */
|
|
|
|
|
2005-05-16 20:38:09 +08:00
|
|
|
static const gdb_byte *
|
2011-01-12 05:53:25 +08:00
|
|
|
s390_breakpoint_from_pc (struct gdbarch *gdbarch,
|
|
|
|
CORE_ADDR *pcptr, int *lenptr)
|
2001-10-14 06:13:35 +08:00
|
|
|
{
|
2005-05-16 20:38:09 +08:00
|
|
|
static const gdb_byte breakpoint[] = { 0x0, 0x1 };
|
2001-10-14 06:13:35 +08:00
|
|
|
|
|
|
|
*lenptr = sizeof (breakpoint);
|
|
|
|
return breakpoint;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
/* Address handling. */
|
2001-10-14 06:13:35 +08:00
|
|
|
|
|
|
|
static CORE_ADDR
|
2008-09-05 19:42:32 +08:00
|
|
|
s390_addr_bits_remove (struct gdbarch *gdbarch, CORE_ADDR addr)
|
2001-10-14 06:13:35 +08:00
|
|
|
{
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
return addr & 0x7fffffff;
|
2001-10-14 06:13:35 +08:00
|
|
|
}
|
|
|
|
|
2003-02-04 04:35:44 +08:00
|
|
|
static int
|
|
|
|
s390_address_class_type_flags (int byte_size, int dwarf2_addr_class)
|
|
|
|
{
|
|
|
|
if (byte_size == 4)
|
2008-08-25 04:33:33 +08:00
|
|
|
return TYPE_INSTANCE_FLAG_ADDRESS_CLASS_1;
|
2003-02-04 04:35:44 +08:00
|
|
|
else
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
|
|
|
static const char *
|
|
|
|
s390_address_class_type_flags_to_name (struct gdbarch *gdbarch, int type_flags)
|
|
|
|
{
|
2008-08-25 04:33:33 +08:00
|
|
|
if (type_flags & TYPE_INSTANCE_FLAG_ADDRESS_CLASS_1)
|
2003-02-04 04:35:44 +08:00
|
|
|
return "mode32";
|
|
|
|
else
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
2003-06-11 21:16:30 +08:00
|
|
|
static int
|
2011-01-12 05:53:25 +08:00
|
|
|
s390_address_class_name_to_type_flags (struct gdbarch *gdbarch,
|
|
|
|
const char *name,
|
2003-02-04 04:35:44 +08:00
|
|
|
int *type_flags_ptr)
|
|
|
|
{
|
|
|
|
if (strcmp (name, "mode32") == 0)
|
|
|
|
{
|
2008-08-25 04:33:33 +08:00
|
|
|
*type_flags_ptr = TYPE_INSTANCE_FLAG_ADDRESS_CLASS_1;
|
2003-02-04 04:35:44 +08:00
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
else
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
2012-04-28 04:47:57 +08:00
|
|
|
/* Implementation of `gdbarch_stap_is_single_operand', as defined in
|
|
|
|
gdbarch.h. */
|
|
|
|
|
|
|
|
static int
|
|
|
|
s390_stap_is_single_operand (struct gdbarch *gdbarch, const char *s)
|
|
|
|
{
|
|
|
|
return ((isdigit (*s) && s[1] == '(' && s[2] == '%') /* Displacement
|
|
|
|
or indirection. */
|
|
|
|
|| *s == '%' /* Register access. */
|
|
|
|
|| isdigit (*s)); /* Literal number. */
|
|
|
|
}
|
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
/* Set up gdbarch struct. */
|
|
|
|
|
2003-06-11 21:16:30 +08:00
|
|
|
static struct gdbarch *
|
2001-10-14 06:13:35 +08:00
|
|
|
s390_gdbarch_init (struct gdbarch_info info, struct gdbarch_list *arches)
|
|
|
|
{
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
const struct target_desc *tdesc = info.target_desc;
|
|
|
|
struct tdesc_arch_data *tdesc_data = NULL;
|
2001-10-14 06:13:35 +08:00
|
|
|
struct gdbarch *gdbarch;
|
|
|
|
struct gdbarch_tdep *tdep;
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
int tdep_abi;
|
|
|
|
int have_upper = 0;
|
ChangeLog:
* s390-tdep.h (S390_ORIG_R2_REGNUM): Define.
(S390_LAST_BREAK_REGNUM): Likewise.
(S390_SYSTEM_CALL_REGNUM): Likewise.
(S390_NUM_REGS): Update.
(s390_regmap_last_break): Add declaration.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(tdesc_s390_linux32v1): Add declaration.
(tdesc_s390_linux32v2): Likewise.
(tdesc_s390_linux64v1): Likewise.
(tdesc_s390_linux64v2): Likewise.
(tdesc_s390x_linux64v1): Likewise.
(tdesc_s390x_linux64v2): Likewise.
* s390-tdep.c: Include new target description files
"features/s390-linux32v1.c", "features/s390-linux32v2.c",
"features/s390-linux64v1.c", "features/s390-linux64v2.c",
"features/s390x-linux64v1.c", and "features/s390x-linux64v2.c".
(s390_cannot_store_register): New function.
(s390_write_pc): Likewise.
(s390_dwarf_regmap): Add fields for new registers.
(s390_regmap_gregset): Likewise.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): Likewise.
(s390_regmap_last_break): New variable.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(s390_last_break_regset): Likewise.
(s390x_last_break_regset): Likewise.
(s390_system_call_regset): Likewise.
(s390_upper_regset_sections): Rename to ...
(s390_linux64_regset_sections): ... this.
(s390_linux32_regset_sections): New variable.
(s390x_linux64_regset_sections): Likewise.
(s390_linux32v1_regset_sections): Likewise.
(s390_linux32v2_regset_sections): Likewise.
(s390_linux64v1_regset_sections): Likewise.
(s390_linux64v2_regset_sections): Likewise.
(s390x_linux64v1_regset_sections): Likewise.
(s390x_linux64v2_regset_sections): Likewise.
(s390_regset_from_core_section): Handle .reg-s390-last-break and
.reg-s390-system-call core file sections.
(s390_core_read_description): Check for presence of
.reg-s390-last-break and .reg-s390-system-call core file
sections and return appropriate target description.
(s390_gdbarch_init): Detect Linux-specific registers "orig_r2",
"last_break" and "system_call" in target description. Install
appropriate gdbarch_core_regset_sections array.
Call set_gdbarch_cannot_store_register and set_gdbarch_write_pc.
(_initialize_s390_tdep): Initialize additional target descriptions.
* s390-nat.c: Include "elf/common.h".
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(have_regset_last_break): New static variable.
(have_regset_system_call): Likewise.
(s390_native_supply): Handle S390_ORIG_R2_REGNUM.
(s390_native_collect): Likewise.
(fetch_regset, store_regset, check_regset): New functions.
(s390_linux_fetch_inferior_registers): Handle S390_LAST_BREAK_REGNUM
and S390_SYSTEM_CALL_REGNUM.
(s390_linux_store_inferior_registers): Likewise.
(s390_read_description): Check for presence of NT_S390_LAST_BREAK
and NT_S390_SYSTEM_CALL regsets and use appropriate description.
* features/Makefile (WHICH): Add s390-linux32v1, s390-linux64v1,
s390x-linux64v1, s390-linux32v2, s390-linux64v2, and s390x-linux64v2.
(s390-linux32v1-expedite): Define.
(s390-linux32v2-expedite): Likewise.
(s390-linux64v1-expedite): Likewise.
(s390-linux64v2-expedite): Likewise.
(s390x-linux64v1-expedite): Likewise.
(s390x-linux64v2-expedite): Likewise.
* features/s390-linux32.xml: Add orig_r2 register.
* features/s390-linux64.xml: Likewise.
* features/s390x-linux64.xml: Likewise.
* features/s390-linux32v1.xml: New file.
* features/s390-linux32v2.xml: Likewise.
* features/s390-linux64v1.xml: Likewise.
* features/s390-linux64v2.xml: Likewise.
* features/s390x-linux64v1.xml: Likewise.
* features/s390x-linux64v2.xml: Likewise.
* features/s390-linux32.c: Regenerate.
* features/s390-linux64.c: Likewise.
* features/s390x-linux64.c: Likewise.
* features/s390-linux32v1.c: New generated file.
* features/s390-linux32v2.c: Likewise.
* features/s390-linux64v1.c: Likewise.
* features/s390-linux64v2.c: Likewise.
* features/s390x-linux64v1.c: Likewise.
* features/s390x-linux64v2.c: Likewise.
* regformats/s390-linux32.dat: Regenerate.
* regformats/s390-linux64.dat: Regenerate.
* regformats/s390x-linux64.dat: Regenerate.
* regformats/s390-linux32v1.dat: New generated file.
* regformats/s390-linux32v2.dat: Likewise.
* regformats/s390-linux64v1.dat: Likewise.
* regformats/s390-linux64v2.dat: Likewise.
* regformats/s390x-linux64v1.dat: Likewise.
* regformats/s390x-linux64v2.dat: Likewise.
gdbserver/ChangeLog:
* Makefile.in (s390-linux32v1.o, s390-linux32v1.c): New rules.
(s390-linux32v2.o, s390-linux32v2.c): Likewise.
(s390-linux64v1.o, s390-linux64v1.c): Likewise.
(s390-linux64v2.o, s390-linux64v2.c): Likewise.
(s390x-linux64v1.o, s390x-linux64v1.c): Likewise.
(s390x-linux64v2.o, s390x-linux64v2.c): Likewise.
* configure.srv [s390*-*-linux*] (srv_regobj): Add new objects.
(srv_xmlfiles): Add new XML files.
* linux-s390-low.c: Include "elf/common.h", <sys/ptrace.h>,
and <sys/uio.h>.
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(init_registers_s390_linux32v1): Add prototype.
(init_registers_s390_linux32v2): Likewise.
(init_registers_s390_linux64v1): Likewise.
(init_registers_s390_linux64v2): Likewise.
(init_registers_s390x_linux64v1): Likewise.
(init_registers_s390x_linux64v2): Likewise.
(s390_num_regs): Increment to 52.
(s390_regmap): Add orig_r2 register.
(s390_num_regs_3264): Increment to 68.
(s390_regmap_3264): Add orig_r2 register.
(s390_collect_ptrace_register): Handle orig_r2 register.
(s390_supply_ptrace_register): Likewise.
(s390_fill_last_break): New function.
(s390_store_last_break): Likewise.
(s390_fill_system_call): New function.
(s390_store_system_call): Likewise.
(target_regsets): Handle NT_S390_LAST_BREAK and NT_S390_SYSTEM_CALL
register sets.
(s390_check_regset): New function.
(s390_arch_setup): Check for presence of NT_S390_LAST_BREAK and
NT_S390_SYSTEM_CALL regsets and use appropriate description.
Update target_regsets for available register sets.
testsuite/ChangeLog:
* gdb.base/callfuncs.exp (fetch_all_registers): Filter out read-only
last_break register on s390*-*-* targets.
2011-12-06 22:14:50 +08:00
|
|
|
int have_linux_v1 = 0;
|
|
|
|
int have_linux_v2 = 0;
|
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
|
|
|
int have_tdb = 0;
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
int first_pseudo_reg, last_pseudo_reg;
|
Extend SystemTap SDT probe argument parser
This patch extends the current generic parser for SystemTap SDT probe
arguments. It can be almost considered a cleanup, but the main point of
it is actually to allow the generic parser to accept multiple prefixes
and suffixes for the its operands (i.e., integers, register names, and
register indirection).
I have chosen to implement this as a list of const strings, and declare
this list as "static" inside each target's method used to initialize
gdbarch.
This patch is actually a preparation for an upcoming patch for ARM,
which implements the support for multiple integer prefixes (as defined
by ARM's asm spec). And AArch64 will also need this, for the same
reason.
This patch was regtested on all architectures that it touches (i.e.,
i386, x86_64, ARM, PPC/PPC64, s390x and IA-64). No regressions were found.
2013-12-19 Sergio Durigan Junior <sergiodj@redhat.com>
* amd64-tdep.c (amd64_init_abi): Declare SystemTap SDT probe
argument prefixes and suffixes. Initialize gdbarch with them.
* arm-linux-tdep.c (arm_linux_init_abi): Likewise.
* gdbarch.c: Regenerate.
* gdbarch.h: Regenerate.
* gdbarch.sh (stap_integer_prefix, stap_integer_suffix)
(stap_register_prefix, stap_register_suffix)
(stap_register_indirection_prefix)
(stap_register_indirection_suffix): Declare as "const char *const
*" instead of "const char *". Adjust printing function. Rename
all of the variables to the plural.
(pstring_list): New function.
* i386-tdep.c (i386_elf_init_abi): Declare SystemTap SDT probe
argument prefixes and suffixes. Initialize gdbarch with them.
* ia64-linux-tdep.c (ia64_linux_init_abi): Likewise.
* ppc-linux-tdep.c (ppc_linux_init_abi): Likewise.
* s390-linux-tdep.c (s390_gdbarch_init): Likewise.
* stap-probe.c (stap_is_generic_prefix): New function.
(stap_is_register_prefix): Likewise.
(stap_is_register_indirection_prefix): Likewise.
(stap_is_integer_prefix): Likewise.
(stap_generic_check_suffix): Likewise.
(stap_check_integer_suffix): Likewise.
(stap_check_register_suffix): Likewise.
(stap_check_register_indirection_suffix): Likewise.
(stap_parse_register_operand): Remove unecessary declarations for
variables holding prefix and suffix information. Use the new
functions listed above for checking for prefixes and suffixes.
(stap_parse_single_operand): Likewise.
2013-12-20 04:53:40 +08:00
|
|
|
static const char *const stap_register_prefixes[] = { "%", NULL };
|
|
|
|
static const char *const stap_register_indirection_prefixes[] = { "(",
|
|
|
|
NULL };
|
|
|
|
static const char *const stap_register_indirection_suffixes[] = { ")",
|
|
|
|
NULL };
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
|
|
|
|
/* Default ABI and register size. */
|
|
|
|
switch (info.bfd_arch_info->mach)
|
|
|
|
{
|
|
|
|
case bfd_mach_s390_31:
|
|
|
|
tdep_abi = ABI_LINUX_S390;
|
|
|
|
break;
|
|
|
|
|
|
|
|
case bfd_mach_s390_64:
|
|
|
|
tdep_abi = ABI_LINUX_ZSERIES;
|
|
|
|
break;
|
|
|
|
|
|
|
|
default:
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Use default target description if none provided by the target. */
|
|
|
|
if (!tdesc_has_registers (tdesc))
|
|
|
|
{
|
|
|
|
if (tdep_abi == ABI_LINUX_S390)
|
|
|
|
tdesc = tdesc_s390_linux32;
|
|
|
|
else
|
|
|
|
tdesc = tdesc_s390x_linux64;
|
|
|
|
}
|
|
|
|
|
|
|
|
/* Check any target description for validity. */
|
|
|
|
if (tdesc_has_registers (tdesc))
|
|
|
|
{
|
|
|
|
static const char *const gprs[] = {
|
|
|
|
"r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7",
|
|
|
|
"r8", "r9", "r10", "r11", "r12", "r13", "r14", "r15"
|
|
|
|
};
|
|
|
|
static const char *const fprs[] = {
|
|
|
|
"f0", "f1", "f2", "f3", "f4", "f5", "f6", "f7",
|
|
|
|
"f8", "f9", "f10", "f11", "f12", "f13", "f14", "f15"
|
|
|
|
};
|
|
|
|
static const char *const acrs[] = {
|
|
|
|
"acr0", "acr1", "acr2", "acr3", "acr4", "acr5", "acr6", "acr7",
|
|
|
|
"acr8", "acr9", "acr10", "acr11", "acr12", "acr13", "acr14", "acr15"
|
|
|
|
};
|
|
|
|
static const char *const gprs_lower[] = {
|
|
|
|
"r0l", "r1l", "r2l", "r3l", "r4l", "r5l", "r6l", "r7l",
|
|
|
|
"r8l", "r9l", "r10l", "r11l", "r12l", "r13l", "r14l", "r15l"
|
|
|
|
};
|
|
|
|
static const char *const gprs_upper[] = {
|
|
|
|
"r0h", "r1h", "r2h", "r3h", "r4h", "r5h", "r6h", "r7h",
|
|
|
|
"r8h", "r9h", "r10h", "r11h", "r12h", "r13h", "r14h", "r15h"
|
|
|
|
};
|
2013-09-13 22:17:31 +08:00
|
|
|
static const char *const tdb_regs[] = {
|
|
|
|
"tdb0", "tac", "tct", "atia",
|
|
|
|
"tr0", "tr1", "tr2", "tr3", "tr4", "tr5", "tr6", "tr7",
|
|
|
|
"tr8", "tr9", "tr10", "tr11", "tr12", "tr13", "tr14", "tr15"
|
|
|
|
};
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
const struct tdesc_feature *feature;
|
|
|
|
int i, valid_p = 1;
|
|
|
|
|
|
|
|
feature = tdesc_find_feature (tdesc, "org.gnu.gdb.s390.core");
|
|
|
|
if (feature == NULL)
|
|
|
|
return NULL;
|
|
|
|
|
|
|
|
tdesc_data = tdesc_data_alloc ();
|
|
|
|
|
|
|
|
valid_p &= tdesc_numbered_register (feature, tdesc_data,
|
|
|
|
S390_PSWM_REGNUM, "pswm");
|
|
|
|
valid_p &= tdesc_numbered_register (feature, tdesc_data,
|
|
|
|
S390_PSWA_REGNUM, "pswa");
|
|
|
|
|
|
|
|
if (tdesc_unnumbered_register (feature, "r0"))
|
|
|
|
{
|
|
|
|
for (i = 0; i < 16; i++)
|
|
|
|
valid_p &= tdesc_numbered_register (feature, tdesc_data,
|
|
|
|
S390_R0_REGNUM + i, gprs[i]);
|
|
|
|
}
|
|
|
|
else
|
|
|
|
{
|
|
|
|
have_upper = 1;
|
|
|
|
|
|
|
|
for (i = 0; i < 16; i++)
|
|
|
|
valid_p &= tdesc_numbered_register (feature, tdesc_data,
|
|
|
|
S390_R0_REGNUM + i,
|
|
|
|
gprs_lower[i]);
|
|
|
|
for (i = 0; i < 16; i++)
|
|
|
|
valid_p &= tdesc_numbered_register (feature, tdesc_data,
|
|
|
|
S390_R0_UPPER_REGNUM + i,
|
|
|
|
gprs_upper[i]);
|
|
|
|
}
|
|
|
|
|
|
|
|
feature = tdesc_find_feature (tdesc, "org.gnu.gdb.s390.fpr");
|
|
|
|
if (feature == NULL)
|
|
|
|
{
|
|
|
|
tdesc_data_cleanup (tdesc_data);
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
valid_p &= tdesc_numbered_register (feature, tdesc_data,
|
|
|
|
S390_FPC_REGNUM, "fpc");
|
|
|
|
for (i = 0; i < 16; i++)
|
|
|
|
valid_p &= tdesc_numbered_register (feature, tdesc_data,
|
|
|
|
S390_F0_REGNUM + i, fprs[i]);
|
2001-10-14 06:13:35 +08:00
|
|
|
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
feature = tdesc_find_feature (tdesc, "org.gnu.gdb.s390.acr");
|
|
|
|
if (feature == NULL)
|
|
|
|
{
|
|
|
|
tdesc_data_cleanup (tdesc_data);
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
for (i = 0; i < 16; i++)
|
|
|
|
valid_p &= tdesc_numbered_register (feature, tdesc_data,
|
|
|
|
S390_A0_REGNUM + i, acrs[i]);
|
|
|
|
|
2011-12-07 21:31:05 +08:00
|
|
|
/* Optional GNU/Linux-specific "registers". */
|
ChangeLog:
* s390-tdep.h (S390_ORIG_R2_REGNUM): Define.
(S390_LAST_BREAK_REGNUM): Likewise.
(S390_SYSTEM_CALL_REGNUM): Likewise.
(S390_NUM_REGS): Update.
(s390_regmap_last_break): Add declaration.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(tdesc_s390_linux32v1): Add declaration.
(tdesc_s390_linux32v2): Likewise.
(tdesc_s390_linux64v1): Likewise.
(tdesc_s390_linux64v2): Likewise.
(tdesc_s390x_linux64v1): Likewise.
(tdesc_s390x_linux64v2): Likewise.
* s390-tdep.c: Include new target description files
"features/s390-linux32v1.c", "features/s390-linux32v2.c",
"features/s390-linux64v1.c", "features/s390-linux64v2.c",
"features/s390x-linux64v1.c", and "features/s390x-linux64v2.c".
(s390_cannot_store_register): New function.
(s390_write_pc): Likewise.
(s390_dwarf_regmap): Add fields for new registers.
(s390_regmap_gregset): Likewise.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): Likewise.
(s390_regmap_last_break): New variable.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(s390_last_break_regset): Likewise.
(s390x_last_break_regset): Likewise.
(s390_system_call_regset): Likewise.
(s390_upper_regset_sections): Rename to ...
(s390_linux64_regset_sections): ... this.
(s390_linux32_regset_sections): New variable.
(s390x_linux64_regset_sections): Likewise.
(s390_linux32v1_regset_sections): Likewise.
(s390_linux32v2_regset_sections): Likewise.
(s390_linux64v1_regset_sections): Likewise.
(s390_linux64v2_regset_sections): Likewise.
(s390x_linux64v1_regset_sections): Likewise.
(s390x_linux64v2_regset_sections): Likewise.
(s390_regset_from_core_section): Handle .reg-s390-last-break and
.reg-s390-system-call core file sections.
(s390_core_read_description): Check for presence of
.reg-s390-last-break and .reg-s390-system-call core file
sections and return appropriate target description.
(s390_gdbarch_init): Detect Linux-specific registers "orig_r2",
"last_break" and "system_call" in target description. Install
appropriate gdbarch_core_regset_sections array.
Call set_gdbarch_cannot_store_register and set_gdbarch_write_pc.
(_initialize_s390_tdep): Initialize additional target descriptions.
* s390-nat.c: Include "elf/common.h".
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(have_regset_last_break): New static variable.
(have_regset_system_call): Likewise.
(s390_native_supply): Handle S390_ORIG_R2_REGNUM.
(s390_native_collect): Likewise.
(fetch_regset, store_regset, check_regset): New functions.
(s390_linux_fetch_inferior_registers): Handle S390_LAST_BREAK_REGNUM
and S390_SYSTEM_CALL_REGNUM.
(s390_linux_store_inferior_registers): Likewise.
(s390_read_description): Check for presence of NT_S390_LAST_BREAK
and NT_S390_SYSTEM_CALL regsets and use appropriate description.
* features/Makefile (WHICH): Add s390-linux32v1, s390-linux64v1,
s390x-linux64v1, s390-linux32v2, s390-linux64v2, and s390x-linux64v2.
(s390-linux32v1-expedite): Define.
(s390-linux32v2-expedite): Likewise.
(s390-linux64v1-expedite): Likewise.
(s390-linux64v2-expedite): Likewise.
(s390x-linux64v1-expedite): Likewise.
(s390x-linux64v2-expedite): Likewise.
* features/s390-linux32.xml: Add orig_r2 register.
* features/s390-linux64.xml: Likewise.
* features/s390x-linux64.xml: Likewise.
* features/s390-linux32v1.xml: New file.
* features/s390-linux32v2.xml: Likewise.
* features/s390-linux64v1.xml: Likewise.
* features/s390-linux64v2.xml: Likewise.
* features/s390x-linux64v1.xml: Likewise.
* features/s390x-linux64v2.xml: Likewise.
* features/s390-linux32.c: Regenerate.
* features/s390-linux64.c: Likewise.
* features/s390x-linux64.c: Likewise.
* features/s390-linux32v1.c: New generated file.
* features/s390-linux32v2.c: Likewise.
* features/s390-linux64v1.c: Likewise.
* features/s390-linux64v2.c: Likewise.
* features/s390x-linux64v1.c: Likewise.
* features/s390x-linux64v2.c: Likewise.
* regformats/s390-linux32.dat: Regenerate.
* regformats/s390-linux64.dat: Regenerate.
* regformats/s390x-linux64.dat: Regenerate.
* regformats/s390-linux32v1.dat: New generated file.
* regformats/s390-linux32v2.dat: Likewise.
* regformats/s390-linux64v1.dat: Likewise.
* regformats/s390-linux64v2.dat: Likewise.
* regformats/s390x-linux64v1.dat: Likewise.
* regformats/s390x-linux64v2.dat: Likewise.
gdbserver/ChangeLog:
* Makefile.in (s390-linux32v1.o, s390-linux32v1.c): New rules.
(s390-linux32v2.o, s390-linux32v2.c): Likewise.
(s390-linux64v1.o, s390-linux64v1.c): Likewise.
(s390-linux64v2.o, s390-linux64v2.c): Likewise.
(s390x-linux64v1.o, s390x-linux64v1.c): Likewise.
(s390x-linux64v2.o, s390x-linux64v2.c): Likewise.
* configure.srv [s390*-*-linux*] (srv_regobj): Add new objects.
(srv_xmlfiles): Add new XML files.
* linux-s390-low.c: Include "elf/common.h", <sys/ptrace.h>,
and <sys/uio.h>.
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(init_registers_s390_linux32v1): Add prototype.
(init_registers_s390_linux32v2): Likewise.
(init_registers_s390_linux64v1): Likewise.
(init_registers_s390_linux64v2): Likewise.
(init_registers_s390x_linux64v1): Likewise.
(init_registers_s390x_linux64v2): Likewise.
(s390_num_regs): Increment to 52.
(s390_regmap): Add orig_r2 register.
(s390_num_regs_3264): Increment to 68.
(s390_regmap_3264): Add orig_r2 register.
(s390_collect_ptrace_register): Handle orig_r2 register.
(s390_supply_ptrace_register): Likewise.
(s390_fill_last_break): New function.
(s390_store_last_break): Likewise.
(s390_fill_system_call): New function.
(s390_store_system_call): Likewise.
(target_regsets): Handle NT_S390_LAST_BREAK and NT_S390_SYSTEM_CALL
register sets.
(s390_check_regset): New function.
(s390_arch_setup): Check for presence of NT_S390_LAST_BREAK and
NT_S390_SYSTEM_CALL regsets and use appropriate description.
Update target_regsets for available register sets.
testsuite/ChangeLog:
* gdb.base/callfuncs.exp (fetch_all_registers): Filter out read-only
last_break register on s390*-*-* targets.
2011-12-06 22:14:50 +08:00
|
|
|
feature = tdesc_find_feature (tdesc, "org.gnu.gdb.s390.linux");
|
|
|
|
if (feature)
|
|
|
|
{
|
|
|
|
tdesc_numbered_register (feature, tdesc_data,
|
|
|
|
S390_ORIG_R2_REGNUM, "orig_r2");
|
|
|
|
|
|
|
|
if (tdesc_numbered_register (feature, tdesc_data,
|
|
|
|
S390_LAST_BREAK_REGNUM, "last_break"))
|
|
|
|
have_linux_v1 = 1;
|
|
|
|
|
|
|
|
if (tdesc_numbered_register (feature, tdesc_data,
|
|
|
|
S390_SYSTEM_CALL_REGNUM, "system_call"))
|
|
|
|
have_linux_v2 = 1;
|
|
|
|
|
|
|
|
if (have_linux_v2 > have_linux_v1)
|
|
|
|
valid_p = 0;
|
|
|
|
}
|
|
|
|
|
2013-09-13 22:17:31 +08:00
|
|
|
/* Transaction diagnostic block. */
|
|
|
|
feature = tdesc_find_feature (tdesc, "org.gnu.gdb.s390.tdb");
|
|
|
|
if (feature)
|
|
|
|
{
|
|
|
|
for (i = 0; i < ARRAY_SIZE (tdb_regs); i++)
|
|
|
|
valid_p &= tdesc_numbered_register (feature, tdesc_data,
|
|
|
|
S390_TDB_DWORD0_REGNUM + i,
|
|
|
|
tdb_regs[i]);
|
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
|
|
|
have_tdb = 1;
|
2013-09-13 22:17:31 +08:00
|
|
|
}
|
|
|
|
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
if (!valid_p)
|
|
|
|
{
|
|
|
|
tdesc_data_cleanup (tdesc_data);
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
}
|
2001-10-14 06:13:35 +08:00
|
|
|
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
/* Find a candidate among extant architectures. */
|
|
|
|
for (arches = gdbarch_list_lookup_by_info (arches, &info);
|
|
|
|
arches != NULL;
|
|
|
|
arches = gdbarch_list_lookup_by_info (arches->next, &info))
|
|
|
|
{
|
|
|
|
tdep = gdbarch_tdep (arches->gdbarch);
|
|
|
|
if (!tdep)
|
|
|
|
continue;
|
|
|
|
if (tdep->abi != tdep_abi)
|
|
|
|
continue;
|
|
|
|
if ((tdep->gpr_full_regnum != -1) != have_upper)
|
|
|
|
continue;
|
|
|
|
if (tdesc_data != NULL)
|
|
|
|
tdesc_data_cleanup (tdesc_data);
|
|
|
|
return arches->gdbarch;
|
|
|
|
}
|
2001-10-14 06:13:35 +08:00
|
|
|
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
/* Otherwise create a new gdbarch for the specified machine type. */
|
replace XCALLOC with XCNEWVEC or XCNEW
This removes XCALLOC and replaces it either with XCNEWVEC, or, if the
number of elements being requested was 1, with XCNEW.
2014-01-13 Tom Tromey <tromey@redhat.com>
* defs.h (XCALLOC): Remove.
* bcache.c (bcache_xmalloc): Use XCNEW, not XCALLOC.
(print_bcache_statistics): Use XCNEWVEC, not XCALLOC.
* dwarf2loc.c (allocate_piece_closure): Likewise.
* elfread.c (elf_symfile_segments): Likewise.
(elf_symfile_segments): Likewise.
* gdbtypes.c (copy_type_recursive): Likewise.
* i386-tdep.c (i386_gdbarch_init): Use XCNEW, not XCALLOC.
* jit.c (jit_frame_sniffer): Use XCNEWVEC, not XCALLOC.
* minsyms.c (prim_record_minimal_symbol_full): Use XCNEW, not
XCALLOC.
* mt-tdep.c (mt_gdbarch_init): Likewise.
* opencl-lang.c (allocate_lval_closure): Use XCNEWVEC, not
XCALLOC.
* psymtab.c (psymbol_compare): Use XCNEW, not XCALLOC.
* regcache.c (regcache_xmalloc_1): Use XCNEWVEC, not XCALLOC.
* registry.c (registry_alloc_data): Likewise.
* rs6000-tdep.c (rs6000_gdbarch_init): Use XCNEW, not XCALLOC.
* s390-linux-tdep.c (s390_gdbarch_init): Likewise.
* serial.c (serial_fdopen_ops): Likewise.
* solib-aix.c (solib_aix_get_section_offsets): Use XCNEWVEC, not
XCALLOC.
* spu-tdep.c (spu_gdbarch_init): Use XCNEW, not XCALLOC.
* symfile.c (default_symfile_segments): Use XCNEW and XCNEWVEC,
not XCALLOC.
2013-12-29 06:32:27 +08:00
|
|
|
tdep = XCNEW (struct gdbarch_tdep);
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
tdep->abi = tdep_abi;
|
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
|
|
|
tdep->have_linux_v1 = have_linux_v1;
|
|
|
|
tdep->have_linux_v2 = have_linux_v2;
|
|
|
|
tdep->have_tdb = have_tdb;
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
gdbarch = gdbarch_alloc (&info, tdep);
|
2001-10-14 06:13:35 +08:00
|
|
|
|
|
|
|
set_gdbarch_believe_pcc_promotion (gdbarch, 0);
|
2001-12-20 11:26:08 +08:00
|
|
|
set_gdbarch_char_signed (gdbarch, 0);
|
2001-10-14 06:13:35 +08:00
|
|
|
|
2008-01-18 00:05:41 +08:00
|
|
|
/* S/390 GNU/Linux uses either 64-bit or 128-bit long doubles.
|
|
|
|
We can safely let them default to 128-bit, since the debug info
|
|
|
|
will give the size of type actually used in each case. */
|
|
|
|
set_gdbarch_long_double_bit (gdbarch, 128);
|
|
|
|
set_gdbarch_long_double_format (gdbarch, floatformats_ia64_quad);
|
|
|
|
|
2003-05-16 06:58:39 +08:00
|
|
|
/* Amount PC must be decremented by after a breakpoint. This is
|
2007-06-14 01:38:43 +08:00
|
|
|
often the number of bytes returned by gdbarch_breakpoint_from_pc but not
|
2003-05-16 06:58:39 +08:00
|
|
|
always. */
|
2001-10-14 06:13:35 +08:00
|
|
|
set_gdbarch_decr_pc_after_break (gdbarch, 2);
|
|
|
|
/* Stack grows downward. */
|
|
|
|
set_gdbarch_inner_than (gdbarch, core_addr_lessthan);
|
|
|
|
set_gdbarch_breakpoint_from_pc (gdbarch, s390_breakpoint_from_pc);
|
|
|
|
set_gdbarch_skip_prologue (gdbarch, s390_skip_prologue);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
set_gdbarch_in_function_epilogue_p (gdbarch, s390_in_function_epilogue_p);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
set_gdbarch_num_regs (gdbarch, S390_NUM_REGS);
|
2001-10-14 06:13:35 +08:00
|
|
|
set_gdbarch_sp_regnum (gdbarch, S390_SP_REGNUM);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* config/s390/nm-linux.h: Update comments. Do not include "solib.h".
(KERNEL_U_ADDR, REGISTER_U_ADDR, U_REGS_OFFSET): Remove.
(FETCH_INFERIOR_REGISTERS): Define.
* config/s390/s390.mh (NATDEPFILES): Remove core-aout.o and
core-regset.o.
* config/s390/s390x.mt: Remove.
* config/s390/tm-s390.h: Remove.
* config/s390/tm-linux.h: Do not include "s390/tm-s390.h".
(TARGET_ELF64): Remove.
(SKIP_TRAMPOLINE_CODE): Do not undefine.
* configure.tgt [s390-*-*, s390x-*-*]: Merge into single
s390*-*-* case; always set gdb_target to s390.
* regformats/reg-s390.dat: Remove control registers.
* regformats/reg-s390x.dat: Likewise.
* s390-tdep.h: New file.
* s390-nat.c: Do not include <asm/processor.h> or <value.h>.
Include "inferior.h" and "s390-tdep.h".
Remove private definition of offsetof.
(s390_register_u_addr): Remove.
(regmap_gregset, regmap_fpregset): Define.
(supply_gregset, fill_gregset): Reimplement.
(supply_fpregset, fill_fpregset): Likewise.
(s390_inferior_tid): New function.
(fetch_regs, store_regs, fetch_fpregs, store_fpregs): Likewise.
(fetch_inferior_registers, store_inferior_registers): Likewise.
* s390-tdep.c: Do not define S390_TDEP. Include "defs.h" instead
of <defs.h>. Include "reggroups.h", "regset.h", and "s390-tdep.h".
Global replace of S390_GP0_REGNUM by S390_R0_REGNUM.
Global replace of S390_FP0_REGNUM by S390_F0_REGNUM.
(struct gdbarch_tdep): Define.
(struct s390_register_info): Define.
(s390_register_info): New variable.
(s390_register_name): Reimplement.
(s390_register_type): New function.
(s390_register_raw_size, s390x_register_raw_size): Remove.
(s390_cannot_fetch_register): Remove.
(s390_register_byte): Remove.
(s390_register_virtual_type, s390x_register_virtual_type): Remove.
(s390_dwarf_regmap): New variable.
(s390_dwarf_reg_to_regnum): New function.
(s390_stab_reg_to_regnum): Remove.
(s390_pseudo_register_read, s390_pseudo_register_write): New functions.
(s390x_pseudo_register_read, s390x_pseudo_register_write): Likewise.
(s390_convert_register_p): Likewise.
(s390_register_to_value, s390_value_to_register): Likewise.
(s390_register_reggroup_p): Likewise.
(s390_regmap_gregset, s390x_regmap_gregset, s390_regmap_fpregset,
s390_gregset, s390x_gregset, s390_fpregset): New variables.
(s390_supply_regset, s390_regset_from_core_section): New functions.
(GDB_TARGET_IS_ESAME): Move here from tm-s390.h.
(S390_FPR_SIZE): Likewise.
(S390_GPR_SIZE): Likewise. Redefine in terms of GDB_TARGET_IS_ESAME.
Global replace of DEPRECATED_REGISTER_SIZE by S390_GPR_SIZE.
(S390_NUM_GPRS): Move here from tm-s390.h.
(S390_NUM_FPRS): Likewise.
(s390_in_function_epilogue_p): New function.
(s390_is_sigreturn): Replace S390_PSW_ADDR_SIZE by S390_GPR_SIZE.
Replace S390_PC_REGNUM by S390_PSWA_REGNUM.
(s390_gdbarch_init): Allocate and set up gdbarch_tdep structure.
Replace s390_stab_reg_to_regnum by s390_dwarf_reg_to_regnum.
Replace S390_FP_REGNUM by S390_SP_REGNUM.
Remove calls to:
set_gdbarch_deprecated_max_register_raw_size,
set_gdbarch_deprecated_max_register_virtual_size,
set_gdbarch_deprecated_register_byte,
set_gdbarch_cannot_fetch_register,
set_gdbarch_cannot_store_register,
set_gdbarch_deprecated_register_size,
set_gdbarch_deprecated_register_raw_size,
set_gdbarch_deprecated_register_virtual_size,
set_gdbarch_deprecated_register_virtual_type,
set_gdbarch_deprecated_register_bytes.
Add calls to:
set_gdbarch_num_pseudo_regs,
set_gdbarch_register_type,
set_gdbarch_convert_register_p,
set_gdbarch_register_to_value,
set_gdbarch_value_to_register,
set_gdbarch_register_reggroup_p,
set_gdbarch_regset_from_core_section,
set_gdbarch_pseudo_register_read,
set_gdbarch_pseudo_register_write,
set_gdbarch_in_function_epilogue_p.
* Makefile.in (s390-nat.o, s390-tdep.o): Update dependencies.
(s390_tdep_h): New variable.
2004-02-18 11:42:51 +08:00
|
|
|
set_gdbarch_fp0_regnum (gdbarch, S390_F0_REGNUM);
|
|
|
|
set_gdbarch_stab_reg_to_regnum (gdbarch, s390_dwarf_reg_to_regnum);
|
|
|
|
set_gdbarch_dwarf2_reg_to_regnum (gdbarch, s390_dwarf_reg_to_regnum);
|
2007-01-09 04:03:49 +08:00
|
|
|
set_gdbarch_value_from_register (gdbarch, s390_value_from_register);
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
set_gdbarch_core_read_description (gdbarch, s390_core_read_description);
|
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
|
|
|
set_gdbarch_iterate_over_regset_sections (gdbarch,
|
|
|
|
s390_iterate_over_regset_sections);
|
ChangeLog:
* s390-tdep.h (S390_ORIG_R2_REGNUM): Define.
(S390_LAST_BREAK_REGNUM): Likewise.
(S390_SYSTEM_CALL_REGNUM): Likewise.
(S390_NUM_REGS): Update.
(s390_regmap_last_break): Add declaration.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(tdesc_s390_linux32v1): Add declaration.
(tdesc_s390_linux32v2): Likewise.
(tdesc_s390_linux64v1): Likewise.
(tdesc_s390_linux64v2): Likewise.
(tdesc_s390x_linux64v1): Likewise.
(tdesc_s390x_linux64v2): Likewise.
* s390-tdep.c: Include new target description files
"features/s390-linux32v1.c", "features/s390-linux32v2.c",
"features/s390-linux64v1.c", "features/s390-linux64v2.c",
"features/s390x-linux64v1.c", and "features/s390x-linux64v2.c".
(s390_cannot_store_register): New function.
(s390_write_pc): Likewise.
(s390_dwarf_regmap): Add fields for new registers.
(s390_regmap_gregset): Likewise.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): Likewise.
(s390_regmap_last_break): New variable.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(s390_last_break_regset): Likewise.
(s390x_last_break_regset): Likewise.
(s390_system_call_regset): Likewise.
(s390_upper_regset_sections): Rename to ...
(s390_linux64_regset_sections): ... this.
(s390_linux32_regset_sections): New variable.
(s390x_linux64_regset_sections): Likewise.
(s390_linux32v1_regset_sections): Likewise.
(s390_linux32v2_regset_sections): Likewise.
(s390_linux64v1_regset_sections): Likewise.
(s390_linux64v2_regset_sections): Likewise.
(s390x_linux64v1_regset_sections): Likewise.
(s390x_linux64v2_regset_sections): Likewise.
(s390_regset_from_core_section): Handle .reg-s390-last-break and
.reg-s390-system-call core file sections.
(s390_core_read_description): Check for presence of
.reg-s390-last-break and .reg-s390-system-call core file
sections and return appropriate target description.
(s390_gdbarch_init): Detect Linux-specific registers "orig_r2",
"last_break" and "system_call" in target description. Install
appropriate gdbarch_core_regset_sections array.
Call set_gdbarch_cannot_store_register and set_gdbarch_write_pc.
(_initialize_s390_tdep): Initialize additional target descriptions.
* s390-nat.c: Include "elf/common.h".
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(have_regset_last_break): New static variable.
(have_regset_system_call): Likewise.
(s390_native_supply): Handle S390_ORIG_R2_REGNUM.
(s390_native_collect): Likewise.
(fetch_regset, store_regset, check_regset): New functions.
(s390_linux_fetch_inferior_registers): Handle S390_LAST_BREAK_REGNUM
and S390_SYSTEM_CALL_REGNUM.
(s390_linux_store_inferior_registers): Likewise.
(s390_read_description): Check for presence of NT_S390_LAST_BREAK
and NT_S390_SYSTEM_CALL regsets and use appropriate description.
* features/Makefile (WHICH): Add s390-linux32v1, s390-linux64v1,
s390x-linux64v1, s390-linux32v2, s390-linux64v2, and s390x-linux64v2.
(s390-linux32v1-expedite): Define.
(s390-linux32v2-expedite): Likewise.
(s390-linux64v1-expedite): Likewise.
(s390-linux64v2-expedite): Likewise.
(s390x-linux64v1-expedite): Likewise.
(s390x-linux64v2-expedite): Likewise.
* features/s390-linux32.xml: Add orig_r2 register.
* features/s390-linux64.xml: Likewise.
* features/s390x-linux64.xml: Likewise.
* features/s390-linux32v1.xml: New file.
* features/s390-linux32v2.xml: Likewise.
* features/s390-linux64v1.xml: Likewise.
* features/s390-linux64v2.xml: Likewise.
* features/s390x-linux64v1.xml: Likewise.
* features/s390x-linux64v2.xml: Likewise.
* features/s390-linux32.c: Regenerate.
* features/s390-linux64.c: Likewise.
* features/s390x-linux64.c: Likewise.
* features/s390-linux32v1.c: New generated file.
* features/s390-linux32v2.c: Likewise.
* features/s390-linux64v1.c: Likewise.
* features/s390-linux64v2.c: Likewise.
* features/s390x-linux64v1.c: Likewise.
* features/s390x-linux64v2.c: Likewise.
* regformats/s390-linux32.dat: Regenerate.
* regformats/s390-linux64.dat: Regenerate.
* regformats/s390x-linux64.dat: Regenerate.
* regformats/s390-linux32v1.dat: New generated file.
* regformats/s390-linux32v2.dat: Likewise.
* regformats/s390-linux64v1.dat: Likewise.
* regformats/s390-linux64v2.dat: Likewise.
* regformats/s390x-linux64v1.dat: Likewise.
* regformats/s390x-linux64v2.dat: Likewise.
gdbserver/ChangeLog:
* Makefile.in (s390-linux32v1.o, s390-linux32v1.c): New rules.
(s390-linux32v2.o, s390-linux32v2.c): Likewise.
(s390-linux64v1.o, s390-linux64v1.c): Likewise.
(s390-linux64v2.o, s390-linux64v2.c): Likewise.
(s390x-linux64v1.o, s390x-linux64v1.c): Likewise.
(s390x-linux64v2.o, s390x-linux64v2.c): Likewise.
* configure.srv [s390*-*-linux*] (srv_regobj): Add new objects.
(srv_xmlfiles): Add new XML files.
* linux-s390-low.c: Include "elf/common.h", <sys/ptrace.h>,
and <sys/uio.h>.
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(init_registers_s390_linux32v1): Add prototype.
(init_registers_s390_linux32v2): Likewise.
(init_registers_s390_linux64v1): Likewise.
(init_registers_s390_linux64v2): Likewise.
(init_registers_s390x_linux64v1): Likewise.
(init_registers_s390x_linux64v2): Likewise.
(s390_num_regs): Increment to 52.
(s390_regmap): Add orig_r2 register.
(s390_num_regs_3264): Increment to 68.
(s390_regmap_3264): Add orig_r2 register.
(s390_collect_ptrace_register): Handle orig_r2 register.
(s390_supply_ptrace_register): Likewise.
(s390_fill_last_break): New function.
(s390_store_last_break): Likewise.
(s390_fill_system_call): New function.
(s390_store_system_call): Likewise.
(target_regsets): Handle NT_S390_LAST_BREAK and NT_S390_SYSTEM_CALL
register sets.
(s390_check_regset): New function.
(s390_arch_setup): Check for presence of NT_S390_LAST_BREAK and
NT_S390_SYSTEM_CALL regsets and use appropriate description.
Update target_regsets for available register sets.
testsuite/ChangeLog:
* gdb.base/callfuncs.exp (fetch_all_registers): Filter out read-only
last_break register on s390*-*-* targets.
2011-12-06 22:14:50 +08:00
|
|
|
set_gdbarch_cannot_store_register (gdbarch, s390_cannot_store_register);
|
|
|
|
set_gdbarch_write_pc (gdbarch, s390_write_pc);
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
set_gdbarch_pseudo_register_read (gdbarch, s390_pseudo_register_read);
|
|
|
|
set_gdbarch_pseudo_register_write (gdbarch, s390_pseudo_register_write);
|
|
|
|
set_tdesc_pseudo_register_name (gdbarch, s390_pseudo_register_name);
|
|
|
|
set_tdesc_pseudo_register_type (gdbarch, s390_pseudo_register_type);
|
|
|
|
set_tdesc_pseudo_register_reggroup_p (gdbarch,
|
2013-10-31 01:51:57 +08:00
|
|
|
s390_pseudo_register_reggroup_p);
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
tdesc_use_registers (gdbarch, tdesc, tdesc_data);
|
|
|
|
|
|
|
|
/* Assign pseudo register numbers. */
|
|
|
|
first_pseudo_reg = gdbarch_num_regs (gdbarch);
|
|
|
|
last_pseudo_reg = first_pseudo_reg;
|
|
|
|
tdep->gpr_full_regnum = -1;
|
|
|
|
if (have_upper)
|
|
|
|
{
|
|
|
|
tdep->gpr_full_regnum = last_pseudo_reg;
|
|
|
|
last_pseudo_reg += 16;
|
|
|
|
}
|
|
|
|
tdep->pc_regnum = last_pseudo_reg++;
|
|
|
|
tdep->cc_regnum = last_pseudo_reg++;
|
|
|
|
set_gdbarch_pc_regnum (gdbarch, tdep->pc_regnum);
|
|
|
|
set_gdbarch_num_pseudo_regs (gdbarch, last_pseudo_reg - first_pseudo_reg);
|
2001-10-14 06:13:35 +08:00
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
/* Inferior function calls. */
|
|
|
|
set_gdbarch_push_dummy_call (gdbarch, s390_push_dummy_call);
|
2008-05-01 08:18:27 +08:00
|
|
|
set_gdbarch_dummy_id (gdbarch, s390_dummy_id);
|
2003-04-19 04:20:21 +08:00
|
|
|
set_gdbarch_frame_align (gdbarch, s390_frame_align);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
set_gdbarch_return_value (gdbarch, s390_return_value);
|
2001-10-14 06:13:35 +08:00
|
|
|
|
2014-01-23 01:54:43 +08:00
|
|
|
/* Syscall handling. */
|
|
|
|
set_gdbarch_get_syscall_number (gdbarch, s390_linux_get_syscall_number);
|
|
|
|
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
/* Frame handling. */
|
2004-02-27 07:48:01 +08:00
|
|
|
dwarf2_frame_set_init_reg (gdbarch, s390_dwarf2_frame_init_reg);
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
dwarf2_frame_set_adjust_regnum (gdbarch, s390_adjust_frame_regnum);
|
2008-05-01 08:18:27 +08:00
|
|
|
dwarf2_append_unwinders (gdbarch);
|
2004-02-27 07:48:01 +08:00
|
|
|
frame_base_append_sniffer (gdbarch, dwarf2_frame_base_sniffer);
|
2008-05-01 08:18:27 +08:00
|
|
|
frame_unwind_append_unwinder (gdbarch, &s390_stub_frame_unwind);
|
|
|
|
frame_unwind_append_unwinder (gdbarch, &s390_sigtramp_frame_unwind);
|
|
|
|
frame_unwind_append_unwinder (gdbarch, &s390_frame_unwind);
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c: Include "trad-frame.h", "frame-base.h", and
"frame-unwind.h".
(s390_readinstruction): Reformat. Use read_memory_nobpt.
(GDB_TARGET_IS_ESAME, S390_GPR_SIZE, S390_FPR_SIZE): Remove.
(S390_SYSCALL_OPCODE, S390_SYSCALL_SIZE): Remove.
(S390_SIGCONTEXT_SREGS_OFFSET, S390X_SIGCONTEXT_SREGS_OFFSET,
S390_SIGREGS_FP0_OFFSET, S390X_SIGREGS_FP0_OFFSET,
S390_UC_MCONTEXT_OFFSET, S390X_UC_MCONTEXT_OFFSET,
S390_SIGNAL_FRAMESIZE,
s390_NR_sigreturn, s390_NR_rt_sigreturn): Remove.
(struct frame_extra_info): Remove.
(s390_memset_extra_info): Remove.
(op_*, op1_*, op2_* enums): Add several new opcodes.
(is_rse): Renamed to ...
(is_rsy): ... this. Support long displacements.
(is_rxe): Renamed to ...
(is_rxy): ... this. Support long displacements.
(compute_x_addr): Support long displacements.
(struct s390_prologue_data): New data type.
(s390_on_stack): Change API to use struct s390_prologue_data.
(s390_store): Reimplement.
(s390_load): New function.
(s390_get_signal_frame_info): Remove.
(s390_get_frame_info): Remove, replace by ...
(s390_analyze_prolog): ... this new function.
(s390_check_function_end): Remove.
(s390_function_start): Remove.
(s390_frameless_function_invokation): Remove.
(s390_is_sigreturn): Remove.
(s390_init_frame_pc_first): Remove.
(s390_init_frame_extra_info): Remove.
(s390_frame_init_saved_regs): Remove.
(s390_frame_saved_pc_nofix): Remove.
(s390_frame_saved_pc): Remove.
(s390_frame_chain): Remove.
(s390_fp_regnum, s390_read_fp): Remove.
(s390_pop_frame_regular, s390_pop_frame): Remove.
(s390_saved_pc_after_call): Remove.
(s390_skip_prologue): Reimplement.
(s390_in_function_epilogue_p): Support long displacements.
(struct s390_unwind_cache): New data structure.
(s390_frame_unwind_cache): New function.
(s390_prologue_frame_unwind_cache): Likewise.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_this_id, s390_frame_prev_register): Likewise.
(s390_frame_unwind): Define.
(s390_frame_sniffer): New function.
(struct s390_pltstub_unwind_cache): New data structure.
(s390_pltstub_frame_unwind_cache): New function.
(s390_pltstub_frame_this_id): Likewise.
(s390_pltstub_frame_prev_register): Likewise.
(s390_pltstub_frame_unwind): Define.
(s390_pltstub_frame_sniffer): New function.
(struct s390_sigtramp_unwind_cache): New data structure.
(s390_sigtramp_frame_unwind_cache): New function.
(s390_sigtramp_frame_this_id): Likewise.
(s390_sigtramp_frame_prev_register): Likewise.
(s390_sigtramp_frame_unwind): Define.
(s390_sigtramp_frame_sniffer): New function.
(s390_frame_base_address, s390_local_base_address): New functions.
(s390_frame_base): Define.
(s390_unwind_pc, s390_unwind_sp): New function.
(s390_push_dummy_call): Use new frame base location.
(s390_unwind_dummy_id): Likewise.
(s390_gdbarch_init): Remove calls to:
set_gdbarch_frameless_function_invocation,
set_gdbarch_deprecated_init_frame_pc,
set_gdbarch_deprecated_frame_chain,
set_gdbarch_deprecated_frame_init_saved_regs,
set_gdbarch_deprecated_pop_frame,
set_gdbarch_deprecated_init_extra_frame_info,
set_gdbarch_deprecated_init_frame_pc_first,
set_gdbarch_deprecated_target_read_fp,
set_gdbarch_deprecated_frame_saved_pc,
set_gdbarch_deprecated_saved_pc_after_call,
set_gdbarch_deprecated_fp_regnum.
Add calls to:
set_gdbarch_in_solib_call_trampoline,
frame_unwind_append_sniffer,
frame_base_set_default,
set_gdbarch_unwind_pc,
set_gdbarch_unwind_sp.
* Makefile.in (s390-tdep.o): Update dependencies.
2004-02-18 12:07:48 +08:00
|
|
|
frame_base_set_default (gdbarch, &s390_frame_base);
|
|
|
|
set_gdbarch_unwind_pc (gdbarch, s390_unwind_pc);
|
|
|
|
set_gdbarch_unwind_sp (gdbarch, s390_unwind_sp);
|
|
|
|
|
* s390-tdep.c (op_bctr, op_bctgr, op_bct, op1_bctg, op2_bctg,
op_bxh, op1_bxhg, op2_bxhg, op_bxle, op1_bxleg, op2_bxleg,
op1_brct, op2_brct, op1_brctg, op2_brctg, op_brxh, op1_brxhg,
op2_brxhg, op_brxle, op1_brxlg, op2_brxlg): New enum values.
(is_rsi, is_rie): New insn format decoder routines.
(s390_displaced_step_fixup): New function.
(s390_gdbarch_init): Install displaced stepping routines.
2009-09-28 04:47:42 +08:00
|
|
|
/* Displaced stepping. */
|
|
|
|
set_gdbarch_displaced_step_copy_insn (gdbarch,
|
2013-10-31 01:51:57 +08:00
|
|
|
simple_displaced_step_copy_insn);
|
* s390-tdep.c (op_bctr, op_bctgr, op_bct, op1_bctg, op2_bctg,
op_bxh, op1_bxhg, op2_bxhg, op_bxle, op1_bxleg, op2_bxleg,
op1_brct, op2_brct, op1_brctg, op2_brctg, op_brxh, op1_brxhg,
op2_brxhg, op_brxle, op1_brxlg, op2_brxlg): New enum values.
(is_rsi, is_rie): New insn format decoder routines.
(s390_displaced_step_fixup): New function.
(s390_gdbarch_init): Install displaced stepping routines.
2009-09-28 04:47:42 +08:00
|
|
|
set_gdbarch_displaced_step_fixup (gdbarch, s390_displaced_step_fixup);
|
|
|
|
set_gdbarch_displaced_step_free_closure (gdbarch,
|
2013-10-31 01:51:57 +08:00
|
|
|
simple_displaced_step_free_closure);
|
* s390-tdep.c (op_bctr, op_bctgr, op_bct, op1_bctg, op2_bctg,
op_bxh, op1_bxhg, op2_bxhg, op_bxle, op1_bxleg, op2_bxleg,
op1_brct, op2_brct, op1_brctg, op2_brctg, op_brxh, op1_brxhg,
op2_brxhg, op_brxle, op1_brxlg, op2_brxlg): New enum values.
(is_rsi, is_rie): New insn format decoder routines.
(s390_displaced_step_fixup): New function.
(s390_gdbarch_init): Install displaced stepping routines.
2009-09-28 04:47:42 +08:00
|
|
|
set_gdbarch_displaced_step_location (gdbarch,
|
2013-10-31 01:51:57 +08:00
|
|
|
displaced_step_at_entry_point);
|
* s390-tdep.c (op_bctr, op_bctgr, op_bct, op1_bctg, op2_bctg,
op_bxh, op1_bxhg, op2_bxhg, op_bxle, op1_bxleg, op2_bxleg,
op1_brct, op2_brct, op1_brctg, op2_brctg, op_brxh, op1_brxhg,
op2_brxhg, op_brxle, op1_brxlg, op2_brxlg): New enum values.
(is_rsi, is_rie): New insn format decoder routines.
(s390_displaced_step_fixup): New function.
(s390_gdbarch_init): Install displaced stepping routines.
2009-09-28 04:47:42 +08:00
|
|
|
set_gdbarch_max_insn_length (gdbarch, S390_MAX_INSTR_SIZE);
|
|
|
|
|
2010-08-05 04:40:57 +08:00
|
|
|
/* Note that GNU/Linux is the only OS supported on this
|
|
|
|
platform. */
|
|
|
|
linux_init_abi (info, gdbarch);
|
|
|
|
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
switch (tdep->abi)
|
2001-10-14 06:13:35 +08:00
|
|
|
{
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
case ABI_LINUX_S390:
|
2001-10-14 06:13:35 +08:00
|
|
|
set_gdbarch_addr_bits_remove (gdbarch, s390_addr_bits_remove);
|
2006-01-16 02:28:58 +08:00
|
|
|
set_solib_svr4_fetch_link_map_offsets
|
|
|
|
(gdbarch, svr4_ilp32_fetch_link_map_offsets);
|
ChangeLog:
* s390-tdep.h (S390_ORIG_R2_REGNUM): Define.
(S390_LAST_BREAK_REGNUM): Likewise.
(S390_SYSTEM_CALL_REGNUM): Likewise.
(S390_NUM_REGS): Update.
(s390_regmap_last_break): Add declaration.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(tdesc_s390_linux32v1): Add declaration.
(tdesc_s390_linux32v2): Likewise.
(tdesc_s390_linux64v1): Likewise.
(tdesc_s390_linux64v2): Likewise.
(tdesc_s390x_linux64v1): Likewise.
(tdesc_s390x_linux64v2): Likewise.
* s390-tdep.c: Include new target description files
"features/s390-linux32v1.c", "features/s390-linux32v2.c",
"features/s390-linux64v1.c", "features/s390-linux64v2.c",
"features/s390x-linux64v1.c", and "features/s390x-linux64v2.c".
(s390_cannot_store_register): New function.
(s390_write_pc): Likewise.
(s390_dwarf_regmap): Add fields for new registers.
(s390_regmap_gregset): Likewise.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): Likewise.
(s390_regmap_last_break): New variable.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(s390_last_break_regset): Likewise.
(s390x_last_break_regset): Likewise.
(s390_system_call_regset): Likewise.
(s390_upper_regset_sections): Rename to ...
(s390_linux64_regset_sections): ... this.
(s390_linux32_regset_sections): New variable.
(s390x_linux64_regset_sections): Likewise.
(s390_linux32v1_regset_sections): Likewise.
(s390_linux32v2_regset_sections): Likewise.
(s390_linux64v1_regset_sections): Likewise.
(s390_linux64v2_regset_sections): Likewise.
(s390x_linux64v1_regset_sections): Likewise.
(s390x_linux64v2_regset_sections): Likewise.
(s390_regset_from_core_section): Handle .reg-s390-last-break and
.reg-s390-system-call core file sections.
(s390_core_read_description): Check for presence of
.reg-s390-last-break and .reg-s390-system-call core file
sections and return appropriate target description.
(s390_gdbarch_init): Detect Linux-specific registers "orig_r2",
"last_break" and "system_call" in target description. Install
appropriate gdbarch_core_regset_sections array.
Call set_gdbarch_cannot_store_register and set_gdbarch_write_pc.
(_initialize_s390_tdep): Initialize additional target descriptions.
* s390-nat.c: Include "elf/common.h".
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(have_regset_last_break): New static variable.
(have_regset_system_call): Likewise.
(s390_native_supply): Handle S390_ORIG_R2_REGNUM.
(s390_native_collect): Likewise.
(fetch_regset, store_regset, check_regset): New functions.
(s390_linux_fetch_inferior_registers): Handle S390_LAST_BREAK_REGNUM
and S390_SYSTEM_CALL_REGNUM.
(s390_linux_store_inferior_registers): Likewise.
(s390_read_description): Check for presence of NT_S390_LAST_BREAK
and NT_S390_SYSTEM_CALL regsets and use appropriate description.
* features/Makefile (WHICH): Add s390-linux32v1, s390-linux64v1,
s390x-linux64v1, s390-linux32v2, s390-linux64v2, and s390x-linux64v2.
(s390-linux32v1-expedite): Define.
(s390-linux32v2-expedite): Likewise.
(s390-linux64v1-expedite): Likewise.
(s390-linux64v2-expedite): Likewise.
(s390x-linux64v1-expedite): Likewise.
(s390x-linux64v2-expedite): Likewise.
* features/s390-linux32.xml: Add orig_r2 register.
* features/s390-linux64.xml: Likewise.
* features/s390x-linux64.xml: Likewise.
* features/s390-linux32v1.xml: New file.
* features/s390-linux32v2.xml: Likewise.
* features/s390-linux64v1.xml: Likewise.
* features/s390-linux64v2.xml: Likewise.
* features/s390x-linux64v1.xml: Likewise.
* features/s390x-linux64v2.xml: Likewise.
* features/s390-linux32.c: Regenerate.
* features/s390-linux64.c: Likewise.
* features/s390x-linux64.c: Likewise.
* features/s390-linux32v1.c: New generated file.
* features/s390-linux32v2.c: Likewise.
* features/s390-linux64v1.c: Likewise.
* features/s390-linux64v2.c: Likewise.
* features/s390x-linux64v1.c: Likewise.
* features/s390x-linux64v2.c: Likewise.
* regformats/s390-linux32.dat: Regenerate.
* regformats/s390-linux64.dat: Regenerate.
* regformats/s390x-linux64.dat: Regenerate.
* regformats/s390-linux32v1.dat: New generated file.
* regformats/s390-linux32v2.dat: Likewise.
* regformats/s390-linux64v1.dat: Likewise.
* regformats/s390-linux64v2.dat: Likewise.
* regformats/s390x-linux64v1.dat: Likewise.
* regformats/s390x-linux64v2.dat: Likewise.
gdbserver/ChangeLog:
* Makefile.in (s390-linux32v1.o, s390-linux32v1.c): New rules.
(s390-linux32v2.o, s390-linux32v2.c): Likewise.
(s390-linux64v1.o, s390-linux64v1.c): Likewise.
(s390-linux64v2.o, s390-linux64v2.c): Likewise.
(s390x-linux64v1.o, s390x-linux64v1.c): Likewise.
(s390x-linux64v2.o, s390x-linux64v2.c): Likewise.
* configure.srv [s390*-*-linux*] (srv_regobj): Add new objects.
(srv_xmlfiles): Add new XML files.
* linux-s390-low.c: Include "elf/common.h", <sys/ptrace.h>,
and <sys/uio.h>.
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(init_registers_s390_linux32v1): Add prototype.
(init_registers_s390_linux32v2): Likewise.
(init_registers_s390_linux64v1): Likewise.
(init_registers_s390_linux64v2): Likewise.
(init_registers_s390x_linux64v1): Likewise.
(init_registers_s390x_linux64v2): Likewise.
(s390_num_regs): Increment to 52.
(s390_regmap): Add orig_r2 register.
(s390_num_regs_3264): Increment to 68.
(s390_regmap_3264): Add orig_r2 register.
(s390_collect_ptrace_register): Handle orig_r2 register.
(s390_supply_ptrace_register): Likewise.
(s390_fill_last_break): New function.
(s390_store_last_break): Likewise.
(s390_fill_system_call): New function.
(s390_store_system_call): Likewise.
(target_regsets): Handle NT_S390_LAST_BREAK and NT_S390_SYSTEM_CALL
register sets.
(s390_check_regset): New function.
(s390_arch_setup): Check for presence of NT_S390_LAST_BREAK and
NT_S390_SYSTEM_CALL regsets and use appropriate description.
Update target_regsets for available register sets.
testsuite/ChangeLog:
* gdb.base/callfuncs.exp (fetch_all_registers): Filter out read-only
last_break register on s390*-*-* targets.
2011-12-06 22:14:50 +08:00
|
|
|
|
Partial fix for PR breakpoints/10737: Make syscall info be per-arch instead of global
This patch intends to partially fix PR breakpoints/10737, which is
about making the syscall information (for the "catch syscall" command)
be per-arch, instead of global. This is not a full fix because of the
other issues pointed by Pedro here:
<https://sourceware.org/bugzilla/show_bug.cgi?id=10737#c5>
However, I consider it a good step towards the real fix. It will also
help me fix <https://sourceware.org/bugzilla/show_bug.cgi?id=17402>.
What this patch does, basically, is move the "syscalls_info"
struct to gdbarch. Currently, the syscall information is stored in a
global variable inside gdb/xml-syscall.c, which means that there is no
easy way to correlate this info with the current target or
architecture being used, for example. This causes strange behaviors,
because the syscall info is not re-read when the arch changes. For
example, if you put a syscall catchpoint in syscall 5 on i386 (syscall
open), and then load a x86_64 program on GDB and put the same syscall
5 there (fstat on x86_64), you will still see that GDB tells you that
it is catching "open", even though it is not. With this patch, GDB
correctly says that it will be catching fstat syscalls.
(gdb) set architecture i386
The target architecture is assumed to be i386
(gdb) catch syscall 5
Catchpoint 1 (syscall 'open' [5])
(gdb) set architecture i386:x86-64
The target architecture is assumed to be i386:x86-64
(gdb) catch syscall 5
Catchpoint 2 (syscall 'open' [5])
But with the patch:
(gdb) set architecture i386
The target architecture is assumed to be i386
(gdb) catch syscall 5
Catchpoint 1 (syscall 'open' [5])
(gdb) set architecture i386:x86-64
The target architecture is assumed to be i386:x86-64
(gdb) catch syscall 5
Catchpoint 2 (syscall 'fstat' [5])
As I said, there are still some problems on the "catch syscall"
mechanism, because (for example) the user should be able to "catch
syscall open" on i386, and then expect "open" to be caught also on
x86_64. Currently, it doesn't work. I intend to work on this later.
gdb/
2014-11-20 Sergio Durigan Junior <sergiodj@redhat.com>
PR breakpoints/10737
* amd64-linux-tdep.c (amd64_linux_init_abi_common): Adjust call to
set_xml_syscall_file_name to provide gdbarch.
* arm-linux-tdep.c (arm_linux_init_abi): Likewise.
* bfin-linux-tdep.c (bfin_linux_init_abi): Likewise.
* breakpoint.c (print_it_catch_syscall): Adjust call to
get_syscall_by_number to provide gdbarch.
(print_one_catch_syscall): Likewise.
(print_mention_catch_syscall): Likewise.
(print_recreate_catch_syscall): Likewise.
(catch_syscall_split_args): Adjust calls to get_syscall_by_number
and get_syscall_by_name to provide gdbarch.
(catch_syscall_completer): Adjust call to get_syscall_names to
provide gdbarch.
* gdbarch.c: Regenerate.
* gdbarch.h: Likewise.
* gdbarch.sh: Forward declare "struct syscalls_info".
(xml_syscall_file): New variable.
(syscalls_info): Likewise.
* i386-linux-tdep.c (i386_linux_init_abi): Adjust call to
set_xml_syscall_file_name to provide gdbarch.
* mips-linux-tdep.c (mips_linux_init_abi): Likewise.
* ppc-linux-tdep.c (ppc_linux_init_abi): Likewise.
* s390-linux-tdep.c (s390_gdbarch_init): Likewise.
* sparc-linux-tdep.c (sparc32_linux_init_abi): Likewise.
* sparc64-linux-tdep.c (sparc64_linux_init_abi): Likewise.
* xml-syscall.c: Include gdbarch.h.
(set_xml_syscall_file_name): Accept gdbarch parameter.
(get_syscall_by_number): Likewise.
(get_syscall_by_name): Likewise.
(get_syscall_names): Likewise.
(my_gdb_datadir): Delete global variable.
(struct syscalls_info) <my_gdb_datadir>: New variable.
(struct syscalls_info) <sysinfo>: Rename variable to
"syscalls_info".
(sysinfo): Delete global variable.
(have_initialized_sysinfo): Likewise.
(xml_syscall_file): Likewise.
(sysinfo_free_syscalls_desc): Rename to...
(syscalls_info_free_syscalls_desc): ... this.
(free_syscalls_info): Rename "sysinfo" to "syscalls_info". Adjust
code to the new layout of "struct syscalls_info".
(make_cleanup_free_syscalls_info): Rename parameter "sysinfo" to
"syscalls_info".
(syscall_create_syscall_desc): Likewise.
(syscall_start_syscall): Likewise.
(syscall_parse_xml): Likewise.
(xml_init_syscalls_info): Likewise. Drop "const" from return value.
(init_sysinfo): Rename to...
(init_syscalls_info): ...this. Add gdbarch as a parameter.
Adjust function to deal with gdbarch.
(xml_get_syscall_number): Delete parameter sysinfo. Accept
gdbarch as a parameter. Adjust code.
(xml_get_syscall_name): Likewise.
(xml_list_of_syscalls): Likewise.
(set_xml_syscall_file_name): Accept gdbarch as parameter.
(get_syscall_by_number): Likewise.
(get_syscall_by_name): Likewise.
(get_syscall_names): Likewise.
* xml-syscall.h (set_xml_syscall_file_name): Likewise.
(get_syscall_by_number): Likewise.
(get_syscall_by_name): Likewise.
(get_syscall_names): Likewise.
gdb/testsuite/
2014-11-20 Sergio Durigan Junior <sergiodj@redhat.com>
PR breakpoints/10737
* gdb.base/catch-syscall.exp (do_syscall_tests): Call
test_catch_syscall_multi_arch.
(test_catch_syscall_multi_arch): New function.
2014-11-21 01:28:18 +08:00
|
|
|
set_xml_syscall_file_name (gdbarch, XML_SYSCALL_FILENAME_S390);
|
2001-10-14 06:13:35 +08:00
|
|
|
break;
|
2004-02-17 Ulrich Weigand <Ulrich.Weigand@de.ibm.com>
Committed by Jim Blandy <jimb@redhat.com>.
* s390-tdep.c (struct gdbarch_tdep): Add 'abi' member.
(S390_STACK_FRAME_OVERHEAD): Remove.
(S390_STACK_PARAMETER_ALIGNMENT): Remove.
(S390_NUM_FP_PARAMETER_REGISTERS): Remove.
(s390_promote_integer_argument): Remove.
(s390_cannot_extract_struct_value_address): Remove.
(s390_use_struct_convention, s390_store_struct_return): Remove.
(s390_extract_return_value, s390_store_return_value): Remove.
(s390_return_value_convention, s390_return_value): New functions.
(is_float_singleton): Handle typedefs.
(is_double_or_float, is_double_arg, is_simple_arg, pass_by_copy_ref):
Remove, replace by ...
(s390_function_arg_pass_by_reference, s390_function_arg_float,
s390_function_arg_integer): ... these new functions.
(s390_push_arguments, s390_push_return_address): Remove, replace by ...
(s390_push_dummy_call, s390_unwind_dummy_id): ... these new functions.
(s390_gdbarch_init): Remove s390_call_dummy_words and elf_flags.
Fill in tdep->abi.
Remove calls to:
set_gdbarch_deprecated_store_struct_return,
set_gdbarch_deprecated_extract_return_value,
set_gdbarch_deprecated_store_return_value,
set_gdbarch_use_struct_convention,
set_gdbarch_extract_struct_value_address,
set_gdbarch_deprecated_pc_in_call_dummy,
set_gdbarch_deprecated_push_arguments,
set_gdbarch_deprecated_save_dummy_frame_tos,
set_gdbarch_deprecated_push_return_address,
set_gdbarch_deprecated_sizeof_call_dummy_words,
set_gdbarch_deprecated_call_dummy_words,
set_gdbarch_deprecated_dummy_write_sp.
Add calls to:
set_gdbarch_push_dummy_call,
set_gdbarch_unwind_dummy_id,
set_gdbarch_return_value.
2004-02-18 11:54:11 +08:00
|
|
|
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
case ABI_LINUX_ZSERIES:
|
2001-10-14 06:13:35 +08:00
|
|
|
set_gdbarch_long_bit (gdbarch, 64);
|
|
|
|
set_gdbarch_long_long_bit (gdbarch, 64);
|
|
|
|
set_gdbarch_ptr_bit (gdbarch, 64);
|
2006-01-16 02:28:58 +08:00
|
|
|
set_solib_svr4_fetch_link_map_offsets
|
|
|
|
(gdbarch, svr4_lp64_fetch_link_map_offsets);
|
2003-02-04 04:35:44 +08:00
|
|
|
set_gdbarch_address_class_type_flags (gdbarch,
|
2013-10-31 01:51:57 +08:00
|
|
|
s390_address_class_type_flags);
|
2003-02-04 04:35:44 +08:00
|
|
|
set_gdbarch_address_class_type_flags_to_name (gdbarch,
|
2013-10-31 01:51:57 +08:00
|
|
|
s390_address_class_type_flags_to_name);
|
2003-02-04 04:35:44 +08:00
|
|
|
set_gdbarch_address_class_name_to_type_flags (gdbarch,
|
2013-10-31 01:51:57 +08:00
|
|
|
s390_address_class_name_to_type_flags);
|
Partial fix for PR breakpoints/10737: Make syscall info be per-arch instead of global
This patch intends to partially fix PR breakpoints/10737, which is
about making the syscall information (for the "catch syscall" command)
be per-arch, instead of global. This is not a full fix because of the
other issues pointed by Pedro here:
<https://sourceware.org/bugzilla/show_bug.cgi?id=10737#c5>
However, I consider it a good step towards the real fix. It will also
help me fix <https://sourceware.org/bugzilla/show_bug.cgi?id=17402>.
What this patch does, basically, is move the "syscalls_info"
struct to gdbarch. Currently, the syscall information is stored in a
global variable inside gdb/xml-syscall.c, which means that there is no
easy way to correlate this info with the current target or
architecture being used, for example. This causes strange behaviors,
because the syscall info is not re-read when the arch changes. For
example, if you put a syscall catchpoint in syscall 5 on i386 (syscall
open), and then load a x86_64 program on GDB and put the same syscall
5 there (fstat on x86_64), you will still see that GDB tells you that
it is catching "open", even though it is not. With this patch, GDB
correctly says that it will be catching fstat syscalls.
(gdb) set architecture i386
The target architecture is assumed to be i386
(gdb) catch syscall 5
Catchpoint 1 (syscall 'open' [5])
(gdb) set architecture i386:x86-64
The target architecture is assumed to be i386:x86-64
(gdb) catch syscall 5
Catchpoint 2 (syscall 'open' [5])
But with the patch:
(gdb) set architecture i386
The target architecture is assumed to be i386
(gdb) catch syscall 5
Catchpoint 1 (syscall 'open' [5])
(gdb) set architecture i386:x86-64
The target architecture is assumed to be i386:x86-64
(gdb) catch syscall 5
Catchpoint 2 (syscall 'fstat' [5])
As I said, there are still some problems on the "catch syscall"
mechanism, because (for example) the user should be able to "catch
syscall open" on i386, and then expect "open" to be caught also on
x86_64. Currently, it doesn't work. I intend to work on this later.
gdb/
2014-11-20 Sergio Durigan Junior <sergiodj@redhat.com>
PR breakpoints/10737
* amd64-linux-tdep.c (amd64_linux_init_abi_common): Adjust call to
set_xml_syscall_file_name to provide gdbarch.
* arm-linux-tdep.c (arm_linux_init_abi): Likewise.
* bfin-linux-tdep.c (bfin_linux_init_abi): Likewise.
* breakpoint.c (print_it_catch_syscall): Adjust call to
get_syscall_by_number to provide gdbarch.
(print_one_catch_syscall): Likewise.
(print_mention_catch_syscall): Likewise.
(print_recreate_catch_syscall): Likewise.
(catch_syscall_split_args): Adjust calls to get_syscall_by_number
and get_syscall_by_name to provide gdbarch.
(catch_syscall_completer): Adjust call to get_syscall_names to
provide gdbarch.
* gdbarch.c: Regenerate.
* gdbarch.h: Likewise.
* gdbarch.sh: Forward declare "struct syscalls_info".
(xml_syscall_file): New variable.
(syscalls_info): Likewise.
* i386-linux-tdep.c (i386_linux_init_abi): Adjust call to
set_xml_syscall_file_name to provide gdbarch.
* mips-linux-tdep.c (mips_linux_init_abi): Likewise.
* ppc-linux-tdep.c (ppc_linux_init_abi): Likewise.
* s390-linux-tdep.c (s390_gdbarch_init): Likewise.
* sparc-linux-tdep.c (sparc32_linux_init_abi): Likewise.
* sparc64-linux-tdep.c (sparc64_linux_init_abi): Likewise.
* xml-syscall.c: Include gdbarch.h.
(set_xml_syscall_file_name): Accept gdbarch parameter.
(get_syscall_by_number): Likewise.
(get_syscall_by_name): Likewise.
(get_syscall_names): Likewise.
(my_gdb_datadir): Delete global variable.
(struct syscalls_info) <my_gdb_datadir>: New variable.
(struct syscalls_info) <sysinfo>: Rename variable to
"syscalls_info".
(sysinfo): Delete global variable.
(have_initialized_sysinfo): Likewise.
(xml_syscall_file): Likewise.
(sysinfo_free_syscalls_desc): Rename to...
(syscalls_info_free_syscalls_desc): ... this.
(free_syscalls_info): Rename "sysinfo" to "syscalls_info". Adjust
code to the new layout of "struct syscalls_info".
(make_cleanup_free_syscalls_info): Rename parameter "sysinfo" to
"syscalls_info".
(syscall_create_syscall_desc): Likewise.
(syscall_start_syscall): Likewise.
(syscall_parse_xml): Likewise.
(xml_init_syscalls_info): Likewise. Drop "const" from return value.
(init_sysinfo): Rename to...
(init_syscalls_info): ...this. Add gdbarch as a parameter.
Adjust function to deal with gdbarch.
(xml_get_syscall_number): Delete parameter sysinfo. Accept
gdbarch as a parameter. Adjust code.
(xml_get_syscall_name): Likewise.
(xml_list_of_syscalls): Likewise.
(set_xml_syscall_file_name): Accept gdbarch as parameter.
(get_syscall_by_number): Likewise.
(get_syscall_by_name): Likewise.
(get_syscall_names): Likewise.
* xml-syscall.h (set_xml_syscall_file_name): Likewise.
(get_syscall_by_number): Likewise.
(get_syscall_by_name): Likewise.
(get_syscall_names): Likewise.
gdb/testsuite/
2014-11-20 Sergio Durigan Junior <sergiodj@redhat.com>
PR breakpoints/10737
* gdb.base/catch-syscall.exp (do_syscall_tests): Call
test_catch_syscall_multi_arch.
(test_catch_syscall_multi_arch): New function.
2014-11-21 01:28:18 +08:00
|
|
|
set_xml_syscall_file_name (gdbarch, XML_SYSCALL_FILENAME_S390);
|
2001-10-14 06:13:35 +08:00
|
|
|
break;
|
|
|
|
}
|
|
|
|
|
2003-08-28 11:03:44 +08:00
|
|
|
set_gdbarch_print_insn (gdbarch, print_insn_s390);
|
|
|
|
|
2006-11-29 05:41:03 +08:00
|
|
|
set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target);
|
|
|
|
|
2005-04-01 03:58:26 +08:00
|
|
|
/* Enable TLS support. */
|
|
|
|
set_gdbarch_fetch_tls_load_module_address (gdbarch,
|
2013-10-31 01:51:57 +08:00
|
|
|
svr4_fetch_objfile_link_map);
|
2005-04-01 03:58:26 +08:00
|
|
|
|
2011-11-30 16:26:46 +08:00
|
|
|
set_gdbarch_get_siginfo_type (gdbarch, linux_get_siginfo_type);
|
|
|
|
|
2012-04-28 04:47:57 +08:00
|
|
|
/* SystemTap functions. */
|
Extend SystemTap SDT probe argument parser
This patch extends the current generic parser for SystemTap SDT probe
arguments. It can be almost considered a cleanup, but the main point of
it is actually to allow the generic parser to accept multiple prefixes
and suffixes for the its operands (i.e., integers, register names, and
register indirection).
I have chosen to implement this as a list of const strings, and declare
this list as "static" inside each target's method used to initialize
gdbarch.
This patch is actually a preparation for an upcoming patch for ARM,
which implements the support for multiple integer prefixes (as defined
by ARM's asm spec). And AArch64 will also need this, for the same
reason.
This patch was regtested on all architectures that it touches (i.e.,
i386, x86_64, ARM, PPC/PPC64, s390x and IA-64). No regressions were found.
2013-12-19 Sergio Durigan Junior <sergiodj@redhat.com>
* amd64-tdep.c (amd64_init_abi): Declare SystemTap SDT probe
argument prefixes and suffixes. Initialize gdbarch with them.
* arm-linux-tdep.c (arm_linux_init_abi): Likewise.
* gdbarch.c: Regenerate.
* gdbarch.h: Regenerate.
* gdbarch.sh (stap_integer_prefix, stap_integer_suffix)
(stap_register_prefix, stap_register_suffix)
(stap_register_indirection_prefix)
(stap_register_indirection_suffix): Declare as "const char *const
*" instead of "const char *". Adjust printing function. Rename
all of the variables to the plural.
(pstring_list): New function.
* i386-tdep.c (i386_elf_init_abi): Declare SystemTap SDT probe
argument prefixes and suffixes. Initialize gdbarch with them.
* ia64-linux-tdep.c (ia64_linux_init_abi): Likewise.
* ppc-linux-tdep.c (ppc_linux_init_abi): Likewise.
* s390-linux-tdep.c (s390_gdbarch_init): Likewise.
* stap-probe.c (stap_is_generic_prefix): New function.
(stap_is_register_prefix): Likewise.
(stap_is_register_indirection_prefix): Likewise.
(stap_is_integer_prefix): Likewise.
(stap_generic_check_suffix): Likewise.
(stap_check_integer_suffix): Likewise.
(stap_check_register_suffix): Likewise.
(stap_check_register_indirection_suffix): Likewise.
(stap_parse_register_operand): Remove unecessary declarations for
variables holding prefix and suffix information. Use the new
functions listed above for checking for prefixes and suffixes.
(stap_parse_single_operand): Likewise.
2013-12-20 04:53:40 +08:00
|
|
|
set_gdbarch_stap_register_prefixes (gdbarch, stap_register_prefixes);
|
|
|
|
set_gdbarch_stap_register_indirection_prefixes (gdbarch,
|
|
|
|
stap_register_indirection_prefixes);
|
|
|
|
set_gdbarch_stap_register_indirection_suffixes (gdbarch,
|
|
|
|
stap_register_indirection_suffixes);
|
2012-04-28 04:47:57 +08:00
|
|
|
set_gdbarch_stap_is_single_operand (gdbarch, s390_stap_is_single_operand);
|
|
|
|
|
2001-10-14 06:13:35 +08:00
|
|
|
return gdbarch;
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2003-06-11 21:16:30 +08:00
|
|
|
extern initialize_file_ftype _initialize_s390_tdep; /* -Wmissing-prototypes */
|
|
|
|
|
2001-10-14 06:13:35 +08:00
|
|
|
void
|
2002-07-11 21:50:50 +08:00
|
|
|
_initialize_s390_tdep (void)
|
2001-10-14 06:13:35 +08:00
|
|
|
{
|
|
|
|
/* Hook us into the gdbarch mechanism. */
|
|
|
|
register_gdbarch_init (bfd_arch_s390, s390_gdbarch_init);
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
|
2011-12-07 21:31:05 +08:00
|
|
|
/* Initialize the GNU/Linux target descriptions. */
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
initialize_tdesc_s390_linux32 ();
|
ChangeLog:
* s390-tdep.h (S390_ORIG_R2_REGNUM): Define.
(S390_LAST_BREAK_REGNUM): Likewise.
(S390_SYSTEM_CALL_REGNUM): Likewise.
(S390_NUM_REGS): Update.
(s390_regmap_last_break): Add declaration.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(tdesc_s390_linux32v1): Add declaration.
(tdesc_s390_linux32v2): Likewise.
(tdesc_s390_linux64v1): Likewise.
(tdesc_s390_linux64v2): Likewise.
(tdesc_s390x_linux64v1): Likewise.
(tdesc_s390x_linux64v2): Likewise.
* s390-tdep.c: Include new target description files
"features/s390-linux32v1.c", "features/s390-linux32v2.c",
"features/s390-linux64v1.c", "features/s390-linux64v2.c",
"features/s390x-linux64v1.c", and "features/s390x-linux64v2.c".
(s390_cannot_store_register): New function.
(s390_write_pc): Likewise.
(s390_dwarf_regmap): Add fields for new registers.
(s390_regmap_gregset): Likewise.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): Likewise.
(s390_regmap_last_break): New variable.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(s390_last_break_regset): Likewise.
(s390x_last_break_regset): Likewise.
(s390_system_call_regset): Likewise.
(s390_upper_regset_sections): Rename to ...
(s390_linux64_regset_sections): ... this.
(s390_linux32_regset_sections): New variable.
(s390x_linux64_regset_sections): Likewise.
(s390_linux32v1_regset_sections): Likewise.
(s390_linux32v2_regset_sections): Likewise.
(s390_linux64v1_regset_sections): Likewise.
(s390_linux64v2_regset_sections): Likewise.
(s390x_linux64v1_regset_sections): Likewise.
(s390x_linux64v2_regset_sections): Likewise.
(s390_regset_from_core_section): Handle .reg-s390-last-break and
.reg-s390-system-call core file sections.
(s390_core_read_description): Check for presence of
.reg-s390-last-break and .reg-s390-system-call core file
sections and return appropriate target description.
(s390_gdbarch_init): Detect Linux-specific registers "orig_r2",
"last_break" and "system_call" in target description. Install
appropriate gdbarch_core_regset_sections array.
Call set_gdbarch_cannot_store_register and set_gdbarch_write_pc.
(_initialize_s390_tdep): Initialize additional target descriptions.
* s390-nat.c: Include "elf/common.h".
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(have_regset_last_break): New static variable.
(have_regset_system_call): Likewise.
(s390_native_supply): Handle S390_ORIG_R2_REGNUM.
(s390_native_collect): Likewise.
(fetch_regset, store_regset, check_regset): New functions.
(s390_linux_fetch_inferior_registers): Handle S390_LAST_BREAK_REGNUM
and S390_SYSTEM_CALL_REGNUM.
(s390_linux_store_inferior_registers): Likewise.
(s390_read_description): Check for presence of NT_S390_LAST_BREAK
and NT_S390_SYSTEM_CALL regsets and use appropriate description.
* features/Makefile (WHICH): Add s390-linux32v1, s390-linux64v1,
s390x-linux64v1, s390-linux32v2, s390-linux64v2, and s390x-linux64v2.
(s390-linux32v1-expedite): Define.
(s390-linux32v2-expedite): Likewise.
(s390-linux64v1-expedite): Likewise.
(s390-linux64v2-expedite): Likewise.
(s390x-linux64v1-expedite): Likewise.
(s390x-linux64v2-expedite): Likewise.
* features/s390-linux32.xml: Add orig_r2 register.
* features/s390-linux64.xml: Likewise.
* features/s390x-linux64.xml: Likewise.
* features/s390-linux32v1.xml: New file.
* features/s390-linux32v2.xml: Likewise.
* features/s390-linux64v1.xml: Likewise.
* features/s390-linux64v2.xml: Likewise.
* features/s390x-linux64v1.xml: Likewise.
* features/s390x-linux64v2.xml: Likewise.
* features/s390-linux32.c: Regenerate.
* features/s390-linux64.c: Likewise.
* features/s390x-linux64.c: Likewise.
* features/s390-linux32v1.c: New generated file.
* features/s390-linux32v2.c: Likewise.
* features/s390-linux64v1.c: Likewise.
* features/s390-linux64v2.c: Likewise.
* features/s390x-linux64v1.c: Likewise.
* features/s390x-linux64v2.c: Likewise.
* regformats/s390-linux32.dat: Regenerate.
* regformats/s390-linux64.dat: Regenerate.
* regformats/s390x-linux64.dat: Regenerate.
* regformats/s390-linux32v1.dat: New generated file.
* regformats/s390-linux32v2.dat: Likewise.
* regformats/s390-linux64v1.dat: Likewise.
* regformats/s390-linux64v2.dat: Likewise.
* regformats/s390x-linux64v1.dat: Likewise.
* regformats/s390x-linux64v2.dat: Likewise.
gdbserver/ChangeLog:
* Makefile.in (s390-linux32v1.o, s390-linux32v1.c): New rules.
(s390-linux32v2.o, s390-linux32v2.c): Likewise.
(s390-linux64v1.o, s390-linux64v1.c): Likewise.
(s390-linux64v2.o, s390-linux64v2.c): Likewise.
(s390x-linux64v1.o, s390x-linux64v1.c): Likewise.
(s390x-linux64v2.o, s390x-linux64v2.c): Likewise.
* configure.srv [s390*-*-linux*] (srv_regobj): Add new objects.
(srv_xmlfiles): Add new XML files.
* linux-s390-low.c: Include "elf/common.h", <sys/ptrace.h>,
and <sys/uio.h>.
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(init_registers_s390_linux32v1): Add prototype.
(init_registers_s390_linux32v2): Likewise.
(init_registers_s390_linux64v1): Likewise.
(init_registers_s390_linux64v2): Likewise.
(init_registers_s390x_linux64v1): Likewise.
(init_registers_s390x_linux64v2): Likewise.
(s390_num_regs): Increment to 52.
(s390_regmap): Add orig_r2 register.
(s390_num_regs_3264): Increment to 68.
(s390_regmap_3264): Add orig_r2 register.
(s390_collect_ptrace_register): Handle orig_r2 register.
(s390_supply_ptrace_register): Likewise.
(s390_fill_last_break): New function.
(s390_store_last_break): Likewise.
(s390_fill_system_call): New function.
(s390_store_system_call): Likewise.
(target_regsets): Handle NT_S390_LAST_BREAK and NT_S390_SYSTEM_CALL
register sets.
(s390_check_regset): New function.
(s390_arch_setup): Check for presence of NT_S390_LAST_BREAK and
NT_S390_SYSTEM_CALL regsets and use appropriate description.
Update target_regsets for available register sets.
testsuite/ChangeLog:
* gdb.base/callfuncs.exp (fetch_all_registers): Filter out read-only
last_break register on s390*-*-* targets.
2011-12-06 22:14:50 +08:00
|
|
|
initialize_tdesc_s390_linux32v1 ();
|
|
|
|
initialize_tdesc_s390_linux32v2 ();
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
initialize_tdesc_s390_linux64 ();
|
ChangeLog:
* s390-tdep.h (S390_ORIG_R2_REGNUM): Define.
(S390_LAST_BREAK_REGNUM): Likewise.
(S390_SYSTEM_CALL_REGNUM): Likewise.
(S390_NUM_REGS): Update.
(s390_regmap_last_break): Add declaration.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(tdesc_s390_linux32v1): Add declaration.
(tdesc_s390_linux32v2): Likewise.
(tdesc_s390_linux64v1): Likewise.
(tdesc_s390_linux64v2): Likewise.
(tdesc_s390x_linux64v1): Likewise.
(tdesc_s390x_linux64v2): Likewise.
* s390-tdep.c: Include new target description files
"features/s390-linux32v1.c", "features/s390-linux32v2.c",
"features/s390-linux64v1.c", "features/s390-linux64v2.c",
"features/s390x-linux64v1.c", and "features/s390x-linux64v2.c".
(s390_cannot_store_register): New function.
(s390_write_pc): Likewise.
(s390_dwarf_regmap): Add fields for new registers.
(s390_regmap_gregset): Likewise.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): Likewise.
(s390_regmap_last_break): New variable.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(s390_last_break_regset): Likewise.
(s390x_last_break_regset): Likewise.
(s390_system_call_regset): Likewise.
(s390_upper_regset_sections): Rename to ...
(s390_linux64_regset_sections): ... this.
(s390_linux32_regset_sections): New variable.
(s390x_linux64_regset_sections): Likewise.
(s390_linux32v1_regset_sections): Likewise.
(s390_linux32v2_regset_sections): Likewise.
(s390_linux64v1_regset_sections): Likewise.
(s390_linux64v2_regset_sections): Likewise.
(s390x_linux64v1_regset_sections): Likewise.
(s390x_linux64v2_regset_sections): Likewise.
(s390_regset_from_core_section): Handle .reg-s390-last-break and
.reg-s390-system-call core file sections.
(s390_core_read_description): Check for presence of
.reg-s390-last-break and .reg-s390-system-call core file
sections and return appropriate target description.
(s390_gdbarch_init): Detect Linux-specific registers "orig_r2",
"last_break" and "system_call" in target description. Install
appropriate gdbarch_core_regset_sections array.
Call set_gdbarch_cannot_store_register and set_gdbarch_write_pc.
(_initialize_s390_tdep): Initialize additional target descriptions.
* s390-nat.c: Include "elf/common.h".
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(have_regset_last_break): New static variable.
(have_regset_system_call): Likewise.
(s390_native_supply): Handle S390_ORIG_R2_REGNUM.
(s390_native_collect): Likewise.
(fetch_regset, store_regset, check_regset): New functions.
(s390_linux_fetch_inferior_registers): Handle S390_LAST_BREAK_REGNUM
and S390_SYSTEM_CALL_REGNUM.
(s390_linux_store_inferior_registers): Likewise.
(s390_read_description): Check for presence of NT_S390_LAST_BREAK
and NT_S390_SYSTEM_CALL regsets and use appropriate description.
* features/Makefile (WHICH): Add s390-linux32v1, s390-linux64v1,
s390x-linux64v1, s390-linux32v2, s390-linux64v2, and s390x-linux64v2.
(s390-linux32v1-expedite): Define.
(s390-linux32v2-expedite): Likewise.
(s390-linux64v1-expedite): Likewise.
(s390-linux64v2-expedite): Likewise.
(s390x-linux64v1-expedite): Likewise.
(s390x-linux64v2-expedite): Likewise.
* features/s390-linux32.xml: Add orig_r2 register.
* features/s390-linux64.xml: Likewise.
* features/s390x-linux64.xml: Likewise.
* features/s390-linux32v1.xml: New file.
* features/s390-linux32v2.xml: Likewise.
* features/s390-linux64v1.xml: Likewise.
* features/s390-linux64v2.xml: Likewise.
* features/s390x-linux64v1.xml: Likewise.
* features/s390x-linux64v2.xml: Likewise.
* features/s390-linux32.c: Regenerate.
* features/s390-linux64.c: Likewise.
* features/s390x-linux64.c: Likewise.
* features/s390-linux32v1.c: New generated file.
* features/s390-linux32v2.c: Likewise.
* features/s390-linux64v1.c: Likewise.
* features/s390-linux64v2.c: Likewise.
* features/s390x-linux64v1.c: Likewise.
* features/s390x-linux64v2.c: Likewise.
* regformats/s390-linux32.dat: Regenerate.
* regformats/s390-linux64.dat: Regenerate.
* regformats/s390x-linux64.dat: Regenerate.
* regformats/s390-linux32v1.dat: New generated file.
* regformats/s390-linux32v2.dat: Likewise.
* regformats/s390-linux64v1.dat: Likewise.
* regformats/s390-linux64v2.dat: Likewise.
* regformats/s390x-linux64v1.dat: Likewise.
* regformats/s390x-linux64v2.dat: Likewise.
gdbserver/ChangeLog:
* Makefile.in (s390-linux32v1.o, s390-linux32v1.c): New rules.
(s390-linux32v2.o, s390-linux32v2.c): Likewise.
(s390-linux64v1.o, s390-linux64v1.c): Likewise.
(s390-linux64v2.o, s390-linux64v2.c): Likewise.
(s390x-linux64v1.o, s390x-linux64v1.c): Likewise.
(s390x-linux64v2.o, s390x-linux64v2.c): Likewise.
* configure.srv [s390*-*-linux*] (srv_regobj): Add new objects.
(srv_xmlfiles): Add new XML files.
* linux-s390-low.c: Include "elf/common.h", <sys/ptrace.h>,
and <sys/uio.h>.
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(init_registers_s390_linux32v1): Add prototype.
(init_registers_s390_linux32v2): Likewise.
(init_registers_s390_linux64v1): Likewise.
(init_registers_s390_linux64v2): Likewise.
(init_registers_s390x_linux64v1): Likewise.
(init_registers_s390x_linux64v2): Likewise.
(s390_num_regs): Increment to 52.
(s390_regmap): Add orig_r2 register.
(s390_num_regs_3264): Increment to 68.
(s390_regmap_3264): Add orig_r2 register.
(s390_collect_ptrace_register): Handle orig_r2 register.
(s390_supply_ptrace_register): Likewise.
(s390_fill_last_break): New function.
(s390_store_last_break): Likewise.
(s390_fill_system_call): New function.
(s390_store_system_call): Likewise.
(target_regsets): Handle NT_S390_LAST_BREAK and NT_S390_SYSTEM_CALL
register sets.
(s390_check_regset): New function.
(s390_arch_setup): Check for presence of NT_S390_LAST_BREAK and
NT_S390_SYSTEM_CALL regsets and use appropriate description.
Update target_regsets for available register sets.
testsuite/ChangeLog:
* gdb.base/callfuncs.exp (fetch_all_registers): Filter out read-only
last_break register on s390*-*-* targets.
2011-12-06 22:14:50 +08:00
|
|
|
initialize_tdesc_s390_linux64v1 ();
|
|
|
|
initialize_tdesc_s390_linux64v2 ();
|
2013-09-13 22:17:31 +08:00
|
|
|
initialize_tdesc_s390_te_linux64 ();
|
* features/Makefile (WHICH): Add s390-linux32, s390-linux64,
and s390x-linux64.
(s390-linux32-expedite): Define.
(s390-linux64-expedite): Define.
(s390x-linux64-expedite): Define.
* features/s390-acr.xml: New file.
* features/s390-fpr.xml: New file.
* features/s390-core32.xml: New file.
* features/s390-core64.xml: New file.
* features/s390x-core64.xml: New file.
* features/s390-linux32.xml: New file.
* features/s390-linux64.xml: New file.
* features/s390x-linux64.xml: New file.
* features/s390-linux32.c: New generated file.
* features/s390-linux64.c: New generated file.
* features/s390x-linux64.c: New generated file.
* regformats/s390-linux32.dat: New generated file.
* regformats/s390-linux64.dat: New generated file.
* regformats/s390x-linux64.dat: New generated file.
* regformats/reg-s390.dat: Remove.
* regformats/reg-s390x.dat: Remove.
* s390-nat.c: Include "auxv.h" and <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(s390_target_wordsize): New function.
(s390_auxv_parse): Likewise.
(s390_get_hwcap): Likewise.
(s390_read_description): Likewise.
(_initialize_s390_nat): Install s390_auxv_parse and
s390_read_description.
* s390-tdep.c: Include "features/s390-linux32.c",
"features/s390-linux64.c", and "features/s390x-linux64.c".
(struct gdbarch_tdep): Add gpr_full_regnum, pc_regnum, and cc_regnum.
(s390_register_call_saved): New function.
(s390_register_name): Remove.
(s390_register_type): Remove.
(s390_dwarf_regmap): Add lower half GPR pseudo DWARF CFI regnums.
(s390_dwarf_reg_to_regnum): Remap GPR regnums to full GPRs.
(s390_adjust_frame_regnum): Remap GPR regnums to lower halves for CFI.
(s390_pseudo_register_name): New function.
(s390_pseudo_register_type): New function.
(s390_pseudo_register_read): Handle both 32-bit and 64-bit cases.
Handle full GPR pesudos and varying pseudo register numbers.
(s390_pseudo_register_write): Likewise
(s390x_pseudo_register_read): Remove.
(s390x_pseudo_register_write): Likewise.
(s390_register_group): Remove.
(s390_pseudo_register_group): New function.
(s390_regmap_gregset): Add GPR upper halves.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): New global variable.
(s390_upper_regset): New global variable.
(s390_upper_regset_sections): New global variable.
(s390_regset_from_core_section): Handle GPR upper halves.
(s390_core_read_description): New function.
(s390_prologue_frame_unwind_cache): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
(s390_backchain_frame_unwind_cache): Likewise.
(s390_frame_prev_register): Unwind full GPRs to show lower halves.
(s390_stub_frame_unwind_cache): Handle varying pseudo register numbers.
(s390_sigtramp_frame_unwind_cache): Unwind PSWM and PSWA as well as
PC and CC pseudos. Unwind upper halves and full GPRs as appropriate.
Handle varying pseudo register numbers.
(s390_unwind_pc): Handle varying pseudo register numbers.
(s390_dwarf2_prev_register): New function.
(s390_dwarf2_frame_init_reg): Set up ABI call-saved/clobbered
register information. Handle varying pseudo register numbers.
Install s390_dwarf2_prev_register to unwind full GPRs.
(s390_gdbarch_init): Handle target descriptions. Assign varying
pseudo register numbers. Install s390_adjust_frame_regnum.
(_initialize_s390_tdep): Initialize target descriptions.
* s390-tdep.h (S390_R0_UPPER_REGNUM .. S390_R15_UPPER_REGNUM): Define.
(S390_NUM_REGS): Redefine to include upper half registers.
(S390_PC_REGNUM, S390_CC_REGNUM): Remove.
(S390_NUM_PSEUDO_REGS, S390_NUM_TOTAL_REGS): Likewise.
(tdesc_s390_linux32): Add declaration.
(tdesc_s390_linux64): Likewise.
(tdesc_s390x_linux64): Likewise.
gdb/testsuite/
* gdb.xml/tdesc-regs.exp: Support s390*-*-* targets.
gdbserver/
* Makefile.in (clean): Remove new generated files.
(reg-s390.o, reg-s390.c): Remove rules.
(reg-s390x.o, reg-s390x.c): Likewise.
(s390-linux32.o, s390-linux32.c): Add rules.
(s390-linux64.o, s390-linux64.c): Likewise.
(s390x-linux64.o, s390x-linux64.c): Likewise.
* configure.srv (s390*-*-linux*): Update srv_regobj and srv_xmlfiles.
* linux-s390-low.c: Include <elf.h>.
(HWCAP_S390_HIGH_GPRS): Define if undefined.
(init_registers_s390): Remove prototype.
(init_registers_s390x): Likewise.
(init_registers_s390_linux32): Add prototype.
(init_registers_s390_linux64): Likewise.
(init_registers_s390x_linux64): Likewise.
(s390_num_regs_3264): New define.
(s390_regmap_3264): New global variable.
(s390_cannot_fetch_register): Remove obsolete check.
(s390_cannot_store_register): Likewise.
(s390_collect_ptrace_register): Handle upper/lower register halves.
(s390_supply_ptrace_register): Likewise.
(s390_fill_gregset): Update to register number changes.
(s390_get_hwcap): New routine.
(s390_arch_setup): Detect 32-bit process running on 64-bit system.
Install appropriate regmap and register set.
2010-01-04 23:03:01 +08:00
|
|
|
initialize_tdesc_s390x_linux64 ();
|
ChangeLog:
* s390-tdep.h (S390_ORIG_R2_REGNUM): Define.
(S390_LAST_BREAK_REGNUM): Likewise.
(S390_SYSTEM_CALL_REGNUM): Likewise.
(S390_NUM_REGS): Update.
(s390_regmap_last_break): Add declaration.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(tdesc_s390_linux32v1): Add declaration.
(tdesc_s390_linux32v2): Likewise.
(tdesc_s390_linux64v1): Likewise.
(tdesc_s390_linux64v2): Likewise.
(tdesc_s390x_linux64v1): Likewise.
(tdesc_s390x_linux64v2): Likewise.
* s390-tdep.c: Include new target description files
"features/s390-linux32v1.c", "features/s390-linux32v2.c",
"features/s390-linux64v1.c", "features/s390-linux64v2.c",
"features/s390x-linux64v1.c", and "features/s390x-linux64v2.c".
(s390_cannot_store_register): New function.
(s390_write_pc): Likewise.
(s390_dwarf_regmap): Add fields for new registers.
(s390_regmap_gregset): Likewise.
(s390x_regmap_gregset): Likewise.
(s390_regmap_fpregset): Likewise.
(s390_regmap_upper): Likewise.
(s390_regmap_last_break): New variable.
(s390x_regmap_last_break): Likewise.
(s390_regmap_system_call): Likewise.
(s390_last_break_regset): Likewise.
(s390x_last_break_regset): Likewise.
(s390_system_call_regset): Likewise.
(s390_upper_regset_sections): Rename to ...
(s390_linux64_regset_sections): ... this.
(s390_linux32_regset_sections): New variable.
(s390x_linux64_regset_sections): Likewise.
(s390_linux32v1_regset_sections): Likewise.
(s390_linux32v2_regset_sections): Likewise.
(s390_linux64v1_regset_sections): Likewise.
(s390_linux64v2_regset_sections): Likewise.
(s390x_linux64v1_regset_sections): Likewise.
(s390x_linux64v2_regset_sections): Likewise.
(s390_regset_from_core_section): Handle .reg-s390-last-break and
.reg-s390-system-call core file sections.
(s390_core_read_description): Check for presence of
.reg-s390-last-break and .reg-s390-system-call core file
sections and return appropriate target description.
(s390_gdbarch_init): Detect Linux-specific registers "orig_r2",
"last_break" and "system_call" in target description. Install
appropriate gdbarch_core_regset_sections array.
Call set_gdbarch_cannot_store_register and set_gdbarch_write_pc.
(_initialize_s390_tdep): Initialize additional target descriptions.
* s390-nat.c: Include "elf/common.h".
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(have_regset_last_break): New static variable.
(have_regset_system_call): Likewise.
(s390_native_supply): Handle S390_ORIG_R2_REGNUM.
(s390_native_collect): Likewise.
(fetch_regset, store_regset, check_regset): New functions.
(s390_linux_fetch_inferior_registers): Handle S390_LAST_BREAK_REGNUM
and S390_SYSTEM_CALL_REGNUM.
(s390_linux_store_inferior_registers): Likewise.
(s390_read_description): Check for presence of NT_S390_LAST_BREAK
and NT_S390_SYSTEM_CALL regsets and use appropriate description.
* features/Makefile (WHICH): Add s390-linux32v1, s390-linux64v1,
s390x-linux64v1, s390-linux32v2, s390-linux64v2, and s390x-linux64v2.
(s390-linux32v1-expedite): Define.
(s390-linux32v2-expedite): Likewise.
(s390-linux64v1-expedite): Likewise.
(s390-linux64v2-expedite): Likewise.
(s390x-linux64v1-expedite): Likewise.
(s390x-linux64v2-expedite): Likewise.
* features/s390-linux32.xml: Add orig_r2 register.
* features/s390-linux64.xml: Likewise.
* features/s390x-linux64.xml: Likewise.
* features/s390-linux32v1.xml: New file.
* features/s390-linux32v2.xml: Likewise.
* features/s390-linux64v1.xml: Likewise.
* features/s390-linux64v2.xml: Likewise.
* features/s390x-linux64v1.xml: Likewise.
* features/s390x-linux64v2.xml: Likewise.
* features/s390-linux32.c: Regenerate.
* features/s390-linux64.c: Likewise.
* features/s390x-linux64.c: Likewise.
* features/s390-linux32v1.c: New generated file.
* features/s390-linux32v2.c: Likewise.
* features/s390-linux64v1.c: Likewise.
* features/s390-linux64v2.c: Likewise.
* features/s390x-linux64v1.c: Likewise.
* features/s390x-linux64v2.c: Likewise.
* regformats/s390-linux32.dat: Regenerate.
* regformats/s390-linux64.dat: Regenerate.
* regformats/s390x-linux64.dat: Regenerate.
* regformats/s390-linux32v1.dat: New generated file.
* regformats/s390-linux32v2.dat: Likewise.
* regformats/s390-linux64v1.dat: Likewise.
* regformats/s390-linux64v2.dat: Likewise.
* regformats/s390x-linux64v1.dat: Likewise.
* regformats/s390x-linux64v2.dat: Likewise.
gdbserver/ChangeLog:
* Makefile.in (s390-linux32v1.o, s390-linux32v1.c): New rules.
(s390-linux32v2.o, s390-linux32v2.c): Likewise.
(s390-linux64v1.o, s390-linux64v1.c): Likewise.
(s390-linux64v2.o, s390-linux64v2.c): Likewise.
(s390x-linux64v1.o, s390x-linux64v1.c): Likewise.
(s390x-linux64v2.o, s390x-linux64v2.c): Likewise.
* configure.srv [s390*-*-linux*] (srv_regobj): Add new objects.
(srv_xmlfiles): Add new XML files.
* linux-s390-low.c: Include "elf/common.h", <sys/ptrace.h>,
and <sys/uio.h>.
(PTRACE_GETREGSET, PTRACE_SETREGSET): Define if undefined.
(init_registers_s390_linux32v1): Add prototype.
(init_registers_s390_linux32v2): Likewise.
(init_registers_s390_linux64v1): Likewise.
(init_registers_s390_linux64v2): Likewise.
(init_registers_s390x_linux64v1): Likewise.
(init_registers_s390x_linux64v2): Likewise.
(s390_num_regs): Increment to 52.
(s390_regmap): Add orig_r2 register.
(s390_num_regs_3264): Increment to 68.
(s390_regmap_3264): Add orig_r2 register.
(s390_collect_ptrace_register): Handle orig_r2 register.
(s390_supply_ptrace_register): Likewise.
(s390_fill_last_break): New function.
(s390_store_last_break): Likewise.
(s390_fill_system_call): New function.
(s390_store_system_call): Likewise.
(target_regsets): Handle NT_S390_LAST_BREAK and NT_S390_SYSTEM_CALL
register sets.
(s390_check_regset): New function.
(s390_arch_setup): Check for presence of NT_S390_LAST_BREAK and
NT_S390_SYSTEM_CALL regsets and use appropriate description.
Update target_regsets for available register sets.
testsuite/ChangeLog:
* gdb.base/callfuncs.exp (fetch_all_registers): Filter out read-only
last_break register on s390*-*-* targets.
2011-12-06 22:14:50 +08:00
|
|
|
initialize_tdesc_s390x_linux64v1 ();
|
|
|
|
initialize_tdesc_s390x_linux64v2 ();
|
2013-09-13 22:17:31 +08:00
|
|
|
initialize_tdesc_s390x_te_linux64 ();
|
2001-10-14 06:13:35 +08:00
|
|
|
}
|