From 9ed8604f38b6ffad8600789ce048a0f4e12c4e5d Mon Sep 17 00:00:00 2001 From: Peter Schauer Date: Sat, 29 Oct 1994 09:51:32 +0000 Subject: * 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. --- gdb/rs6000-tdep.c | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) (limited to 'gdb/rs6000-tdep.c') 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); -- cgit v1.1