might be the best option. What about moving this:
> +
> + /* If the architecture has a custom FRAME_CHAIN_VALID, call it
now. */
> + if (FRAME_CHAIN_VALID_P ())
> + return FRAME_CHAIN_VALID (fp, fi);
to before this:
+ /* If we're already inside the entry function for the main objfile,
then it
+ isn't valid. */
+ if (inside_entry_func (get_frame_pc (fi)))
+ return 0;
+
+ /* If we're inside the entry file, it isn't valid. */
+ /* NOTE/drow 2002-12-25: should there be a way to disable this check? It
+ assumes a single small entry file, and the way some debug readers
(e.g.
+ dbxread) figure out which object is the entry file is somewhat
hokey. */
+ if (inside_entry_file (frame_pc_unwind (fi)))
+ return 0;
+
+ /* If we want backtraces to stop at main, and we're inside main, then it
+ isn't valid. */
+ if (!backtrace_below_main && inside_main_func (get_frame_pc (fi)))
+ return 0;
That more closely resembles the original behavior.
I think that's pretty much ok. Old targets in need of one of these functions
can still call it from (deprecated_)frame_chain_valid().