Tcl Source Code

View Ticket
Login
Ticket UUID: 180810acbe76aefc43355afa956730d056d25a24
Title: Tcl compile error for win build
Type: Bug Version: 8.5.15
Submitter: anonymous Created on: 2013-11-09 16:28:58
Subsystem: 53. Configure and Build Tools Assigned To: jan.nijtmans
Priority: 5 Medium Severity: Important
Status: Closed Last Modified: 2013-11-11 12:09:18
Resolution: Out of Date Closed By: jan.nijtmans
    Closed on: 2013-11-11 12:09:18
Description:
The macro EXCEPTION_REGISTRATION has to be replaced by TCL_EXCEPTION_REGISTRATION in the files tclWin32Dll.c, tclWinChan.c and tclWinFCmd.c

Otherwise make stops with an error.

Alexey Pavlov has created an appropriate patch for Tcl 8.6.1

https://github.com/Alexpux/mingw-builds/blob/master/patches/tcl/tcl-8.6.1-mingwexcept.patch

For a 8.5.15 patch see the lines below:

--- tclWin32Dll.c.orig	2013-08-30 17:58:40.000000000 +0200
+++ tclWin32Dll.c	2013-11-08 08:55:00.742333794 +0100
@@ -53,14 +53,14 @@ static int platformId;		/* Running under
  * them by creating an EXCEPTION_REGISTRATION within the activation record.
  */
 
-typedef struct EXCEPTION_REGISTRATION {
-    struct EXCEPTION_REGISTRATION *link;
+typedef struct TCL_EXCEPTION_REGISTRATION {
+    struct TCL_EXCEPTION_REGISTRATION *link;
     EXCEPTION_DISPOSITION (*handler)(
 	    struct _EXCEPTION_RECORD*, void*, struct _CONTEXT*, void*);
     void *ebp;
     void *esp;
     int status;
-} EXCEPTION_REGISTRATION;
+} TCL_EXCEPTION_REGISTRATION;
 #endif
 
 /*
@@ -1086,7 +1086,7 @@ TclWinCPUID(
 
 #   else
 
-    EXCEPTION_REGISTRATION registration;
+    TCL_EXCEPTION_REGISTRATION registration;
 
     /*
      * Execute the CPUID instruction with the given index, and store results
--- tclWinChan.c.orig	2013-08-30 17:58:40.000000000 +0200
+++ tclWinChan.c	2013-11-08 09:05:57.237807102 +0100
@@ -127,14 +127,14 @@ static Tcl_ChannelType fileChannelType =
  * them by creating an EXCEPTION_REGISTRATION within the activation record.
  */
 
-typedef struct EXCEPTION_REGISTRATION {
-    struct EXCEPTION_REGISTRATION* link;
+typedef struct TCL_EXCEPTION_REGISTRATION {
+    struct TCL_EXCEPTION_REGISTRATION *link;
     EXCEPTION_DISPOSITION (*handler)(
 	    struct _EXCEPTION_RECORD*, void*, struct _CONTEXT*, void*);
     void* ebp;
     void* esp;
     int status;
-} EXCEPTION_REGISTRATION;
+} TCL_EXCEPTION_REGISTRATION;
 #endif
 
 /*
@@ -1027,7 +1027,7 @@ Tcl_MakeFileChannel(
 				 * TCL_WRITABLE to indicate file mode. */
 {
 #if defined(HAVE_NO_SEH) && !defined(_WIN64)
-    EXCEPTION_REGISTRATION registration;
+    TCL_EXCEPTION_REGISTRATION registration;
 #endif
     char channelName[16 + TCL_INTEGER_SPACE];
     Tcl_Channel channel = NULL;
--- tclWinFCmd.c.orig	2013-08-30 17:58:40.000000000 +0200
+++ tclWinFCmd.c	2013-11-08 09:09:19.541771741 +0100
@@ -72,17 +72,17 @@ CONST TclFileAttrProcs tclpFileAttrProcs
 /*
  * Unlike Borland and Microsoft, we don't register exception handlers by
  * pushing registration records onto the runtime stack. Instead, we register
- * them by creating an EXCEPTION_REGISTRATION within the activation record.
+ * them by creating an TCL_EXCEPTION_REGISTRATION within the activation record.
  */
 
-typedef struct EXCEPTION_REGISTRATION {
-    struct EXCEPTION_REGISTRATION *link;
+typedef struct TCL_EXCEPTION_REGISTRATION {
+    struct TCL_EXCEPTION_REGISTRATION *link;
     EXCEPTION_DISPOSITION (*handler)(
 	    struct _EXCEPTION_RECORD *, void *, struct _CONTEXT *, void *);
     void *ebp;
     void *esp;
     int status;
-} EXCEPTION_REGISTRATION;
+} TCL_EXCEPTION_REGISTRATION;
 
 #endif
 
@@ -176,7 +176,7 @@ DoRenameFile(
 				 * (native). */
 {
 #if defined(HAVE_NO_SEH) && !defined(_WIN64)
-    EXCEPTION_REGISTRATION registration;
+    TCL_EXCEPTION_REGISTRATION registration;
 #endif
     DWORD srcAttr, dstAttr;
     int retval = -1;
@@ -568,7 +568,7 @@ DoCopyFile(
     CONST TCHAR *nativeDst)	/* Pathname of file to copy to (native). */
 {
 #if defined(HAVE_NO_SEH) && !defined(_WIN64)
-    EXCEPTION_REGISTRATION registration;
+    TCL_EXCEPTION_REGISTRATION registration;
 #endif
     int retval = -1;
User Comments: jan.nijtmans added on 2013-11-11 12:09:18:

Already fixed 5 weeks ago in core-8-5-branch [93a144a3be] and trunk [7488de4f4b]


dkf added on 2013-11-10 20:31:06:

Assigning to someone able to review. (Seems sane to me, but I don't build those files.)