From eb6af39af29ad0ca1eeb37e4a2b78190b4d3f15f Mon Sep 17 00:00:00 2001 From: Packit Service Date: Dec 15 2020 15:22:45 +0000 Subject: Apply patch gdb-6.8-bz436037-reg-no-longer-active.patch patch_name: gdb-6.8-bz436037-reg-no-longer-active.patch present_in_specfile: true --- diff --git a/gdb/valops.c b/gdb/valops.c index 9e5a257..373c0e5 100644 --- a/gdb/valops.c +++ b/gdb/valops.c @@ -1104,6 +1104,8 @@ value_assign (struct value *toval, struct value *fromval) struct gdbarch *gdbarch; int value_reg; + value_reg = VALUE_REGNUM (toval); + /* Figure out which frame this is in currently. We use VALUE_FRAME_ID for obtaining the value's frame id instead of @@ -1113,8 +1115,14 @@ value_assign (struct value *toval, struct value *fromval) frame. */ frame = frame_find_by_id (VALUE_FRAME_ID (toval)); - value_reg = VALUE_REGNUM (toval); - + /* "set $reg+=1" should work on programs with no debug info, + but frame_find_by_id returns NULL here (RH bug 436037). + Use current frame, it represents CPU state in this case. + If frame_find_by_id is changed to do it internally + (it is contemplated there), remove this. */ + if (!frame) + frame = get_current_frame (); + /* Probably never happens. */ if (!frame) error (_("Value being assigned to is no longer active."));