aboutsummaryrefslogtreecommitdiff
path: root/gdb/hppa-tdep.c
diff options
context:
space:
mode:
authorJeff Law <law@redhat.com>1994-01-18 04:04:36 +0000
committerJeff Law <law@redhat.com>1994-01-18 04:04:36 +0000
commitc7f3b703a337991dd1f32b0df0651aefc319b798 (patch)
tree4240eece64487249bed8c623817554a6c5ae6fec /gdb/hppa-tdep.c
parent5c38fcee3f85a29611b1f57910be963a21b27795 (diff)
downloadgdb-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.c16
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))