This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
After a long overdue update of my gdb cvs tree, I found that something broke late March/early April. I don't quite understand what goes on, but it seems to happen the first time a frame allocated by deprecated_frame_xmalloc_with_cleanup is freed by do_cleanups (which happens in cris_skip_prologue_main). gdb segfaults on a call to free with a pointer to that frame. The arm-tdep.c file contains the same construct of:
old_chain = make_cleanup (null_cleanup, NULL); frame = deprecated_frame_xmalloc_with_cleanup (..., ...) <do something with frame> do_cleanups (old_chain);
struct frame_info * deprecated_frame_xmalloc (void) { struct frame_info *frame = FRAME_OBSTACK_ZALLOC (struct frame_info); frame->this_id.p = 1; return frame; }
However, poking around in all the stuff that has been deprecated, I'm sort of at a loss as to where to start. Replacing the deprecated function/macros one at a time doesn't look feasible, since a lot of functionality is replaced by the same functions (push_dummy_code/push_dummy_call for example). Is there a preferred way of doing it, or is it just a matter of diving right into it? I'd prefer to do it in a structured way to be able to catch when things start to break. I see there are a couple of targets that have made the transition (d10v and m68hc11 for example), so that should provide some help.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |