+2021-03-08  Tom Tromey  <tom@tromey.com>
+
+       * ada-lang.c (ada_unop_neg, ada_atr_tag, ada_atr_size, ada_abs):
+       No longer static.
+       * ada-exp.h (ada_neg_operation, ada_atr_tag_operation)
+       (ada_atr_size_operation, ada_abs_operation): New typedefs.
+
 2021-03-08  Tom Tromey  <tom@tromey.com>
 
        * expop.h (class logical_and_operation)
 
 
 #include "expop.h"
 
+extern struct value *ada_unop_neg (struct type *expect_type,
+                                  struct expression *exp,
+                                  enum noside noside, enum exp_opcode op,
+                                  struct value *arg1);
+extern struct value *ada_atr_tag (struct type *expect_type,
+                                 struct expression *exp,
+                                 enum noside noside, enum exp_opcode op,
+                                 struct value *arg1);
+extern struct value *ada_atr_size (struct type *expect_type,
+                                  struct expression *exp,
+                                  enum noside noside, enum exp_opcode op,
+                                  struct value *arg1);
+extern struct value *ada_abs (struct type *expect_type,
+                             struct expression *exp,
+                             enum noside noside, enum exp_opcode op,
+                             struct value *arg1);
+
 namespace expr
 {
 
   { return TERNOP_IN_RANGE; }
 };
 
+using ada_neg_operation = unop_operation<UNOP_NEG, ada_unop_neg>;
+using ada_atr_tag_operation = unop_operation<OP_ATR_TAG, ada_atr_tag>;
+using ada_atr_size_operation = unop_operation<OP_ATR_SIZE, ada_atr_size>;
+using ada_abs_operation = unop_operation<UNOP_ABS, ada_abs>;
+
 } /* namespace expr */
 
 #endif /* ADA_EXP_H */
 
 
 /* A helper function for UNOP_NEG.  */
 
-static value *
+value *
 ada_unop_neg (struct type *expect_type,
              struct expression *exp,
              enum noside noside, enum exp_opcode op,
 
 /* A helper function for OP_ATR_TAG.  */
 
-static value *
+value *
 ada_atr_tag (struct type *expect_type,
             struct expression *exp,
             enum noside noside, enum exp_opcode op,
 
 /* A helper function for OP_ATR_SIZE.  */
 
-static value *
+value *
 ada_atr_size (struct type *expect_type,
              struct expression *exp,
              enum noside noside, enum exp_opcode op,
 
 /* A helper function for UNOP_ABS.  */
 
-static value *
+value *
 ada_abs (struct type *expect_type,
         struct expression *exp,
         enum noside noside, enum exp_opcode op,