Tcl Source Code

Ticket Change Details
Login
Overview

Artifact ID: eef285105a0c12763b17bf62135a4041bb3a4979
Ticket: 180810acbe76aefc43355afa956730d056d25a24
Tcl compile error for win build
User & Date: anonymous 2013-11-09 16:28:58
Changes

  1. assignee changed to: "nobody"
  2. closer changed to: "nobody"
  3. cmimetype changed to: "text/plain"
  4. comment changed to:
    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;
    
  5. foundin changed to: "8.5.15"
  6. is_private changed to: "0"
  7. login: "anonymous"
  8. priority changed to: "5 Medium"
  9. private_contact changed to: "98c5a4b8c6c847840eea2e9bf0d223f33d217646"
  10. resolution changed to: "None"
  11. severity changed to: "Important"
  12. status changed to: "Open"
  13. submitter changed to: "anonymous"
  14. subsystem changed to: "53. Configure and Build Tools"
  15. title changed to: "Tcl compile error for win build"
  16. type changed to: "Bug"