Assert on lval_register
This patch adds asserts where the value's lval must be lval_register. This triggers an error in frame_register_unwind because VALUE_REGNUM is used but value's lval is not lval_register. This also reveals a design issue in frame_register_unwind, that is arguments addrp and realnump are mutually exclusive, we either use addrp (for lval_memory), or use realnump (for lval_register). This can be done in a separate patch. gdb: 2016-12-06 Yao Qi <yao.qi@linaro.org> * frame.c (frame_register_unwind): Set *realnump if *lvalp is lval_register. * value.c (deprecated_value_next_frame_id_hack): Assert value->lval is lval_register. (deprecated_value_regnum_hack): Likewise.
This commit is contained in:
parent
5e359a63b7
commit
7c2ba67e6a
3 changed files with 14 additions and 1 deletions
|
@ -1107,7 +1107,10 @@ frame_register_unwind (struct frame_info *frame, int regnum,
|
|||
*unavailablep = !value_entirely_available (value);
|
||||
*lvalp = VALUE_LVAL (value);
|
||||
*addrp = value_address (value);
|
||||
*realnump = VALUE_REGNUM (value);
|
||||
if (*lvalp == lval_register)
|
||||
*realnump = VALUE_REGNUM (value);
|
||||
else
|
||||
*realnump = -1;
|
||||
|
||||
if (bufferp)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue