+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+       * expop.h (class var_entry_value_operation): New.
+       * eval.c (eval_op_var_entry_value): No longer static.
+
 2021-03-08  Tom Tromey  <tom@tromey.com>
 
        * expression.h (class operation) <set_outermost>: New method.
 
 
 /* Helper function that implements the body of OP_VAR_ENTRY_VALUE.  */
 
-static struct value *
+struct value *
 eval_op_var_entry_value (struct type *expect_type, struct expression *exp,
                         enum noside noside, symbol *sym)
 {
 
                                             bool outermost_p,
                                             minimal_symbol *msymbol,
                                             struct objfile *objfile);
+extern struct value *eval_op_var_entry_value (struct type *expect_type,
+                                             struct expression *exp,
+                                             enum noside noside, symbol *sym);
 
 namespace expr
 {
     override;
 };
 
+class var_entry_value_operation
+  : public tuple_holding_operation<symbol *>
+{
+public:
+
+  using tuple_holding_operation::tuple_holding_operation;
+
+  value *evaluate (struct type *expect_type,
+                  struct expression *exp,
+                  enum noside noside) override
+  {
+    return eval_op_var_entry_value (expect_type, exp, noside,
+                                   std::get<0> (m_storage));
+  }
+
+  enum exp_opcode opcode () const override
+  { return OP_VAR_ENTRY_VALUE; }
+};
+
 } /* namespace expr */
 
 #endif /* EXPOP_H */