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]

Re: [PATCH] Remove zero PC check from blockframe.c:inside_main_func()


It really makes no sense to check for a zero PC here.  This function
is only colled from frame.c:get_prev_frame(), and there we already
deal with PC being zero.

The whole concept of using a zero PC as a marker for the end of the
frame chain is somewhat flawed.  It prevents us from providing a
meaningful backtrace when the program has called a null function
pointer; see backtrace/1476.  At the very least we will have to treat
a zero PC in the innermost differently.  Classifying the a zero PC as
being inside the "main" function doesn't help.  Therefore this patch
removes the first obstackle in fixing that PR.

Objections. Otherwise I'll commit this within a few days.

FYI, this was made active with:


* blockframe.c: Include "gdbcmd.h" and "command.h".
(backtrace_below_main): New variable.
(file_frame_chain_valid, func_frame_chain_valid)
(nonnull_frame_chain_valid, generic_file_frame_chain_valid)
(generic_func_frame_chain_valid): Remove functions.
(frame_chain_valid, do_flush_frames_sfunc): New functions.
(_initialize_blockframe): New function.
* Makefile.in (blockframe.o): Update dependencies.
* frame.c (frame_saved_regs_id_unwind, get_prev_frame): Remove FIXME
comment. Call frame_chain_valid ().
* frame.h: Remove old prototypes. Add prototype for
frame_chain_valid and update comments to match.
* gdbarch.sh: Change FRAME_CHAIN_VALID into a predicated function.
Remove old comment.
* gdbarch.h: Regenerated.
* gdbarch.c: Regenerated.


rather than the new frame code.

I looked at the new frame code and apart from the wild-card logic, there weren't any obvious PC==0 tests.

Andrew



Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]