the last register number, not one greater than the last register
number.
* s390-tdep.c (s390_register_virtual_type): Replace clever but
incorrect range comparison with correct, legible equivalent.
* s390-tdep.c (s390_use_struct_convention): New function.
(s390_gdbarch_init): Register it as the S/390's
USE_STRUCT_CONVENTION method. Register
generic_cannot_extract_struct_value_address as our
EXTRACT_STRUCT_VALUE_ADDRESS method.
* arch-utils.c (generic_cannot_extract_struct_value_address): New
function.
* arch-utils.h: Add corresponding prototype.
dummy frames.
(s390_frame_saved_pc_nofix): if `*fi' is a dummy frame, get the
saved PC from the dummy frame's registers.
(s390_frame_chain): Same for the saved SP.
(s390_gdbarch_init): Register `generic_save_dummy_frame_tos' as
the `SAVE_DUMMY_FRAME_TOS' method, so the dummy frame's `top' gets
set correctly.
(is_float_singleton, is_struct_like, is_float_like): New
functions, that isolate the weirdness.
(is_double_or_float, is_simple_arg, pass_by_copy_ref,
is_double_arg): Use is_struct_like and is_float_like, rather than
testing the type codes ourselves.
(s390_push_arguments): When passing args on the stack, align each
on to a four-byte boundary, regardless of what the type itself
needs.
break zSeries support; that should be fixed soon.
#include "gdb_assert.h".
(is_integer_like, is_pointer_like, is_simple_arg,
pass_by_copy_ref, extend_simple_arg, is_double_arg, round_up,
round_down, alignment_of): New functions.
(s390_push_arguments): Rewritten to handle passing large arguments
by value, and to make more readable.
interact correctly with generic dummy frames.
(s390_pop_frame_regular): Move the guts of the frame-popping code
to here, to be called by generic_pop_current_frame. Use the
frame's saved_regs array; this works for `return' as well as
inferior function calls.
(s390_fix_call_dummy, s390_pc_in_call_dummy): Delete.
(s390_push_return_address): Put the address of the inferior call
breakpoint in r14.
(s390_gdbarch_init):
- Provide trivial definition of s390_call_dummy_words; register it
with the gdbarch appropriately.
- Delete S390x_call_dummy_words.
- Gather inferior-call-related settings into a group.
- Use generic dummy frames.
- Put the inferior call breakpoint at the entry point.
- Use generic gdbarch methods: pc_in_call_dummy_at_entry_point,
generic_push_dummy_frame, generic_fix_call_dummy.
- There is a call dummy breakpoint offset; it's zero.
from the constant pool, but doesn't add in the constant pool's
address to it, then this function probably isn't using r12 as a
GOT pointer, and that load probably wasn't part of the prologue.