aboutsummaryrefslogtreecommitdiff
path: root/gdb/rs6000-tdep.c
diff options
context:
space:
mode:
authorPeter Schauer <Peter.Schauer@mytum.de>1994-10-29 09:51:32 +0000
committerPeter Schauer <Peter.Schauer@mytum.de>1994-10-29 09:51:32 +0000
commit9ed8604f38b6ffad8600789ce048a0f4e12c4e5d (patch)
tree4170b1e4143f1cce5c5217ed09b7f1036f346205 /gdb/rs6000-tdep.c
parentb7966a5adc3cbf38544dca97a9025df896a3db4c (diff)
downloadgdb-9ed8604f38b6ffad8600789ce048a0f4e12c4e5d.zip
gdb-9ed8604f38b6ffad8600789ce048a0f4e12c4e5d.tar.gz
gdb-9ed8604f38b6ffad8600789ce048a0f4e12c4e5d.tar.bz2
* top.c (line_completion_function): Renamed from
symbol_completion_function, takes the line buffer and the point in the line buffer as additional arguments. (readline_line_completion_function): New function, interface between readline and line_completion_function. (init_main): Use it. (complete_command): Use line_completion_function instead of abusing rl_line_buffer. Free completion strings after printing them. * symtab.c (completion_list_add_name): Recheck for duplicates if we intend to add a modified symbol. * gdbtypes.h (cplus_struct_type): nfn_fields_total no longer includes the number of methods from the baseclasses. * stabsread.c (attach_fn_fields_to_type): No longer add the number of methods from the baseclasses to TYPE_NFN_FIELDS_TOTAL, the baseclass type might not have been completely filled in yet. * symtab.c (total_number_of_methods): New function to compute the total number of methods for a type, including the methods from baseclasses. (decode_line_1): Use it instead of TYPE_NFN_FIELDS_TOTAL to allocate the symbol array for find_methods. * stabsread.c (scan_file_globals): Add default case to minimal symbol type switch, to avoid gcc -Wall warnings. * config/rs6000/tm-rs6000.h (INIT_EXTRA_FRAME_INFO): Don't test for zero backchain pointer to recognize a signal handler frame, if read() gets interrupted by a signal, the backchain will be non zero. (SIG_FRAME_FP_OFFSET): Move to here from rs6000-tdep.c, improve comment. (SIG_FRAME_PC_OFFSET): New definition. (FRAME_SAVED_PC): Return saved pc from sigcontext if this is a signal handler frame. * rs6000-tdep.c (function_frame_info): Do not error out if we can't access the instructions. * config/rs6000/tm-rs6000.h (CONVERT_FROM_FUNC_PTR_ADDR): New definition to get the function address from a function pointer. * valops.c (find_function_addr): Use it when calling a user function through a function pointer.
Diffstat (limited to 'gdb/rs6000-tdep.c')
-rw-r--r--gdb/rs6000-tdep.c18
1 files changed, 6 insertions, 12 deletions
diff --git a/gdb/rs6000-tdep.c b/gdb/rs6000-tdep.c
index 18fe4e9..796b082 100644
--- a/gdb/rs6000-tdep.c
+++ b/gdb/rs6000-tdep.c
@@ -564,12 +564,16 @@ function_frame_info (pc, fdata)
{
unsigned int tmp;
register unsigned int op;
+ char buf[4];
fdata->offset = 0;
fdata->saved_gpr = fdata->saved_fpr = fdata->alloca_reg = -1;
fdata->frameless = 1;
- op = read_memory_integer (pc, 4);
+ /* Do not error out if we can't access the instructions. */
+ if (target_read_memory (pc, buf, 4))
+ return;
+ op = extract_unsigned_integer (buf, 4);
if (op == 0x7c0802a6) { /* mflr r0 */
pc += 4;
op = read_memory_integer (pc, 4);
@@ -1094,17 +1098,7 @@ rs6000_frame_chain (thisframe)
if (inside_entry_file ((thisframe)->pc))
return 0;
if (thisframe->signal_handler_caller)
- {
- /* This was determined by experimentation on AIX 3.2. Perhaps
- it corresponds to some offset in /usr/include/sys/user.h or
- something like that. Using some system include file would
- have the advantage of probably being more robust in the face
- of OS upgrades, but the disadvantage of being wrong for
- cross-debugging. */
-
-#define SIG_FRAME_FP_OFFSET 284
- fp = read_memory_integer (thisframe->frame + SIG_FRAME_FP_OFFSET, 4);
- }
+ fp = read_memory_integer (thisframe->frame + SIG_FRAME_FP_OFFSET, 4);
else
fp = read_memory_integer ((thisframe)->frame, 4);