From: Pedro Alves Date: Fri, 6 Dec 2013 19:48:54 +0000 (+0000) Subject: New OPTIMIZED_OUT_ERROR error code. X-Git-Tag: hjl/linux/release/2.24.51.0.2~3^2~1^2~42 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=710409a221f27f39d8b8e33c5676c97cb04cf4b8;p=thirdparty%2Fbinutils-gdb.git New OPTIMIZED_OUT_ERROR error code. In order to catch errors like we catch errors, this adds a new OPTIMIZED_OUT_ERROR error code, and throws it in various places. gdb/ChangeLog 2013-12-06 Andrew Burgess Pedro Alves * exceptions.h (errors): Add OPTIMIZED_OUT_ERROR. * dwarf2loc.c (write_pieced_value): Throw OPTIMIZED_OUT_ERROR. * frame.c (frame_unwind_register): Throw OPTIMIZED_OUT_ERROR. * spu-tdep.c (spu_software_single_step): Throw OPTIMIZED_OUT_ERROR. * valops.c (value_assign): Throw OPTIMIZED_OUT_ERROR. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 464601a878d..911131410a1 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,13 @@ +2013-12-06 Andrew Burgess + Pedro Alves + + * exceptions.h (errors): Add OPTIMIZED_OUT_ERROR. + * dwarf2loc.c (write_pieced_value): Throw OPTIMIZED_OUT_ERROR. + * frame.c (frame_unwind_register): Throw OPTIMIZED_OUT_ERROR. + * spu-tdep.c (spu_software_single_step): Throw + OPTIMIZED_OUT_ERROR. + * valops.c (value_assign): Throw OPTIMIZED_OUT_ERROR. + 2013-12-06 Tom Tromey * objfiles.c (free_objfile): Update comment. diff --git a/gdb/dwarf2loc.c b/gdb/dwarf2loc.c index 2d15546f596..2b1f32314a8 100644 --- a/gdb/dwarf2loc.c +++ b/gdb/dwarf2loc.c @@ -1893,9 +1893,10 @@ write_pieced_value (struct value *to, struct value *from) &optim, &unavail)) { if (optim) - error (_("Can't do read-modify-write to " - "update bitfield; containing word has been " - "optimized out")); + throw_error (OPTIMIZED_OUT_ERROR, + _("Can't do read-modify-write to " + "update bitfield; containing word " + "has been optimized out")); if (unavail) throw_error (NOT_AVAILABLE_ERROR, _("Can't do read-modify-write to update " diff --git a/gdb/exceptions.h b/gdb/exceptions.h index a3a28f4898d..705f1a1f617 100644 --- a/gdb/exceptions.h +++ b/gdb/exceptions.h @@ -86,6 +86,10 @@ enum errors { traceframe. */ NOT_AVAILABLE_ERROR, + /* Value was optimized out. Note: if the value was a register, this + means the register was not saved in the frame. */ + OPTIMIZED_OUT_ERROR, + /* DW_OP_GNU_entry_value resolving failed. */ NO_ENTRY_VALUE_ERROR, diff --git a/gdb/frame.c b/gdb/frame.c index 576c9697c1b..0ba1d4dfb41 100644 --- a/gdb/frame.c +++ b/gdb/frame.c @@ -1007,7 +1007,8 @@ frame_unwind_register (struct frame_info *frame, int regnum, gdb_byte *buf) &lval, &addr, &realnum, buf); if (optimized) - error (_("Register %d was not saved"), regnum); + throw_error (OPTIMIZED_OUT_ERROR, + _("Register %d was not saved"), regnum); if (unavailable) throw_error (NOT_AVAILABLE_ERROR, _("Register %d is not available"), regnum); diff --git a/gdb/spu-tdep.c b/gdb/spu-tdep.c index fd54b1e217a..fdf435e10b5 100644 --- a/gdb/spu-tdep.c +++ b/gdb/spu-tdep.c @@ -1614,8 +1614,9 @@ spu_software_single_step (struct frame_info *frame) else { if (optim) - error (_("Could not determine address of " - "single-step breakpoint.")); + throw_error (OPTIMIZED_OUT_ERROR, + _("Could not determine address of " + "single-step breakpoint.")); if (unavail) throw_error (NOT_AVAILABLE_ERROR, _("Could not determine address of " diff --git a/gdb/valops.c b/gdb/valops.c index 8e7b16fb9a0..d43c75827f0 100644 --- a/gdb/valops.c +++ b/gdb/valops.c @@ -1188,7 +1188,8 @@ value_assign (struct value *toval, struct value *fromval) &optim, &unavail)) { if (optim) - error (_("value has been optimized out")); + throw_error (OPTIMIZED_OUT_ERROR, + _("value has been optimized out")); if (unavail) throw_error (NOT_AVAILABLE_ERROR, _("value is not available"));