2002-06-01 Andrew Cagney * gdbarch.sh (FRAME_CHAIN_VALID): Set default to generic_func_frame_chain_valid. * gdbarch.h, gdbarch.c: Re-generate. * blockframe.c (generic_func_frame_chain_valid): Only check PC_IN_CALL_DUMMY when generic dummy frames. Don't worry about passing FP to PC_IN_CALL_DUMMY. Fix PR gdb/360. Index: blockframe.c =================================================================== RCS file: /cvs/src/src/gdb/blockframe.c,v retrieving revision 1.28 diff -u -r1.28 blockframe.c --- blockframe.c 1 Jun 2002 20:44:21 -0000 1.28 +++ blockframe.c 1 Jun 2002 22:11:11 -0000 @@ -1298,7 +1298,8 @@ int generic_func_frame_chain_valid (CORE_ADDR fp, struct frame_info *fi) { - if (PC_IN_CALL_DUMMY ((fi)->pc, fp, fp)) + if (USE_GENERIC_DUMMY_FRAMES + && PC_IN_CALL_DUMMY ((fi)->pc, 0, 0)) return 1; /* don't prune CALL_DUMMY frames */ else /* fall back to default algorithm (see frame.h) */ return (fp != 0 Index: gdbarch.c =================================================================== RCS file: /cvs/src/src/gdb/gdbarch.c,v retrieving revision 1.129 diff -u -r1.129 gdbarch.c --- gdbarch.c 29 May 2002 16:39:54 -0000 1.129 +++ gdbarch.c 1 Jun 2002 22:11:28 -0000 @@ -522,7 +522,7 @@ current_gdbarch->remote_translate_xfer_address = generic_remote_translate_xfer_address; current_gdbarch->frame_args_skip = -1; current_gdbarch->frameless_function_invocation = generic_frameless_function_invocation_not; - current_gdbarch->frame_chain_valid = func_frame_chain_valid; + current_gdbarch->frame_chain_valid = generic_func_frame_chain_valid; current_gdbarch->extra_stack_alignment_needed = 1; current_gdbarch->convert_from_func_ptr_addr = core_addr_identity; current_gdbarch->addr_bits_remove = core_addr_identity; Index: gdbarch.h =================================================================== RCS file: /cvs/src/src/gdb/gdbarch.h,v retrieving revision 1.96 diff -u -r1.96 gdbarch.h --- gdbarch.h 29 May 2002 01:51:16 -0000 1.96 +++ gdbarch.h 1 Jun 2002 22:12:33 -0000 @@ -1888,7 +1887,7 @@ /* Default (function) for non- multi-arch platforms. */ #if (!GDB_MULTI_ARCH) && !defined (FRAME_CHAIN_VALID) -#define FRAME_CHAIN_VALID(chain, thisframe) (func_frame_chain_valid (chain, thisframe)) +#define FRAME_CHAIN_VALID(chain, thisframe) (generic_func_frame_chain_valid (chain, thisframe)) #endif typedef int (gdbarch_frame_chain_valid_ftype) (CORE_ADDR chain, struct frame_info *thisframe); Index: gdbarch.sh =================================================================== RCS file: /cvs/src/src/gdb/gdbarch.sh,v retrieving revision 1.140 diff -u -r1.140 gdbarch.sh --- gdbarch.sh 29 May 2002 16:39:55 -0000 1.140 +++ gdbarch.sh 1 Jun 2002 22:12:37 -0000 @@ -567,7 +567,7 @@ # XXXX - both default and alternate frame_chain_valid functions are # deprecated. New code should use dummy frames and one of the generic # functions. -f:2:FRAME_CHAIN_VALID:int:frame_chain_valid:CORE_ADDR chain, struct frame_info *thisframe:chain, thisframe:::func_frame_chain_valid::0 +f:2:FRAME_CHAIN_VALID:int:frame_chain_valid:CORE_ADDR chain, struct frame_info *thisframe:chain, thisframe:::generic_func_frame_chain_valid::0 f:2:FRAME_SAVED_PC:CORE_ADDR:frame_saved_pc:struct frame_info *fi:fi::0:0 f:2:FRAME_ARGS_ADDRESS:CORE_ADDR:frame_args_address:struct frame_info *fi:fi::0:0 f:2:FRAME_LOCALS_ADDRESS:CORE_ADDR:frame_locals_address:struct frame_info *fi:fi::0:0