This is the mail archive of the 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] stack: fix gdb.dwarf2/dw2-undefined-ret-addr.exp regression

Markus Metzger <> writes:

> Commit a038fa3e14a4 stack: check frame_unwind_caller_id adds a frame_id check to
> frame_info and treats a missing frame_id as NOT_AVAILABLE_ERROR.  This causes a
> regression in gdb.dwarf2/dw2-undefined-ret-addr.exp.
> Treat a missing frame_id as OPTIMIZED_OUT_ERROR instead.
> See also
> 2016-07-22  Markus Metzger  <>
> gdb/
> 	* stack.c (frame_info): Call val_print_not_saved instead of
> 	val_print_unavailable if frame_id check fails.

It is good to me.  I read this patch several times since July, because
of something else in a038fa3e14a4.  Do we need to move
frame_unwind_caller_id into try block? like this,

      if (!frame_id_p (frame_unwind_caller_id (fi)))
         val_print_unavailable (gdb_stdout);
          caller_pc = frame_unwind_caller_pc (fi);
          caller_pc_p = 1;
  CATCH (ex, ....)

frame_unwind_caller_id calls get_prev_frame_always which only catches
MEMORY_ERROR.  IIUC, get_prev_frame_always and it callees may throw

Yao (齐尧)

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