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.) |