make-w32
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: Problems with latest Cygwin make patch; builds OK but binary segfaul


From: William Sheehan
Subject: RE: Problems with latest Cygwin make patch; builds OK but binary segfaults
Date: Tue, 5 Sep 2006 11:03:22 -0700

> It seems you started from a patch that is different from the 
> last one I posted.

You are correct; I was working from a link posted to the Cygwin mailing
list, which I now realize was out of date.  Instead of your version of
sh_chars_sh, it had the following:

+  static char sh_chars_sh[] = "#;\"*?[]&|<>(){}$`^";

I assumed that there was logic behind that code that I was unfamiliar with,
so I decided not to touch that line and went forward with my #ifdef plan.

Thanks for catching this; your patch works perfectly and does not
demonstrate any of the problems I was encountering before.

William Sheehan
Builds Engineer / Network Administrator
Open Interface North America
(206) 315-5584 

> -----Original Message-----
> From: Eli Zaretskii [mailto:address@hidden 
> Sent: Saturday, September 02, 2006 7:11 AM
> To: William Sheehan
> Cc: address@hidden
> Subject: Re: Problems with latest Cygwin make patch;builds OK 
> but binary segfaults
> 
> 
> > From: "William Sheehan" <address@hidden>
> > Date: Fri, 25 Aug 2006 10:52:00 -0700
> > 
> > > Please rune "make check" on the version of Make you think
> > > fixes the problem.  If all the tests pass, please post here a 
> > > patch that you used to fix the recursion problem.  Thanks.
> > 
> > Done; the patch is attached.  Running make check came back 
> with zero 
> > failures and a nice smiley face.  The patch has the same content as 
> > Bill Hoffman's patch, plus my modifications for job.c.
> 
> I'm looking at the patch you sent, and I'm confused: I don't 
> understand how could it solve the recursion problem.
> 
> It seems you started from a patch that is different from the 
> last one I posted.  My last patch defines sh_chars_sh so that 
> its value is _identical_ to sh_chars.  Thus, any changes that 
> replace sh_chars with sh_chars_sh do not change anything at all.
> 
> Could you please try the original patch I posted here 
> (reproduced below for your convenience), and see if the 
> recursion problem happens with it?  If it does, please try to 
> find what needs to be changed after the patches below.
> 
> Thanks.
> 
> 
> Here's the patch I posted after Chris suggested to modify the 
> original one.  Please apply it to the original unmodified 
> sources of Make 3.81.
> 
> 
> --- configure.in~0    2006-04-01 12:36:40.000000000 +0300
> +++ configure.in      2006-08-18 21:12:32.828125000 +0300
> @@ -384,6 +384,8 @@
>      ;;
>  esac
>  
> +AC_DEFINE_UNQUOTED(PATH_SEPARATOR_CHAR,'$PATH_SEPARATOR',[Def
> ine to the 
> +character that separates directories in PATH.])
> +
>  # Include the Maintainer's Makefile section, if it's here.
>  
>  MAINT_MAKEFILE=/dev/null
> 
> --- make.h~0  2006-02-16 03:54:43.000000000 +0200
> +++ make.h    2006-08-18 21:12:32.859375000 +0300
> @@ -347,12 +347,14 @@
>  #define S_(msg1,msg2,num)   ngettext (msg1,msg2,num)
>  
>  /* Handle other OSs.  */
> -#if defined(HAVE_DOS_PATHS)
> -# define PATH_SEPARATOR_CHAR ';'
> -#elif defined(VMS)
> -# define PATH_SEPARATOR_CHAR ','
> -#else
> -# define PATH_SEPARATOR_CHAR ':'
> +#ifndef PATH_SEPARATOR_CHAR
> +# if defined(HAVE_DOS_PATHS)
> +#  define PATH_SEPARATOR_CHAR ';'
> +# elif defined(VMS)
> +#  define PATH_SEPARATOR_CHAR ','
> +# else
> +#  define PATH_SEPARATOR_CHAR ':'
> +# endif
>  #endif
>  
>  /* This is needed for getcwd() and chdir().  */
> 
> --- config/dospaths.m4~0      2006-03-10 06:20:45.000000000 +0200
> +++ config/dospaths.m4        2006-08-18 21:12:32.859375000 +0300
> @@ -22,7 +22,7 @@
>      AC_CACHE_CHECK([whether system uses MSDOS-style paths], 
> [ac_cv_dos_paths],
>        [
>          AC_COMPILE_IFELSE([
> -#if !defined _WIN32 && !defined __WIN32__ && !defined 
> __MSDOS__ && !defined __EMX__ && !defined __MSYS__
> +#if !defined _WIN32 && !defined __WIN32__ && !defined __MSDOS__ && 
> +!defined __EMX__ && !defined __MSYS__ && !defined __CYGWIN__
>  neither MSDOS nor Windows nor OS2
>  #endif
>  ],
> 
> --- job.c~0   2006-03-20 07:03:04.000000000 +0200
> +++ job.c     2006-08-19 09:25:07.687500000 +0300
> @@ -2307,6 +2307,12 @@ construct_command_argv_internal (char *l
>                               "login", "logout", "read", 
> "readonly", "set",
>                               "shift", "switch", "test", 
> "times", "trap",
>                               "umask", "wait", "while", 0 };
> +# ifdef HAVE_DOS_PATHS
> +  /* This is required if the MSYS/Cygwin ports (which do not define
> +     WINDOWS32) are compiled with HAVE_DOS_PATHS defined, which uses
> +     sh_chars_sh[] directly (see below).  */
> +  static char *sh_chars_sh = sh_chars;
> +# endif       /* HAVE_DOS_PATHS */
>  #endif
>    register int i;
>    register char *p;
> 






reply via email to

[Prev in Thread] Current Thread [Next in Thread]