diff options
author | Jeff Law <law@redhat.com> | 1994-01-18 04:04:36 +0000 |
---|---|---|
committer | Jeff Law <law@redhat.com> | 1994-01-18 04:04:36 +0000 |
commit | c7f3b703a337991dd1f32b0df0651aefc319b798 (patch) | |
tree | 4240eece64487249bed8c623817554a6c5ae6fec /gdb/hppa-tdep.c | |
parent | 5c38fcee3f85a29611b1f57910be963a21b27795 (diff) | |
download | gdb-c7f3b703a337991dd1f32b0df0651aefc319b798.zip gdb-c7f3b703a337991dd1f32b0df0651aefc319b798.tar.gz gdb-c7f3b703a337991dd1f32b0df0651aefc319b798.tar.bz2 |
* config/pa/tm-hppa.h (unwind_table_entry): Use one of the
reserved fields to hold a stub unwind entry type. Fix typo.
(stub_unwind_entry): New structure for raw stub unwind entries.
(stub_unwind_types): The types of stubs we may encounter.
(UNWIND_ENTRY_SIZE, STUB_UNWIND_ENTRY_SIZE): New defines.
* hppa-tdep.c (rp_saved): Use additional information provided
by linker stub unwind descriptors.
(frameless_function_invocation): Likewise.
(frame_chain_valid): Likewise.
* paread.c (compare_unwind_entries): New function for sorting
unwind table entries.
(read_unwind_info): Rewrite to remove dependency on host endianness.
Read in data from the $UNWIND_END$ subspace which contains linker
stub unwind descriptors. Merge that data into the basic unwind
table.
Diffstat (limited to 'gdb/hppa-tdep.c')
-rw-r--r-- | gdb/hppa-tdep.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/gdb/hppa-tdep.c b/gdb/hppa-tdep.c index e0266bd..ca849c5 100644 --- a/gdb/hppa-tdep.c +++ b/gdb/hppa-tdep.c @@ -434,6 +434,18 @@ rp_saved (pc) if (u->Save_RP) return -20; + else if (u->stub_type != 0) + { + switch (u->stub_type) + { + case EXPORT: + return -24; + case PARAMETER_RELOCATION: + return -8; + default: + return 0; + } + } else return 0; } @@ -449,7 +461,7 @@ frameless_function_invocation (frame) if (u == 0) return frameless_look_for_prologue (frame); - return (u->Total_frame_size == 0); + return (u->Total_frame_size == 0 && u->stub_type == 0); } CORE_ADDR @@ -671,7 +683,7 @@ frame_chain_valid (chain, thisframe) if (u == NULL) return 1; - if (u->Save_SP || u->Total_frame_size) + if (u->Save_SP || u->Total_frame_size || u->stub_type != 0) return 1; if (pc_in_linker_stub (thisframe->pc)) |