summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--generic/tcl.decls4
-rw-r--r--generic/tclDecls.h177
-rw-r--r--generic/tclInt.decls35
-rw-r--r--generic/tclIntDecls.h155
-rw-r--r--generic/tclStubInit.c108
6 files changed, 465 insertions, 22 deletions
diff --git a/ChangeLog b/ChangeLog
index 8eb7af6..a885b3e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2013-01-07 Jan Nijtmans <nijtmans@users.sf.net>
+
+ * generic/tcl.decls: Extend the public and private stub tables with
+ * generic/tclInt.decls: dummy NULL entries, up to the size of the
+ Tcl 8.6 stub tables. This makes it easier to debug extensions which
+ use Tcl 8.5/8.6 features but (erroneously) are attempted to be loaded
+ in Tcl 8.4.
+
2012-12-31 Donal K. Fellows <dkf@users.sf.net>
* doc/string.n: Noted the obsolescence of the 'bytelength',
diff --git a/generic/tcl.decls b/generic/tcl.decls
index 19bacc3..b8d8d7d 100644
--- a/generic/tcl.decls
+++ b/generic/tcl.decls
@@ -1795,6 +1795,10 @@ declare 573 {
int objc, Tcl_Obj *const objv[], ClientData *clientDataPtr)
}
+declare 630 {
+ void TclUnusedStubEntry(void)
+}
+
##############################################################################
# Define the platform specific public Tcl interface. These functions are only
diff --git a/generic/tclDecls.h b/generic/tclDecls.h
index 29b0eb0..7df9897 100644
--- a/generic/tclDecls.h
+++ b/generic/tclDecls.h
@@ -1629,6 +1629,64 @@ EXTERN int Tcl_PkgRequireProc _ANSI_ARGS_((Tcl_Interp *interp,
CONST char *name, int objc,
Tcl_Obj *CONST objv[],
ClientData *clientDataPtr));
+/* Slot 574 is reserved */
+/* Slot 575 is reserved */
+/* Slot 576 is reserved */
+/* Slot 577 is reserved */
+/* Slot 578 is reserved */
+/* Slot 579 is reserved */
+/* Slot 580 is reserved */
+/* Slot 581 is reserved */
+/* Slot 582 is reserved */
+/* Slot 583 is reserved */
+/* Slot 584 is reserved */
+/* Slot 585 is reserved */
+/* Slot 586 is reserved */
+/* Slot 587 is reserved */
+/* Slot 588 is reserved */
+/* Slot 589 is reserved */
+/* Slot 590 is reserved */
+/* Slot 591 is reserved */
+/* Slot 592 is reserved */
+/* Slot 593 is reserved */
+/* Slot 594 is reserved */
+/* Slot 595 is reserved */
+/* Slot 596 is reserved */
+/* Slot 597 is reserved */
+/* Slot 598 is reserved */
+/* Slot 599 is reserved */
+/* Slot 600 is reserved */
+/* Slot 601 is reserved */
+/* Slot 602 is reserved */
+/* Slot 603 is reserved */
+/* Slot 604 is reserved */
+/* Slot 605 is reserved */
+/* Slot 606 is reserved */
+/* Slot 607 is reserved */
+/* Slot 608 is reserved */
+/* Slot 609 is reserved */
+/* Slot 610 is reserved */
+/* Slot 611 is reserved */
+/* Slot 612 is reserved */
+/* Slot 613 is reserved */
+/* Slot 614 is reserved */
+/* Slot 615 is reserved */
+/* Slot 616 is reserved */
+/* Slot 617 is reserved */
+/* Slot 618 is reserved */
+/* Slot 619 is reserved */
+/* Slot 620 is reserved */
+/* Slot 621 is reserved */
+/* Slot 622 is reserved */
+/* Slot 623 is reserved */
+/* Slot 624 is reserved */
+/* Slot 625 is reserved */
+/* Slot 626 is reserved */
+/* Slot 627 is reserved */
+/* Slot 628 is reserved */
+/* Slot 629 is reserved */
+/* 630 */
+EXTERN void TclUnusedStubEntry _ANSI_ARGS_((void));
typedef struct TclStubHooks {
struct TclPlatStubs *tclPlatStubs;
@@ -2238,6 +2296,63 @@ typedef struct TclStubs {
VOID *reserved571;
VOID *reserved572;
int (*tcl_PkgRequireProc) _ANSI_ARGS_((Tcl_Interp *interp, CONST char *name, int objc, Tcl_Obj *CONST objv[], ClientData *clientDataPtr)); /* 573 */
+ VOID *reserved574;
+ VOID *reserved575;
+ VOID *reserved576;
+ VOID *reserved577;
+ VOID *reserved578;
+ VOID *reserved579;
+ VOID *reserved580;
+ VOID *reserved581;
+ VOID *reserved582;
+ VOID *reserved583;
+ VOID *reserved584;
+ VOID *reserved585;
+ VOID *reserved586;
+ VOID *reserved587;
+ VOID *reserved588;
+ VOID *reserved589;
+ VOID *reserved590;
+ VOID *reserved591;
+ VOID *reserved592;
+ VOID *reserved593;
+ VOID *reserved594;
+ VOID *reserved595;
+ VOID *reserved596;
+ VOID *reserved597;
+ VOID *reserved598;
+ VOID *reserved599;
+ VOID *reserved600;
+ VOID *reserved601;
+ VOID *reserved602;
+ VOID *reserved603;
+ VOID *reserved604;
+ VOID *reserved605;
+ VOID *reserved606;
+ VOID *reserved607;
+ VOID *reserved608;
+ VOID *reserved609;
+ VOID *reserved610;
+ VOID *reserved611;
+ VOID *reserved612;
+ VOID *reserved613;
+ VOID *reserved614;
+ VOID *reserved615;
+ VOID *reserved616;
+ VOID *reserved617;
+ VOID *reserved618;
+ VOID *reserved619;
+ VOID *reserved620;
+ VOID *reserved621;
+ VOID *reserved622;
+ VOID *reserved623;
+ VOID *reserved624;
+ VOID *reserved625;
+ VOID *reserved626;
+ VOID *reserved627;
+ VOID *reserved628;
+ VOID *reserved629;
+ void (*tclUnusedStubEntry) _ANSI_ARGS_((void)); /* 630 */
} TclStubs;
#ifdef __cplusplus
@@ -4334,10 +4449,72 @@ extern TclStubs *tclStubsPtr;
#define Tcl_PkgRequireProc \
(tclStubsPtr->tcl_PkgRequireProc) /* 573 */
#endif
+/* Slot 574 is reserved */
+/* Slot 575 is reserved */
+/* Slot 576 is reserved */
+/* Slot 577 is reserved */
+/* Slot 578 is reserved */
+/* Slot 579 is reserved */
+/* Slot 580 is reserved */
+/* Slot 581 is reserved */
+/* Slot 582 is reserved */
+/* Slot 583 is reserved */
+/* Slot 584 is reserved */
+/* Slot 585 is reserved */
+/* Slot 586 is reserved */
+/* Slot 587 is reserved */
+/* Slot 588 is reserved */
+/* Slot 589 is reserved */
+/* Slot 590 is reserved */
+/* Slot 591 is reserved */
+/* Slot 592 is reserved */
+/* Slot 593 is reserved */
+/* Slot 594 is reserved */
+/* Slot 595 is reserved */
+/* Slot 596 is reserved */
+/* Slot 597 is reserved */
+/* Slot 598 is reserved */
+/* Slot 599 is reserved */
+/* Slot 600 is reserved */
+/* Slot 601 is reserved */
+/* Slot 602 is reserved */
+/* Slot 603 is reserved */
+/* Slot 604 is reserved */
+/* Slot 605 is reserved */
+/* Slot 606 is reserved */
+/* Slot 607 is reserved */
+/* Slot 608 is reserved */
+/* Slot 609 is reserved */
+/* Slot 610 is reserved */
+/* Slot 611 is reserved */
+/* Slot 612 is reserved */
+/* Slot 613 is reserved */
+/* Slot 614 is reserved */
+/* Slot 615 is reserved */
+/* Slot 616 is reserved */
+/* Slot 617 is reserved */
+/* Slot 618 is reserved */
+/* Slot 619 is reserved */
+/* Slot 620 is reserved */
+/* Slot 621 is reserved */
+/* Slot 622 is reserved */
+/* Slot 623 is reserved */
+/* Slot 624 is reserved */
+/* Slot 625 is reserved */
+/* Slot 626 is reserved */
+/* Slot 627 is reserved */
+/* Slot 628 is reserved */
+/* Slot 629 is reserved */
+#ifndef TclUnusedStubEntry
+#define TclUnusedStubEntry \
+ (tclStubsPtr->tclUnusedStubEntry) /* 630 */
+#endif
#endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */
/* !END!: Do not edit above this line. */
+#undef TclUnusedStubEntry
+
#endif /* _TCLDECLS */
diff --git a/generic/tclInt.decls b/generic/tclInt.decls
index bdae099..18d1bdf 100644
--- a/generic/tclInt.decls
+++ b/generic/tclInt.decls
@@ -87,7 +87,7 @@ declare 14 {
declare 16 {
void TclExprFloatError(Tcl_Interp *interp, double value)
}
-# Removed in 8.4
+# Removed in 8.4:
#declare 17 {
# int TclFileAttrsCmd(Tcl_Interp *interp, int objc, Tcl_Obj *const objv[])
#}
@@ -531,19 +531,9 @@ declare 135 {
int TclpCheckStackSpace(void)
}
-# Added in 8.1:
-
-#declare 137 {
-# int TclpChdir(const char *dirName)
-#}
declare 138 {
CONST84_RETURN char *TclGetEnv(const char *name, Tcl_DString *valuePtr)
}
-#declare 139 {
-# int TclpLoadFile(Tcl_Interp *interp, char *fileName, char *sym1,
-# char *sym2, Tcl_PackageInitProc **proc1Ptr,
-# Tcl_PackageInitProc **proc2Ptr, ClientData *clientDataPtr)
-#}
declare 140 {
int TclLooksLikeInt(const char *bytes, int length)
}
@@ -579,7 +569,7 @@ declare 149 {
void TclHandleRelease(TclHandle handle)
}
-# Added for Tcl 8.2
+# Added in 8.2:
declare 150 {
int TclRegAbout(Tcl_Interp *interp, Tcl_RegExp re)
@@ -595,7 +585,7 @@ declare 153 {
Tcl_Obj *TclGetLibraryPath(void)
}
-# moved to tclTest.c (static) in 8.3.2/8.4a2
+# moved to tclTest.c (static) in 8.3.2:
#declare 154 {
# int TclTestChannelCmd(ClientData clientData,
# Tcl_Interp *interp, int argc, char **argv)
@@ -686,7 +676,7 @@ declare 172 {
int TclInThreadExit(void)
}
-# added for 8.4.2
+# Added in 8.4.2:
declare 173 {
int TclUniCharMatch(const Tcl_UniChar *string, int strLen,
@@ -706,6 +696,10 @@ declare 199 {
int TclMatchIsTrivial(const char *pattern)
}
+declare 249 {
+ void TclUnusedStubEntry(void)
+}
+
##############################################################################
# Define the platform specific internal Tcl interface. These functions are
@@ -758,7 +752,7 @@ declare 9 win {
declare 10 win {
Tcl_DirEntry *TclpReaddir(DIR *dir)
}
-# Removed in 8.3.1 (for Win32s only)
+# Removed in 8.3.1 (for Win32s only):
#declare 10 win {
# int TclWinSynchSpawn(void *args, int type, void **trans, Tcl_Pid *pidPtr)
#}
@@ -807,7 +801,7 @@ declare 20 win {
declare 21 win {
char *TclpInetNtoa(struct in_addr addr)
}
-# removed permanently for 8.4
+# Removed in 8.4:
#declare 21 win {
# void TclpAsyncMark(Tcl_AsyncHandler async)
#}
@@ -829,20 +823,17 @@ declare 26 win {
void TclWinSetInterfaces(int wide)
}
-# Added in Tcl 8.3.3 / 8.4
+# Added in 8.3.3:
declare 27 win {
void TclWinFlushDirtyChannels(void)
}
-# Added in 8.4.2
+# Added in 8.4.2:
declare 28 win {
void TclWinResetInterfaces(void)
}
-declare 29 win {
- int TclWinCPUID(unsigned int index, unsigned int *regs)
-}
################################
# Unix specific functions
@@ -903,7 +894,7 @@ declare 12 unix {
declare 13 unix {
char *TclpInetNtoa(struct in_addr addr)
}
-declare 29 unix {
+declare 29 {win unix} {
int TclWinCPUID(unsigned int index, unsigned int *regs)
}
diff --git a/generic/tclIntDecls.h b/generic/tclIntDecls.h
index 91db149..3bb9795 100644
--- a/generic/tclIntDecls.h
+++ b/generic/tclIntDecls.h
@@ -505,6 +505,57 @@ EXTERN struct tm * TclpGmtime _ANSI_ARGS_((TclpTime_t_CONST clock));
/* Slot 198 is reserved */
/* 199 */
EXTERN int TclMatchIsTrivial _ANSI_ARGS_((CONST char *pattern));
+/* Slot 200 is reserved */
+/* Slot 201 is reserved */
+/* Slot 202 is reserved */
+/* Slot 203 is reserved */
+/* Slot 204 is reserved */
+/* Slot 205 is reserved */
+/* Slot 206 is reserved */
+/* Slot 207 is reserved */
+/* Slot 208 is reserved */
+/* Slot 209 is reserved */
+/* Slot 210 is reserved */
+/* Slot 211 is reserved */
+/* Slot 212 is reserved */
+/* Slot 213 is reserved */
+/* Slot 214 is reserved */
+/* Slot 215 is reserved */
+/* Slot 216 is reserved */
+/* Slot 217 is reserved */
+/* Slot 218 is reserved */
+/* Slot 219 is reserved */
+/* Slot 220 is reserved */
+/* Slot 221 is reserved */
+/* Slot 222 is reserved */
+/* Slot 223 is reserved */
+/* Slot 224 is reserved */
+/* Slot 225 is reserved */
+/* Slot 226 is reserved */
+/* Slot 227 is reserved */
+/* Slot 228 is reserved */
+/* Slot 229 is reserved */
+/* Slot 230 is reserved */
+/* Slot 231 is reserved */
+/* Slot 232 is reserved */
+/* Slot 233 is reserved */
+/* Slot 234 is reserved */
+/* Slot 235 is reserved */
+/* Slot 236 is reserved */
+/* Slot 237 is reserved */
+/* Slot 238 is reserved */
+/* Slot 239 is reserved */
+/* Slot 240 is reserved */
+/* Slot 241 is reserved */
+/* Slot 242 is reserved */
+/* Slot 243 is reserved */
+/* Slot 244 is reserved */
+/* Slot 245 is reserved */
+/* Slot 246 is reserved */
+/* Slot 247 is reserved */
+/* Slot 248 is reserved */
+/* 249 */
+EXTERN void TclUnusedStubEntry _ANSI_ARGS_((void));
typedef struct TclIntStubs {
int magic;
@@ -710,6 +761,56 @@ typedef struct TclIntStubs {
VOID *reserved197;
VOID *reserved198;
int (*tclMatchIsTrivial) _ANSI_ARGS_((CONST char *pattern)); /* 199 */
+ VOID *reserved200;
+ VOID *reserved201;
+ VOID *reserved202;
+ VOID *reserved203;
+ VOID *reserved204;
+ VOID *reserved205;
+ VOID *reserved206;
+ VOID *reserved207;
+ VOID *reserved208;
+ VOID *reserved209;
+ VOID *reserved210;
+ VOID *reserved211;
+ VOID *reserved212;
+ VOID *reserved213;
+ VOID *reserved214;
+ VOID *reserved215;
+ VOID *reserved216;
+ VOID *reserved217;
+ VOID *reserved218;
+ VOID *reserved219;
+ VOID *reserved220;
+ VOID *reserved221;
+ VOID *reserved222;
+ VOID *reserved223;
+ VOID *reserved224;
+ VOID *reserved225;
+ VOID *reserved226;
+ VOID *reserved227;
+ VOID *reserved228;
+ VOID *reserved229;
+ VOID *reserved230;
+ VOID *reserved231;
+ VOID *reserved232;
+ VOID *reserved233;
+ VOID *reserved234;
+ VOID *reserved235;
+ VOID *reserved236;
+ VOID *reserved237;
+ VOID *reserved238;
+ VOID *reserved239;
+ VOID *reserved240;
+ VOID *reserved241;
+ VOID *reserved242;
+ VOID *reserved243;
+ VOID *reserved244;
+ VOID *reserved245;
+ VOID *reserved246;
+ VOID *reserved247;
+ VOID *reserved248;
+ void (*tclUnusedStubEntry) _ANSI_ARGS_((void)); /* 249 */
} TclIntStubs;
#ifdef __cplusplus
@@ -1334,6 +1435,59 @@ extern TclIntStubs *tclIntStubsPtr;
#define TclMatchIsTrivial \
(tclIntStubsPtr->tclMatchIsTrivial) /* 199 */
#endif
+/* Slot 200 is reserved */
+/* Slot 201 is reserved */
+/* Slot 202 is reserved */
+/* Slot 203 is reserved */
+/* Slot 204 is reserved */
+/* Slot 205 is reserved */
+/* Slot 206 is reserved */
+/* Slot 207 is reserved */
+/* Slot 208 is reserved */
+/* Slot 209 is reserved */
+/* Slot 210 is reserved */
+/* Slot 211 is reserved */
+/* Slot 212 is reserved */
+/* Slot 213 is reserved */
+/* Slot 214 is reserved */
+/* Slot 215 is reserved */
+/* Slot 216 is reserved */
+/* Slot 217 is reserved */
+/* Slot 218 is reserved */
+/* Slot 219 is reserved */
+/* Slot 220 is reserved */
+/* Slot 221 is reserved */
+/* Slot 222 is reserved */
+/* Slot 223 is reserved */
+/* Slot 224 is reserved */
+/* Slot 225 is reserved */
+/* Slot 226 is reserved */
+/* Slot 227 is reserved */
+/* Slot 228 is reserved */
+/* Slot 229 is reserved */
+/* Slot 230 is reserved */
+/* Slot 231 is reserved */
+/* Slot 232 is reserved */
+/* Slot 233 is reserved */
+/* Slot 234 is reserved */
+/* Slot 235 is reserved */
+/* Slot 236 is reserved */
+/* Slot 237 is reserved */
+/* Slot 238 is reserved */
+/* Slot 239 is reserved */
+/* Slot 240 is reserved */
+/* Slot 241 is reserved */
+/* Slot 242 is reserved */
+/* Slot 243 is reserved */
+/* Slot 244 is reserved */
+/* Slot 245 is reserved */
+/* Slot 246 is reserved */
+/* Slot 247 is reserved */
+/* Slot 248 is reserved */
+#ifndef TclUnusedStubEntry
+#define TclUnusedStubEntry \
+ (tclIntStubsPtr->tclUnusedStubEntry) /* 249 */
+#endif
#endif /* defined(USE_TCL_STUBS) && !defined(USE_TCL_STUB_PROCS) */
@@ -1344,5 +1498,6 @@ extern TclIntStubs *tclIntStubsPtr;
# undef TclSockMinimumBuffers
# define TclSockMinimumBuffers(a,b) TclSockMinimumBuffersOld((int)(a),b)
#endif
+#undef TclUnusedStubEntry
#endif /* _TCLINTDECLS */
diff --git a/generic/tclStubInit.c b/generic/tclStubInit.c
index c601256..85dfe1c 100644
--- a/generic/tclStubInit.c
+++ b/generic/tclStubInit.c
@@ -33,6 +33,7 @@
#undef Tcl_CreateHashEntry
#undef TclpGetPid
#undef TclSockMinimumBuffers
+#define TclUnusedStubEntry NULL
/*
* Keep a record of the original Notifier procedures, created in the
@@ -405,6 +406,56 @@ TclIntStubs tclIntStubs = {
NULL, /* 197 */
NULL, /* 198 */
TclMatchIsTrivial, /* 199 */
+ NULL, /* 200 */
+ NULL, /* 201 */
+ NULL, /* 202 */
+ NULL, /* 203 */
+ NULL, /* 204 */
+ NULL, /* 205 */
+ NULL, /* 206 */
+ NULL, /* 207 */
+ NULL, /* 208 */
+ NULL, /* 209 */
+ NULL, /* 210 */
+ NULL, /* 211 */
+ NULL, /* 212 */
+ NULL, /* 213 */
+ NULL, /* 214 */
+ NULL, /* 215 */
+ NULL, /* 216 */
+ NULL, /* 217 */
+ NULL, /* 218 */
+ NULL, /* 219 */
+ NULL, /* 220 */
+ NULL, /* 221 */
+ NULL, /* 222 */
+ NULL, /* 223 */
+ NULL, /* 224 */
+ NULL, /* 225 */
+ NULL, /* 226 */
+ NULL, /* 227 */
+ NULL, /* 228 */
+ NULL, /* 229 */
+ NULL, /* 230 */
+ NULL, /* 231 */
+ NULL, /* 232 */
+ NULL, /* 233 */
+ NULL, /* 234 */
+ NULL, /* 235 */
+ NULL, /* 236 */
+ NULL, /* 237 */
+ NULL, /* 238 */
+ NULL, /* 239 */
+ NULL, /* 240 */
+ NULL, /* 241 */
+ NULL, /* 242 */
+ NULL, /* 243 */
+ NULL, /* 244 */
+ NULL, /* 245 */
+ NULL, /* 246 */
+ NULL, /* 247 */
+ NULL, /* 248 */
+ TclUnusedStubEntry, /* 249 */
};
TclIntPlatStubs tclIntPlatStubs = {
@@ -1128,6 +1179,63 @@ TclStubs tclStubs = {
NULL, /* 571 */
NULL, /* 572 */
Tcl_PkgRequireProc, /* 573 */
+ NULL, /* 574 */
+ NULL, /* 575 */
+ NULL, /* 576 */
+ NULL, /* 577 */
+ NULL, /* 578 */
+ NULL, /* 579 */
+ NULL, /* 580 */
+ NULL, /* 581 */
+ NULL, /* 582 */
+ NULL, /* 583 */
+ NULL, /* 584 */
+ NULL, /* 585 */
+ NULL, /* 586 */
+ NULL, /* 587 */
+ NULL, /* 588 */
+ NULL, /* 589 */
+ NULL, /* 590 */
+ NULL, /* 591 */
+ NULL, /* 592 */
+ NULL, /* 593 */
+ NULL, /* 594 */
+ NULL, /* 595 */
+ NULL, /* 596 */
+ NULL, /* 597 */
+ NULL, /* 598 */
+ NULL, /* 599 */
+ NULL, /* 600 */
+ NULL, /* 601 */
+ NULL, /* 602 */
+ NULL, /* 603 */
+ NULL, /* 604 */
+ NULL, /* 605 */
+ NULL, /* 606 */
+ NULL, /* 607 */
+ NULL, /* 608 */
+ NULL, /* 609 */
+ NULL, /* 610 */
+ NULL, /* 611 */
+ NULL, /* 612 */
+ NULL, /* 613 */
+ NULL, /* 614 */
+ NULL, /* 615 */
+ NULL, /* 616 */
+ NULL, /* 617 */
+ NULL, /* 618 */
+ NULL, /* 619 */
+ NULL, /* 620 */
+ NULL, /* 621 */
+ NULL, /* 622 */
+ NULL, /* 623 */
+ NULL, /* 624 */
+ NULL, /* 625 */
+ NULL, /* 626 */
+ NULL, /* 627 */
+ NULL, /* 628 */
+ NULL, /* 629 */
+ TclUnusedStubEntry, /* 630 */
};
/* !END!: Do not edit above this line. */