diff --git a/src/constants.c b/src/constants.c
index fd0a8559500879f755d642241c5709e50c67d16e..a19c5171e4c197ba1c17bd4c05954cea1bf44526 100644
--- a/src/constants.c
+++ b/src/constants.c
@@ -43,6 +43,23 @@ void low_add_efun(struct pike_string *name, struct svalue *fun)
   }
 }
 
+void low_add_constant(char *name, struct svalue *fun)
+{
+  struct pike_string *p;
+  p=make_shared_string(name);
+  low_add_efun(p, fun);
+  free_string(p);
+}
+
+void add_global_program(char *name, struct program *p)
+{
+  struct svalue s;
+  s.type=T_PROGRAM;
+  s.subtype=0;
+  s.u.program=p;
+  low_add_constant(name, &s);
+}
+
 struct callable *make_callable(c_fun fun,
 			       char *name,
 			       char *type,
diff --git a/src/constants.h b/src/constants.h
index 1c10731dfaac1f6a3fa1c6f6957177f0e2185ed3..f18977e32ea902f0ec16311717eb6fb749584f4a 100644
--- a/src/constants.h
+++ b/src/constants.h
@@ -28,6 +28,8 @@ struct callable
 /* Prototypes begin here */
 struct mapping *get_builtin_constants();
 void low_add_efun(struct pike_string *name, struct svalue *fun);
+void low_add_constant(char *name, struct svalue *fun);
+void add_global_program(char *name, struct program *p);
 struct callable *make_callable(c_fun fun,
 			       char *name,
 			       char *type,