Convert exp_uses_objfile to a method of expression
This changes the exp_uses_objfile function to be a method of 'expression'. Reviewed-By: Lancelot Six <lancelot.six@amd.com>
This commit is contained in:
parent
4b9728bec1
commit
aa9bd44528
6 changed files with 16 additions and 17 deletions
|
@ -89,6 +89,15 @@ parse_to_comma_and_eval (const char **expp)
|
|||
|
||||
/* See expression.h. */
|
||||
|
||||
bool
|
||||
expression::uses_objfile (struct objfile *objfile) const
|
||||
{
|
||||
gdb_assert (objfile->separate_debug_objfile_backlink == nullptr);
|
||||
return op->uses_objfile (objfile);
|
||||
}
|
||||
|
||||
/* See expression.h. */
|
||||
|
||||
struct value *
|
||||
expression::evaluate (struct type *expect_type, enum noside noside)
|
||||
{
|
||||
|
|
|
@ -214,6 +214,11 @@ struct expression
|
|||
op->dump (stream, 0);
|
||||
}
|
||||
|
||||
/* Return true if this expression uses OBJFILE (and will become
|
||||
dangling when OBJFILE is unloaded), otherwise return false.
|
||||
OBJFILE must not be a separate debug info file. */
|
||||
bool uses_objfile (struct objfile *objfile) const;
|
||||
|
||||
/* Evaluate the expression. EXPECT_TYPE is the context type of the
|
||||
expression; normally this should be nullptr. NOSIDE controls how
|
||||
evaluation is performed. */
|
||||
|
|
12
gdb/parse.c
12
gdb/parse.c
|
@ -667,18 +667,6 @@ parser_fprintf (FILE *x, const char *y, ...)
|
|||
va_end (args);
|
||||
}
|
||||
|
||||
/* Return rue if EXP uses OBJFILE (and will become dangling when
|
||||
OBJFILE is unloaded), otherwise return false. OBJFILE must not be
|
||||
a separate debug info file. */
|
||||
|
||||
bool
|
||||
exp_uses_objfile (struct expression *exp, struct objfile *objfile)
|
||||
{
|
||||
gdb_assert (objfile->separate_debug_objfile_backlink == NULL);
|
||||
|
||||
return exp->op->uses_objfile (objfile);
|
||||
}
|
||||
|
||||
void _initialize_parse ();
|
||||
void
|
||||
_initialize_parse ()
|
||||
|
|
|
@ -421,7 +421,5 @@ extern bool fits_in_type (int n_sign, ULONGEST n, int type_bits,
|
|||
|
||||
extern void parser_fprintf (FILE *, const char *, ...) ATTRIBUTE_PRINTF (2, 3);
|
||||
|
||||
extern bool exp_uses_objfile (struct expression *exp, struct objfile *objfile);
|
||||
|
||||
#endif /* PARSER_DEFS_H */
|
||||
|
||||
|
|
|
@ -2360,7 +2360,7 @@ clear_dangling_display_expressions (struct objfile *objfile)
|
|||
}
|
||||
|
||||
if (bl_objf == objfile
|
||||
|| (d->exp != NULL && exp_uses_objfile (d->exp.get (), objfile)))
|
||||
|| (d->exp != nullptr && d->exp->uses_objfile (objfile)))
|
||||
{
|
||||
d->exp.reset ();
|
||||
d->block = NULL;
|
||||
|
|
|
@ -2412,8 +2412,7 @@ varobj_invalidate_if_uses_objfile (struct objfile *objfile)
|
|||
}
|
||||
}
|
||||
|
||||
if (var->root->exp != nullptr
|
||||
&& exp_uses_objfile (var->root->exp.get (), objfile))
|
||||
if (var->root->exp != nullptr && var->root->exp->uses_objfile (objfile))
|
||||
{
|
||||
/* The varobj's current expression references the objfile. For
|
||||
globals and floating, it is possible that when we try to
|
||||
|
|
Loading…
Add table
Reference in a new issue