Convert exp_uses_objfile to a method of expression
authorTom Tromey <tromey@adacore.com>
Mon, 19 Dec 2022 18:14:02 +0000 (11:14 -0700)
committerTom Tromey <tromey@adacore.com>
Wed, 4 Jan 2023 16:46:58 +0000 (09:46 -0700)
This changes the exp_uses_objfile function to be a method of
'expression'.

Reviewed-By: Lancelot Six <lancelot.six@amd.com>
gdb/eval.c
gdb/expression.h
gdb/parse.c
gdb/parser-defs.h
gdb/printcmd.c
gdb/varobj.c

index 191c680a87b4d561dbbb93a24ee092e87ecc0c1d..05e35941101a7ff15097b5f52f122aaa9316bf0e 100644 (file)
@@ -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)
 {
index 2e00da905099243ca082130e7e5b467e7eacc5ea..c314fc24e1b99b5a11bba5b047ee74d07bf2ee75 100644 (file)
@@ -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.  */
index 29d7bf172f8995b6d96c67e7b5fda54cb1fcb2cb..2f7d58061ab497b14bec0fd2c88cf57cd7843842 100644 (file)
@@ -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 ()
index 3b69deeead5a40994de9ef45bda236c6941cb142..1780d85674427f768e1db5f82944541e4651b3fc 100644 (file)
@@ -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 */
 
index 67a34009c13b3b6cd245231a5cc2188b94776417..13b979c3720c31b5dc237eb61aa0978b56edfdf7 100644 (file)
@@ -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;
index 8470600d19ed6d58e5ff0201c54fe08ecf15bacd..eb47ecada3ecb5e3be23a8012eb831a0cc1332d7 100644 (file)
@@ -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