This is the mail archive of the
cygwin
mailing list for the Cygwin project.
Re: Failure in building GFortran on Cygwin
- From: Corinna Vinschen <corinna-cygwin at cygwin dot com>
- To: cygwin at cygwin dot com
- Date: Sat, 1 Dec 2007 13:00:32 +0100
- Subject: Re: Failure in building GFortran on Cygwin
- References: <Pine.CYG.4.58.0711292328360.1532@homepc> <474F61CD.1060405@verizon.net> <20071130142008.GX30894@calimero.vinschen.de> <47501D95.3030200@byu.net> <20071130145842.GY30894@calimero.vinschen.de> <20071130213601.GC24092@ednor.casa.cgf.cx> <20071201103155.GZ30894@calimero.vinschen.de> <4751420F.F35239F3@dessent.net>
- Reply-to: cygwin at cygwin dot com
On Dec 1 03:14, Brian Dessent wrote:
> Corinna Vinschen wrote:
>
> > Unfortunately it doesn't work for variables. We can hide the timezone
> > function, but how do we alias timezone to _timezone in libcygwin.a?
>
> Why does the variable need to be renamed? Can't we continue to call it
> _timezone internally and then "#define timezone _timezone" in a public
> header? It looks like this is already what we get in <cygwin/time.h> if
> we simply stop defining __timezonefunc__.
That's the default case starting with 1.5.25. You get timezone
by this #define in cygwin/time.h.
The problem right now is that this clashes with the previous definition
of `struct timezone'. What happens is this:
struct timezone { int foo; }; // by including sys/time.h
[...]
#define timezone _timezone // sys/time.h includes cygwin/time.h
[...]
struct timezone tzp; // the application defines this tzp var
So `struct timezone tzp' becomes `struct _timezone tzp' which is
an unknown structure type.
I have a simple patch for this which just reorders sys/time.h slightly.
The effect is that the #define is pulled in front of the structure
definition so all timezone gets _timezone and that's it.
> Or is pulluting the namespace with a macro called "timezone" too
> hideous? In that case we could try declaring it "extern long timezone
> asm("_timezone");" in the header.
Erm... sorry if my lack of assembler inlining shows, but that really
works? If so, it looks like a rather elegant solution to me. I'll give
it a try.
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Project Co-Leader cygwin AT cygwin DOT com
Red Hat
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Problem reports: http://cygwin.com/problems.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/