diff --git a/src/builtin.cmod b/src/builtin.cmod
index f73a4f4ef38b945bd795087bbb20087b80e76357..ea4cada28e34fe016677a0963c7adb5a223b0317 100644
--- a/src/builtin.cmod
+++ b/src/builtin.cmod
@@ -2,7 +2,7 @@
 || This file is part of Pike. For copyright information see COPYRIGHT.
 || Pike is distributed under GPL, LGPL and MPL. See the file COPYING
 || for more information.
-|| $Id: builtin.cmod,v 1.189 2006/04/22 15:27:39 grubba Exp $
+|| $Id: builtin.cmod,v 1.190 2006/07/05 19:21:29 mast Exp $
 */
 
 #include "global.h"
@@ -68,6 +68,7 @@
  *!   an array of objects instead, and more information about the
  *!   symbols might be added.
  */
+PMOD_EXPORT
 PIKEFUN array(array(int|string)) _describe_program(mixed x)
      efun;
 {
@@ -110,6 +111,7 @@ PIKEFUN array(array(int|string)) _describe_program(mixed x)
  *! @seealso
  *! @[sprintf()]
  */
+PMOD_EXPORT
 PIKEFUN string basetype(mixed x)
   efun;
   optflags OPT_TRY_OPTIMIZE;
@@ -173,6 +175,7 @@ PIKEFUN string basetype(mixed x)
  *! @seealso
  *! @[sprintf()]
  */
+PMOD_EXPORT
 PIKEFUN string int2char(int|object x)
   efun;
   optflags OPT_TRY_OPTIMIZE;
@@ -225,6 +228,7 @@ PIKEFUN string int2char(int|object x)
  *! @seealso
  *! @[sprintf()]
  */
+PMOD_EXPORT
 PIKEFUN string int2hex(int|object x)
   efun;
   optflags OPT_TRY_OPTIMIZE;
@@ -303,6 +307,7 @@ static INLINE int hexchar( int v )
  *! @seealso
  *!   @[hex2string()]
  */
+PMOD_EXPORT
 PIKEFUN string string2hex(string s)
   errname String.string2hex;
   optflags OPT_TRY_OPTIMIZE;
@@ -332,6 +337,7 @@ PIKEFUN string string2hex(string s)
  *! @seealso
  *!   @[string2hex()]
  */
+PMOD_EXPORT
 PIKEFUN string hex2string(string hex)
   errname String.hex2string;
   optflags OPT_TRY_OPTIMIZE;
@@ -368,6 +374,7 @@ PIKEFUN string hex2string(string hex)
  *! @seealso
  *! @[rows()]
  */
+PMOD_EXPORT
 PIKEFUN array column(array data, mixed index)
   efun;
   optflags OPT_TRY_OPTIMIZE;
@@ -383,6 +390,7 @@ PIKEFUN array column(array data, mixed index)
  *! @[aggregate_multiset()]
  *!
  */
+PMOD_EXPORT
 PIKEFUN multiset(1) mkmultiset(array(1=mixed) a)
   efun;
   optflags OPT_TRY_OPTIMIZE|OPT_EXTERNAL_DEPEND;
@@ -435,6 +443,7 @@ PIKEFUN multiset(1) mkmultiset(array(1=mixed) a)
  *! @returns
  *!   The old trace level in the current thread is returned.
  */
+PMOD_EXPORT
 PIKEFUN int trace(int level, void|string facility, void|int all_threads)
   efun;
   optflags OPT_SIDE_EFFECT;
@@ -509,6 +518,7 @@ PIKEFUN int trace(int level, void|string facility, void|int all_threads)
  *! @seealso
  *!   @[gc], @[Debug.gc_status]
  */
+PMOD_EXPORT
 PIKEFUN mapping(string:mixed) gc_parameters (void|mapping(string:mixed) params)
   errname Pike.gc_parameters;
   optflags OPT_SIDE_EFFECT;
@@ -586,6 +596,7 @@ PIKEFUN mapping(string:mixed) gc_parameters (void|mapping(string:mixed) params)
  *! @seealso
  *! @[time()], @[localtime()], @[mktime()], @[gmtime()]
  */
+PMOD_EXPORT
 PIKEFUN string ctime(int timestamp)
   efun;
   optflags OPT_TRY_OPTIMIZE;
@@ -610,6 +621,7 @@ PIKEFUN string ctime(int timestamp)
  *! @seealso
  *! @[indices()], @[values()]
  */
+PMOD_EXPORT
 PIKEFUN mapping(1:2) mkmapping(array(1=mixed) ind, array(2=mixed) val)
   efun;
   optflags OPT_TRY_OPTIMIZE|OPT_EXTERNAL_DEPEND;
@@ -634,6 +646,7 @@ PIKEFUN mapping(1:2) mkmapping(array(1=mixed) ind, array(2=mixed) val)
  *! @seealso
  *! @[search()], @[`/()]
  */
+PMOD_EXPORT
 PIKEFUN int string_count(string haystack, string needle)
   errname String.count;
   optflags OPT_TRY_OPTIMIZE;
@@ -672,6 +685,7 @@ PIKEFUN int string_count(string haystack, string needle)
  *!
  *! Trim leading and trailing spaces and tabs from the string @[s].
  */
+PMOD_EXPORT
 PIKEFUN string string_trim_whites (string s)
   errname String.trim_whites;
   optflags OPT_TRY_OPTIMIZE;
@@ -704,6 +718,7 @@ PIKEFUN string string_trim_whites (string s)
  *! Trim leading and trailing white spaces characters (space, tab,
  *! newline and carriage return) from the string @[s].
  */
+PMOD_EXPORT
 PIKEFUN string string_trim_all_whites (string s)
   errname String.trim_all_whites;
   optflags OPT_TRY_OPTIMIZE;
@@ -737,6 +752,7 @@ PIKEFUN string string_trim_all_whites (string s)
  *!
  *! Returns 1 if @[prog] implements @[api].
  */
+PMOD_EXPORT
 PIKEFUN int program_implements(program prog, program api)
   errname Program.implements;
   optflags OPT_TRY_OPTIMIZE;
@@ -749,6 +765,7 @@ PIKEFUN int program_implements(program prog, program api)
  *!
  *! Returns 1 if @[child] has inherited @[parent].
  */
+PMOD_EXPORT
 PIKEFUN int program_inherits(program parent, program child)
   errname Program.inherits;
   optflags OPT_TRY_OPTIMIZE;
@@ -767,6 +784,7 @@ PIKEFUN int program_inherits(program parent, program child)
  *! If it cannot be determined where the program was defined, @expr{0@}
  *! (zero) will be returned.
  */
+PMOD_EXPORT
 PIKEFUN string program_defined(program p)
   errname Program.defined;
   optflags OPT_TRY_OPTIMIZE;
@@ -804,6 +822,7 @@ PIKEFUN string program_defined(program p)
  *!     The string @[s] contains characters >= 65536.
  *! @endint
  */
+PMOD_EXPORT
 PIKEFUN int(8 .. 8)|int(16 .. 16)|int(32 .. 32) string_width(string s)
   errname String.width;
   optflags OPT_TRY_OPTIMIZE;
@@ -830,6 +849,7 @@ PIKEFUN int(8 .. 8)|int(16 .. 16)|int(32 .. 32) string_width(string s)
  *! @seealso
  *!   @[mappingp()]
  */
+PMOD_EXPORT
 PIKEFUN mixed m_delete(object|mapping map, mixed index)
   efun;
   optflags OPT_SIDE_EFFECT;
@@ -866,6 +886,7 @@ PIKEFUN mixed m_delete(object|mapping map, mixed index)
  *! Returns the weak flag settings for @[m]. It's a combination of
  *! @[Pike.WEAK_INDICES] and @[Pike.WEAK_VALUES].
  */
+PMOD_EXPORT
 PIKEFUN int get_weak_flag(array m)
   efun;
   optflags OPT_EXTERNAL_DEPEND;
@@ -873,11 +894,13 @@ PIKEFUN int get_weak_flag(array m)
   RETURN (m->flags & ARRAY_WEAK_FLAG) ? PIKE_WEAK_VALUES : 0;
 }
 
+PMOD_EXPORT
 PIKEFUN int get_weak_flag(mapping m)
 {
   RETURN  mapping_get_flags(m) & MAPPING_WEAK;
 }
 
+PMOD_EXPORT
 PIKEFUN int get_weak_flag(multiset m)
 {
   RETURN multiset_get_flags(m) & MULTISET_WEAK;
@@ -908,6 +931,7 @@ PIKEFUN program __empty_program(int|void line, string|void file)
  *! @seealso
  *! @[function_object()]
  */
+PMOD_EXPORT
 PIKEFUN string function_name(program|function func)
   efun;
   optflags OPT_TRY_OPTIMIZE;
@@ -991,6 +1015,7 @@ PIKEFUN string function_name(program|function func)
  *! @seealso
  *!   @[function_name()], @[function_program()]
  */
+PMOD_EXPORT
 PIKEFUN object function_object(function|program func)
   efun;
   optflags OPT_TRY_OPTIMIZE;
@@ -1034,6 +1059,7 @@ PIKEFUN object function_object(function|program func)
  *! @seealso
  *!   @[function_name()], @[function_object()]
  */
+PMOD_EXPORT
 PIKEFUN program function_program(program|function func)
   efun;
   optflags OPT_TRY_OPTIMIZE;
@@ -1093,6 +1119,7 @@ PIKEFUN program function_program(program|function func)
  *!   @[predef::random()]
  */
 
+PMOD_EXPORT
 PIKEFUN mixed random(object o)
   efun;
   optflags OPT_TRY_OPTIMIZE|OPT_EXTERNAL_DEPEND;
@@ -1111,12 +1138,14 @@ PIKEFUN mixed random(object o)
  *!   @[random_seed()]
  */
 
+PMOD_EXPORT
 PIKEFUN int random(int i)
 {
   if(i <= 0) RETURN 0;
   RETURN  my_rand() % i;
 }      
 
+PMOD_EXPORT
 PIKEFUN float random(float f)
 {
   if(f<=0.0) RETURN 0.0;
@@ -1130,6 +1159,7 @@ PIKEFUN float random(float f)
  *!   Returns a random element from @[x].
  */
 
+PMOD_EXPORT
 PIKEFUN mixed random(array a)
      rawtype tFunc(tArr(tSetvar(0,tMix)),tVar(0));
 {
@@ -1140,6 +1170,7 @@ PIKEFUN mixed random(array a)
   pop_stack();
 }
 
+PMOD_EXPORT
 PIKEFUN mixed random(multiset m)
      rawtype tFunc(tSet(tSetvar(1,tMix)),tVar(1));
 {
@@ -1165,6 +1196,7 @@ PIKEFUN mixed random(multiset m)
  *!   Returns a random index-value pair from the mapping.
  */
 
+PMOD_EXPORT
 PIKEFUN array random(mapping m)
 {
   struct mapping_data *md=m->data;
diff --git a/src/builtin_functions.h b/src/builtin_functions.h
index dfca4437720ce9aa796f50d996099e8072140c71..1319181d7d387fc4c99ca7ecffb9c21ea53cc928 100644
--- a/src/builtin_functions.h
+++ b/src/builtin_functions.h
@@ -2,7 +2,7 @@
 || This file is part of Pike. For copyright information see COPYRIGHT.
 || Pike is distributed under GPL, LGPL and MPL. See the file COPYING
 || for more information.
-|| $Id: builtin_functions.h,v 1.33 2006/03/11 17:21:34 grubba Exp $
+|| $Id: builtin_functions.h,v 1.34 2006/07/05 19:21:29 mast Exp $
 */
 
 #ifndef BUILTIN_EFUNS_H
@@ -164,31 +164,31 @@ PMOD_EXPORT void f_get_iterator(INT32 args);
 int foreach_iterate(struct object *o, int do_step);
 
 /* From builtin.cmod. */
-void f_cq__describe_program(INT32 args);
-void f_basetype(INT32 args);
-void f_int2char(INT32 args);
-void f_int2hex(INT32 args);
-void f_string2hex(INT32 args);
-void f_hex2string(INT32 args);
-void f_column(INT32 args);
-void f_mkmultiset(INT32 args);
-void f_trace(INT32 args);
-void f_gc_parameters(INT32 args);
-void f_ctime(INT32 args);
-void f_mkmapping(INT32 args);
-void f_string_count(INT32 args);
-void f_string_trim_whites(INT32 args);
-void f_string_trim_all_whites(INT32 args);
-void f_program_implements(INT32 args);
-void f_program_inherits(INT32 args);
-void f_program_defined(INT32 args);
-void f_string_width(INT32 args);
-void f_m_delete(INT32 args);
-void f_get_weak_flag(INT32 args);
-void f_function_name(INT32 args);
-void f_function_object(INT32 args);
-void f_function_program(INT32 args);
-void f_random(INT32 args);
+PMOD_EXPORT void f_cq__describe_program(INT32 args);
+PMOD_EXPORT void f_basetype(INT32 args);
+PMOD_EXPORT void f_int2char(INT32 args);
+PMOD_EXPORT void f_int2hex(INT32 args);
+PMOD_EXPORT void f_string2hex(INT32 args);
+PMOD_EXPORT void f_hex2string(INT32 args);
+PMOD_EXPORT void f_column(INT32 args);
+PMOD_EXPORT void f_mkmultiset(INT32 args);
+PMOD_EXPORT void f_trace(INT32 args);
+PMOD_EXPORT void f_gc_parameters(INT32 args);
+PMOD_EXPORT void f_ctime(INT32 args);
+PMOD_EXPORT void f_mkmapping(INT32 args);
+PMOD_EXPORT void f_string_count(INT32 args);
+PMOD_EXPORT void f_string_trim_whites(INT32 args);
+PMOD_EXPORT void f_string_trim_all_whites(INT32 args);
+PMOD_EXPORT void f_program_implements(INT32 args);
+PMOD_EXPORT void f_program_inherits(INT32 args);
+PMOD_EXPORT void f_program_defined(INT32 args);
+PMOD_EXPORT void f_string_width(INT32 args);
+PMOD_EXPORT void f_m_delete(INT32 args);
+PMOD_EXPORT void f_get_weak_flag(INT32 args);
+PMOD_EXPORT void f_function_name(INT32 args);
+PMOD_EXPORT void f_function_object(INT32 args);
+PMOD_EXPORT void f_function_program(INT32 args);
+PMOD_EXPORT void f_random(INT32 args);
 PMOD_EXPORT void f_backtrace(INT32 args);
 
 struct list_node