This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [RFA] win32-nat.c: Simplify generation of Windows environment


On Dec  7 11:49, Jim Blandy wrote:
> Corinna Vinschen <vinschen@redhat.com> writes:
> > the below patch simplifies the code which translates the Cygwin
> > environment into the native Windows environment.  So far this is
> > done in GDB manually.  However, there's a Cygwin specific function
> > call which does the same for the calling process.  Using this call
> > has three advantages.
> >
> > - We can drop a rather big chunk of code from GDB which should be the
> >   task of Cygwin anyway.
> > - By using the Cygwin method of converting the environment, we take
> >   care of all environment variables which have to be converted in
> >   some way; not only the PATH variable, but all variables which are
> >   also translated by Cygwin, thus making this process more transparent.
> > - Subsequent changes in Cygwin don't require to change GDB.
> >
> >
> > Ok to apply?
> 
> I'm very much inclined to take your advice on Cygwin-related issues,
> and I love the deletion of code, but I still have some questions:
> 
> Is it really okay to call cygwin_internal?  (That's not the name I'd
> expect a public, stable interface to have.)

cygwin_internal is a stable interface existing for a lot of years.  It's
supposed to provide an interface to Cygwin internal functionality which
is not covered by any "official" POSIX/Linux/BSD API.  Functionality is
never removed from this function.

It's used already for quite some time in gdb:

$ grep -n cygwin_internal win32-nat.c
1738:      pid = cygwin_internal (CW_CYGWIN_PID_TO_WINPID, pid);
1813:  cygwin_internal (CW_LOCK_PINFO, 1000);
1816:   cygwin_internal (CW_GETPINFO, cpid | CW_NEXTPID));
1826:  cygwin_internal (CW_UNLOCK_PINFO);

> How well will this work on older versions of Cygwin?  Will people
> still be able to compile GDB against the Cygwin versions they can now?

The interface exists since at least 1999, but CW_SYNC_WINENV has been
introduced in February 2006.  This requires at least Cygwin 1.5.21,
which is the version before the current version.  I didn't expect that
we're trying to support old Cygwin versions in new GDB versions,
though.


Corinna

-- 
Corinna Vinschen
Cygwin Project Co-Leader
Red Hat


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]