Index: generic/tcl.decls
===================================================================
RCS file: /cvsroot/tcl/tcl/generic/tcl.decls,v
retrieving revision 1.131
diff -u -p -r1.131 tcl.decls
--- generic/tcl.decls	19 Mar 2008 16:56:13 -0000	1.131
+++ generic/tcl.decls	2 Apr 2008 17:02:22 -0000
@@ -2149,35 +2149,9 @@ export {
     void Tcl_Main(int argc, char **argv, Tcl_AppInitProc *appInitProc)
 }
 export {
-    CONST char *Tcl_InitStubs(Tcl_Interp *interp, CONST char *version,
-	int exact)
-}
-export {
-    CONST char *TclTomMathInitializeStubs(Tcl_Interp* interp,
-	CONST char* version, int epoch, int revision)
-}
-export {
     CONST char *Tcl_PkgInitStubsCheck(Tcl_Interp *interp, CONST char *version,
 	int exact)
 }
 export {
     void Tcl_GetMemoryInfo(Tcl_DString *dsPtr)
 }
-
-# Global variables that need to be exported from the tcl shared library.
-
-export {
-    TclStubs *tclStubsPtr                       (fool checkstubs)
-}
-export {
-    TclPlatStubs *tclPlatStubsPtr               (fool checkstubs)
-}
-export {
-    TclIntStubs *tclIntStubsPtr                 (fool checkstubs)
-}
-export {
-    TclIntPlatStubs *tclIntPlatStubsPtr         (fool checkstubs)
-}
-export {
-    TclTomMathStubs* tclTomMathStubsPtr         (fool checkstubs)
-}
Index: generic/tclDecls.h
===================================================================
RCS file: /cvsroot/tcl/tcl/generic/tclDecls.h,v
retrieving revision 1.131
diff -u -p -r1.131 tclDecls.h
--- generic/tclDecls.h	1 Apr 2008 16:23:40 -0000	1.131
+++ generic/tclDecls.h	2 Apr 2008 17:02:23 -0000
@@ -3503,14 +3503,14 @@ EXTERN void		Tcl_AppendPrintfToObj (Tcl_
 #endif
 
 typedef struct TclStubHooks {
-    struct TclPlatStubs *tclPlatStubs;
-    struct TclIntStubs *tclIntStubs;
-    struct TclIntPlatStubs *tclIntPlatStubs;
+    CONST struct TclPlatStubs *tclPlatStubs;
+    CONST struct TclIntStubs *tclIntStubs;
+    CONST struct TclIntPlatStubs *tclIntPlatStubs;
 } TclStubHooks;
 
 typedef struct TclStubs {
     int magic;
-    struct TclStubHooks *hooks;
+    CONST struct TclStubHooks *hooks;
 
     int (*tcl_PkgProvideEx) (Tcl_Interp* interp, CONST char* name, CONST char* version, ClientData clientData); /* 0 */
     CONST84_RETURN char * (*tcl_PkgRequireEx) (Tcl_Interp * interp, CONST char * name, CONST char * version, int exact, ClientData * clientDataPtr); /* 1 */
@@ -4143,15 +4143,7 @@ typedef struct TclStubs {
 } TclStubs;
 
 #if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS)
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-extern TclStubs *tclStubsPtr;
-#ifdef __cplusplus
-}
-#endif
-
+EXTERN CONST TclStubs *tclStubsPtr;
 #endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */
 
 #if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS)
Index: generic/tclIntDecls.h
===================================================================
RCS file: /cvsroot/tcl/tcl/generic/tclIntDecls.h,v
retrieving revision 1.113
diff -u -p -r1.113 tclIntDecls.h
--- generic/tclIntDecls.h	1 Apr 2008 16:23:41 -0000	1.113
+++ generic/tclIntDecls.h	2 Apr 2008 17:02:26 -0000
@@ -1079,7 +1079,7 @@ EXTERN void		TclBackgroundException (Tcl
 
 typedef struct TclIntStubs {
     int magic;
-    struct TclIntStubHooks *hooks;
+    CONST struct TclIntStubHooks *hooks;
 
     void *reserved0;
     void *reserved1;
@@ -1345,15 +1345,7 @@ typedef struct TclIntStubs {
 } TclIntStubs;
 
 #if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS)
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-extern TclIntStubs *tclIntStubsPtr;
-#ifdef __cplusplus
-}
-#endif
-
+EXTERN CONST TclIntStubs *tclIntStubsPtr;
 #endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */
 
 #if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS)
Index: generic/tclIntPlatDecls.h
===================================================================
RCS file: /cvsroot/tcl/tcl/generic/tclIntPlatDecls.h,v
retrieving revision 1.33
diff -u -p -r1.33 tclIntPlatDecls.h
--- generic/tclIntPlatDecls.h	1 Apr 2008 16:23:41 -0000	1.33
+++ generic/tclIntPlatDecls.h	2 Apr 2008 17:02:26 -0000
@@ -372,7 +372,7 @@ EXTERN int		TclMacOSXMatchType (Tcl_Inte
 
 typedef struct TclIntPlatStubs {
     int magic;
-    struct TclIntPlatStubHooks *hooks;
+    CONST struct TclIntPlatStubHooks *hooks;
 
 #if !defined(__WIN32__) && !defined(MAC_OSX_TCL) /* UNIX */
     void (*tclGetAndDetachPids) (Tcl_Interp * interp, Tcl_Channel chan); /* 0 */
@@ -447,15 +447,7 @@ typedef struct TclIntPlatStubs {
 } TclIntPlatStubs;
 
 #if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS)
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-extern TclIntPlatStubs *tclIntPlatStubsPtr;
-#ifdef __cplusplus
-}
-#endif
-
+EXTERN CONST TclIntPlatStubs *tclIntPlatStubsPtr;
 #endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */
 
 #if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS)
Index: generic/tclPlatDecls.h
===================================================================
RCS file: /cvsroot/tcl/tcl/generic/tclPlatDecls.h,v
retrieving revision 1.28
diff -u -p -r1.28 tclPlatDecls.h
--- generic/tclPlatDecls.h	1 Apr 2008 16:23:41 -0000	1.28
+++ generic/tclPlatDecls.h	2 Apr 2008 17:02:27 -0000
@@ -82,7 +82,7 @@ EXTERN int		Tcl_MacOSXOpenVersionedBundl
 
 typedef struct TclPlatStubs {
     int magic;
-    struct TclPlatStubHooks *hooks;
+    CONST struct TclPlatStubHooks *hooks;
 
 #ifdef __WIN32__ /* WIN */
     TCHAR * (*tcl_WinUtfToTChar) (CONST char * str, int len, Tcl_DString * dsPtr); /* 0 */
@@ -95,15 +95,7 @@ typedef struct TclPlatStubs {
 } TclPlatStubs;
 
 #if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS)
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-extern TclPlatStubs *tclPlatStubsPtr;
-#ifdef __cplusplus
-}
-#endif
-
+EXTERN CONST TclPlatStubs *tclPlatStubsPtr;
 #endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */
 
 #if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS)
Index: generic/tclStubInit.c
===================================================================
RCS file: /cvsroot/tcl/tcl/generic/tclStubInit.c,v
retrieving revision 1.150
diff -u -p -r1.150 tclStubInit.c
--- generic/tclStubInit.c	23 Jan 2008 17:31:42 -0000	1.150
+++ generic/tclStubInit.c	2 Apr 2008 17:02:27 -0000
@@ -491,7 +491,7 @@ TclTomMathStubs tclTomMathStubs = {
     TclBN_s_mp_sub, /* 60 */
 };
 
-static TclStubHooks tclStubHooks = {
+static const TclStubHooks tclStubHooks = {
     &tclPlatStubs,
     &tclIntStubs,
     &tclIntPlatStubs
Index: generic/tclStubLib.c
===================================================================
RCS file: /cvsroot/tcl/tcl/generic/tclStubLib.c,v
retrieving revision 1.23
diff -u -p -r1.23 tclStubLib.c
--- generic/tclStubLib.c	2 Apr 2008 03:37:32 -0000	1.23
+++ generic/tclStubLib.c	2 Apr 2008 17:02:27 -0000
@@ -24,15 +24,17 @@
 
 #include "tclInt.h"
 
-/*
- * Tcl_InitStubs and stub table pointers are built as exported symbols.
- */
-
-TclStubs *tclStubsPtr = NULL;
-TclPlatStubs *tclPlatStubsPtr = NULL;
-TclIntStubs *tclIntStubsPtr = NULL;
-TclIntPlatStubs *tclIntPlatStubsPtr = NULL;
-TclTomMathStubs* tclTomMathStubsPtr = NULL;
+MODULE_SCOPE const TclStubs *tclStubsPtr;
+MODULE_SCOPE const TclPlatStubs *tclPlatStubsPtr;
+MODULE_SCOPE const TclIntStubs *tclIntStubsPtr;
+MODULE_SCOPE const TclIntPlatStubs *tclIntPlatStubsPtr;
+MODULE_SCOPE const TclTomMathStubs* tclTomMathStubsPtr;
+
+const TclStubs *tclStubsPtr = NULL;
+const TclPlatStubs *tclPlatStubsPtr = NULL;
+const TclIntStubs *tclIntStubsPtr = NULL;
+const TclIntPlatStubs *tclIntPlatStubsPtr = NULL;
+const TclTomMathStubs* tclTomMathStubsPtr = NULL;
 
 static TclStubs *
 HasStubSupport(
@@ -77,7 +79,7 @@ static int isDigit(const int c)
  *----------------------------------------------------------------------
  */
 
-CONST char *
+MODULE_SCOPE CONST char *
 Tcl_InitStubs(
     Tcl_Interp *interp,
     CONST char *version,
@@ -159,7 +161,7 @@ Tcl_InitStubs(
  *----------------------------------------------------------------------
  */
 
-CONST char*
+MODULE_SCOPE CONST char*
 TclTomMathInitializeStubs(
     Tcl_Interp* interp,		/* Tcl interpreter */
     CONST char* version,	/* Tcl version needed */
Index: generic/tclTomMathDecls.h
===================================================================
RCS file: /cvsroot/tcl/tcl/generic/tclTomMathDecls.h,v
retrieving revision 1.3
diff -u -p -r1.3 tclTomMathDecls.h
--- generic/tclTomMathDecls.h	1 Apr 2008 16:23:42 -0000	1.3
+++ generic/tclTomMathDecls.h	2 Apr 2008 17:02:27 -0000
@@ -455,7 +455,7 @@ EXTERN int		TclBN_s_mp_sub (mp_int* a, m
 
 typedef struct TclTomMathStubs {
     int magic;
-    struct TclTomMathStubHooks *hooks;
+    CONST struct TclTomMathStubHooks *hooks;
 
     int (*tclBN_epoch) (void); /* 0 */
     int (*tclBN_revision) (void); /* 1 */
@@ -521,15 +521,7 @@ typedef struct TclTomMathStubs {
 } TclTomMathStubs;
 
 #if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS)
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-extern TclTomMathStubs *tclTomMathStubsPtr;
-#ifdef __cplusplus
-}
-#endif
-
+EXTERN CONST TclTomMathStubs *tclTomMathStubsPtr;
 #endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */
 
 #if defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS)
Index: tools/genStubs.tcl
===================================================================
RCS file: /cvsroot/tcl/tcl/tools/genStubs.tcl,v
retrieving revision 1.23
diff -u -p -r1.23 genStubs.tcl
--- tools/genStubs.tcl	1 Apr 2008 16:23:42 -0000	1.23
+++ tools/genStubs.tcl	2 Apr 2008 17:02:28 -0000
@@ -984,13 +984,13 @@ proc genStubs::emitHeader {name} {
 	foreach hook $hooks($name) {
 	    set capHook [string toupper [string index $hook 0]]
 	    append capHook [string range $hook 1 end]
-	    append text "    struct ${capHook}Stubs *${hook}Stubs;\n"
+	    append text "    CONST struct ${capHook}Stubs *${hook}Stubs;\n"
 	}
 	append text "} ${capName}StubHooks;\n"
     }
     append text "\ntypedef struct ${capName}Stubs {\n"
     append text "    int magic;\n"
-    append text "    struct ${capName}StubHooks *hooks;\n\n"
+    append text "    CONST struct ${capName}StubHooks *hooks;\n\n"
 
     emitSlots $name text
 
@@ -998,9 +998,7 @@ proc genStubs::emitHeader {name} {
 
     set upName [string toupper $libraryName]
     append text "\n#if defined(USE_${upName}_STUBS) && !defined(USE_${upName}_STUB_PROCS)\n"
-    append text "\n#ifdef __cplusplus\nextern \"C\" {\n#endif\n"
-    append text "extern ${capName}Stubs *${name}StubsPtr;\n"
-    append text "#ifdef __cplusplus\n}\n#endif\n"
+    append text "EXTERN CONST ${capName}Stubs *${name}StubsPtr;"
     append text "\n#endif /* defined(USE_${upName}_STUBS) && !defined(USE_${upName}_STUB_PROCS) */\n"
 
     emitMacros $name text
@@ -1050,7 +1048,7 @@ proc genStubs::emitInit {name textVar} {
     append capName [string range $name 1 end]
 
     if {[info exists hooks($name)]} {
-	append text "\nstatic ${capName}StubHooks ${name}StubHooks = \{\n"
+	append text "\nstatic const ${capName}StubHooks ${name}StubHooks = \{\n"
 	set sep "    "
 	foreach sub $hooks($name) {
 	    append text $sep "&${sub}Stubs"
