diff --git a/src/error.c b/src/error.c
index 92f2ef89a4f5ead155a8123820c7ef5789079358..7d4dbd636a3609fcfc8f9957473081c12c3841af 100644
--- a/src/error.c
+++ b/src/error.c
@@ -21,7 +21,7 @@
 #include "threads.h"
 #include "gc.h"
 
-RCSID("$Id: error.c,v 1.61 2000/08/15 16:55:20 grubba Exp $");
+RCSID("$Id: error.c,v 1.62 2000/08/21 21:32:37 grubba Exp $");
 
 #undef ATTRIBUTE
 #define ATTRIBUTE(X)
@@ -263,7 +263,7 @@ PMOD_EXPORT JMP_BUF *init_recovery(JMP_BUF *r DEBUG_LINE_ARGS)
   return r;
 }
 
-PMOD_EXPORT void pike_throw(void) ATTRIBUTE((noreturn))
+PMOD_EXPORT DECLSPEC(noreturn) void pike_throw(void) ATTRIBUTE((noreturn))
 {
   while(Pike_interpreter.recoveries && throw_severity > Pike_interpreter.recoveries->severity)
   {
@@ -316,7 +316,7 @@ struct svalue throw_value = { PIKE_T_INT };
 int throw_severity;
 static const char *in_error;
 
-PMOD_EXPORT void low_error(char *buf) ATTRIBUTE((noreturn))
+PMOD_EXPORT DECLSPEC(noreturn) void low_error(char *buf) ATTRIBUTE((noreturn))
 {
   push_error(buf);
   free_svalue(& throw_value);
@@ -329,7 +329,7 @@ PMOD_EXPORT void low_error(char *buf) ATTRIBUTE((noreturn))
 /* FIXME: NOTE: This function uses a static buffer.
  * Check sizes of arguments passed!
  */
-void va_error(const char *fmt, va_list args) ATTRIBUTE((noreturn))
+void DECLSPEC(noreturn) va_error(const char *fmt, va_list args) ATTRIBUTE((noreturn))
 {
   char buf[4096];
   SWAP_IN_THREAD_IF_REQUIRED();
@@ -364,7 +364,7 @@ void va_error(const char *fmt, va_list args) ATTRIBUTE((noreturn))
   low_error(buf);
 }
 
-PMOD_EXPORT void new_error(const char *name, const char *text, struct svalue *oldsp,
+PMOD_EXPORT DECLSPEC(noreturn) void new_error(const char *name, const char *text, struct svalue *oldsp,
 	       INT32 args, const char *file, int line) ATTRIBUTE((noreturn))
 {
   int i;
@@ -458,7 +458,7 @@ PMOD_EXPORT void fatal_on_error(void *msg)
   abort();
 }
 
-PMOD_EXPORT void error(const char *fmt,...) ATTRIBUTE((noreturn,format (printf, 1, 2)))
+PMOD_EXPORT DECLSPEC(noreturn) void error(const char *fmt,...) ATTRIBUTE((noreturn,format (printf, 1, 2)))
 {
   va_list args;
   va_start(args,fmt);
@@ -466,7 +466,7 @@ PMOD_EXPORT void error(const char *fmt,...) ATTRIBUTE((noreturn,format (printf,
   va_end(args);
 }
 
-PMOD_EXPORT void debug_fatal(const char *fmt, ...) ATTRIBUTE((noreturn,format (printf, 1, 2)))
+PMOD_EXPORT DECLSPEC(noreturn) void debug_fatal(const char *fmt, ...) ATTRIBUTE((noreturn,format (printf, 1, 2)))
 {
   va_list args;
   static int in_fatal = 0;
@@ -608,12 +608,12 @@ void f_error_backtrace(INT32 args)
   add_ref( ERROR_STRUCT(STRUCT,o)->X=X )
 
 
-void generic_error_va(struct object *o,
-		      char *func,
-		      struct svalue *base_sp,  int args,
-		      char *fmt,
-		      va_list foo)
-  ATTRIBUTE((noreturn))
+DECLSPEC(noreturn) void generic_error_va(struct object *o,
+					 char *func,
+					 struct svalue *base_sp,  int args,
+					 char *fmt,
+					 va_list foo)
+     ATTRIBUTE((noreturn))
 {
   char buf[8192];
   struct pike_string *desc;
@@ -668,7 +668,7 @@ void generic_error_va(struct object *o,
   pike_throw();  /* Hope someone is catching, or we will be out of balls. */
 }
 
-PMOD_EXPORT void generic_error(
+PMOD_EXPORT DECLSPEC(noreturn) void generic_error(
   char *func,
   struct svalue *base_sp,  int args,
   char *desc, ...) ATTRIBUTE((noreturn,format (printf, 4, 5)))
@@ -677,7 +677,7 @@ PMOD_EXPORT void generic_error(
   ERROR_DONE(generic);
 }
 
-PMOD_EXPORT void index_error(
+PMOD_EXPORT DECLSPEC(noreturn) void index_error(
   char *func,
   struct svalue *base_sp,  int args,
   struct svalue *val,
@@ -690,7 +690,7 @@ PMOD_EXPORT void index_error(
   ERROR_DONE(generic);
 }
 
-PMOD_EXPORT void bad_arg_error(
+PMOD_EXPORT DECLSPEC(noreturn) void bad_arg_error(
   char *func,
   struct svalue *base_sp,  int args,
   int which_arg,
@@ -714,7 +714,7 @@ PMOD_EXPORT void bad_arg_error(
   ERROR_DONE(generic);
 }
 
-PMOD_EXPORT void math_error(
+PMOD_EXPORT DECLSPEC(noreturn) void math_error(
   char *func,
   struct svalue *base_sp,  int args,
   struct svalue *number,
@@ -732,7 +732,7 @@ PMOD_EXPORT void math_error(
   ERROR_DONE(generic);
 }
 
-PMOD_EXPORT void resource_error(
+PMOD_EXPORT DECLSPEC(noreturn) void resource_error(
   char *func,
   struct svalue *base_sp,  int args,
   char *resource_type,
@@ -746,7 +746,7 @@ PMOD_EXPORT void resource_error(
   ERROR_DONE(generic);
 }
 
-PMOD_EXPORT void permission_error(
+PMOD_EXPORT DECLSPEC(noreturn) void permission_error(
   char *func,
   struct svalue *base_sp, int args,
   char *permission_type,
diff --git a/src/error.h b/src/error.h
index 2134196af2c424bc189e970924c9c2ace95cab8e..d162d21362337da2821a924eee73b767fa7f8881 100644
--- a/src/error.h
+++ b/src/error.h
@@ -5,7 +5,7 @@
 \*/
 
 /*
- * $Id: error.h,v 1.48 2000/08/15 16:11:50 grubba Exp $
+ * $Id: error.h,v 1.49 2000/08/21 21:32:17 grubba Exp $
  */
 #ifndef ERROR_H
 #define ERROR_H
@@ -171,55 +171,55 @@ extern int throw_severity;
 void check_recovery_context(void);
 PMOD_EXPORT void pike_gdb_breakpoint(void);
 PMOD_EXPORT JMP_BUF *init_recovery(JMP_BUF *r DEBUG_LINE_ARGS);
-PMOD_EXPORT void pike_throw(void) ATTRIBUTE((noreturn));
+PMOD_EXPORT DECLSPEC(noreturn) void pike_throw(void) ATTRIBUTE((noreturn));
 PMOD_EXPORT void push_error(char *description);
-PMOD_EXPORT void low_error(char *buf) ATTRIBUTE((noreturn));
+PMOD_EXPORT DECLSPEC(noreturn) void low_error(char *buf) ATTRIBUTE((noreturn));
 void va_error(const char *fmt, va_list args) ATTRIBUTE((noreturn));
-PMOD_EXPORT void new_error(const char *name, const char *text, struct svalue *oldsp,
+PMOD_EXPORT DECLSPEC(noreturn) void new_error(const char *name, const char *text, struct svalue *oldsp,
 	       INT32 args, const char *file, int line) ATTRIBUTE((noreturn));
 PMOD_EXPORT void exit_on_error(void *msg);
 PMOD_EXPORT void fatal_on_error(void *msg);
-PMOD_EXPORT void error(const char *fmt,...) ATTRIBUTE((noreturn,format (printf, 1, 2)));
-PMOD_EXPORT void debug_fatal(const char *fmt, ...) ATTRIBUTE((noreturn,format (printf, 1, 2)));
+PMOD_EXPORT DECLSPEC(noreturn) void error(const char *fmt,...) ATTRIBUTE((noreturn,format (printf, 1, 2)));
+PMOD_EXPORT DECLSPEC(noreturn) void debug_fatal(const char *fmt, ...) ATTRIBUTE((noreturn,format (printf, 1, 2)));
 void f_error_cast(INT32 args);
 void f_error_index(INT32 args);
 void f_error_describe(INT32 args);
 void f_error_backtrace(INT32 args);
-void generic_error_va(struct object *o,
+void DECLSPEC(noreturn) generic_error_va(struct object *o,
 		      char *func,
 		      struct svalue *base_sp,  int args,
 		      char *fmt,
 		      va_list foo)
   ATTRIBUTE((noreturn));
-void generic_error(
+void DECLSPEC(noreturn) generic_error(
   char *func,
   struct svalue *base_sp,  int args,
   char *desc, ...) ATTRIBUTE((noreturn,format (printf, 4, 5)));
-void index_error(
+void DECLSPEC(noreturn) index_error(
   char *func,
   struct svalue *base_sp,  int args,
   struct svalue *val,
   struct svalue *ind,
   char *desc, ...) ATTRIBUTE((noreturn,format (printf, 6, 7)));
-void bad_arg_error(
+void DECLSPEC(noreturn) bad_arg_error(
   char *func,
   struct svalue *base_sp,  int args,
   int which_arg,
   char *expected_type,
   struct svalue *got,
   char *desc, ...)  ATTRIBUTE((noreturn,format (printf, 7, 8)));
-void math_error(
+void DECLSPEC(noreturn) math_error(
   char *func,
   struct svalue *base_sp,  int args,
   struct svalue *number,
   char *desc, ...) ATTRIBUTE((noreturn,format (printf, 5, 6)));
-void resource_error(
+void DECLSPEC(noreturn) resource_error(
   char *func,
   struct svalue *base_sp,  int args,
   char *resource_type,
   size_t howmuch,
   char *desc, ...) ATTRIBUTE((noreturn,format (printf, 6, 7)));
-void permission_error(
+void DECLSPEC(noreturn) permission_error(
   char *func,
   struct svalue *base_sp, int args,
   char *permission_type,
diff --git a/src/main.c b/src/main.c
index c07d7d321e065da06fc3ed8fe8ef3ae355ced3e7..072069f3a5b47e2baa5bc8b84498320d4c6aa881 100644
--- a/src/main.c
+++ b/src/main.c
@@ -5,7 +5,7 @@
 \*/
 /**/
 #include "global.h"
-RCSID("$Id: main.c,v 1.97 2000/08/18 22:27:04 grubba Exp $");
+RCSID("$Id: main.c,v 1.98 2000/08/21 21:37:42 grubba Exp $");
 #include "fdlib.h"
 #include "backend.h"
 #include "module.h"
@@ -567,7 +567,7 @@ int dbm_main(int argc, char **argv)
 #undef ATTRIBUTE
 #define ATTRIBUTE(X)
 
-void do_exit(int num) ATTRIBUTE((noreturn))
+DECLSPEC(noreturn) void do_exit(int num) ATTRIBUTE((noreturn))
 {
   call_callback(&exit_callbacks, (void *)0);
   free_callback_list(&exit_callbacks);
diff --git a/src/main.h b/src/main.h
index 3f7ca199a7761436ab9523e8ec92ac06cdd4d511..3979605f863b0ce81e89760c60acc8f1869b3d23 100644
--- a/src/main.h
+++ b/src/main.h
@@ -5,7 +5,7 @@
 \*/
 
 /*
- * $Id: main.h,v 1.12 1999/12/13 01:21:11 grubba Exp $
+ * $Id: main.h,v 1.13 2000/08/21 21:37:12 grubba Exp $
  */
 #ifndef MAIN_H
 #define MAIN_H
@@ -36,7 +36,7 @@ struct callback *add_exit_callback(callback_func call,
 				   void *arg,
 				   callback_func free_func);
 int dbm_main(int argc, char **argv);
-void do_exit(int num) ATTRIBUTE((noreturn));
+DECLSPEC(noreturn) void do_exit(int num) ATTRIBUTE((noreturn));
 void low_init_main(void);
 void exit_main(void);
 void init_main(void);