On Dec 11, 2002, Andrew Cagney wrote: > +struct frame_id ^^ > +dummy_frame_id_unwind (struct frame_info *frame, > + void **cache) > +extern struct frame_id dummy_frame_id_unwind (struct frame_info *frame, > + void **unwind_cache); > + ^^ > +struct frame_id > +frame_id_unwind (struct frame_info *frame) > +{ > + if (!frame->id_unwind_cache_p) > + { > + frame->id_unwind_cache = > + frame->id_unwind (frame, &frame->unwind_cache); [ type mismatch above ] > + frame->id_unwind_cache_p = 1; > + } > + return frame->id_unwind_cache; > +} > +/* Unwind the frame ID. Return an ID that uniquely identifies the > + caller's frame. */ > +extern struct frame_id frame_id_unwind (struct frame_info *frame); ^^ > + struct frame_id id_unwind_cache; ^^ I believe this is enough evidence that the typedef below was meant to have struct frame_id in the return type, instead of frame_info: > +typedef struct frame_info (frame_id_unwind_ftype) (struct frame_info *frame, > + void **unwind_cache); ^^^^ So I'm checking this in as obvious.