public inbox for binutils@sourceware.org
 help / color / mirror / Atom feed
* regex.c not found, but it clearly exists
@ 2007-12-14  7:05 NightStrike
  2007-12-14  7:18 ` Brian Dessent
  2007-12-14  7:19 ` Rick Mann
  0 siblings, 2 replies; 21+ messages in thread
From: NightStrike @ 2007-12-14  7:05 UTC (permalink / raw)
  To: Binutils

When compiling binutils in a cygwin shell using the mingw binary
release of gcc, I see the following confusing thing:

NightStrike@coolermaster1 /tmp/b6/bu/libiberty
$ make
if [ x"" != x ]; then \
          i686-pc-mingw32-gcc -c -DHAVE_CONFIG_H -g -O2 -I.
-I/tmp/build/binutils/src/libiberty/../include  -W -Wall
-Wwrite-strings -Wstrict-prototypes -pedantic
/tmp/build/binutils/src/libiberty/regex.c -o pic/regex.o; \
        else true; fi
i686-pc-mingw32-gcc -c -DHAVE_CONFIG_H -g -O2 -I.
-I/tmp/build/binutils/src/libiberty/../include  -W -Wall
-Wwrite-strings -Wstrict-prototypes -pedantic
/tmp/build/binutils/src/libiberty/regex.c -o regex.o
gcc.exe: /tmp/build/binutils/src/libiberty/regex.c: No such file or directory
gcc.exe: no input files
make: *** [regex.o] Error 1

NightStrike@coolermaster1 /tmp/b6/bu/libiberty
$ ls -la /tmp/build/binutils/src/libiberty/regex.c
-rw-r--r-- 1 NightStrike None 253K Jul 22  2005
/tmp/build/binutils/src/libiberty/regex.c



As you can see, the file does exist and is nonzero.  It is readable by
user, group, and world.  Why would gcc say it does not exist?

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: regex.c not found, but it clearly exists
  2007-12-14  7:05 regex.c not found, but it clearly exists NightStrike
@ 2007-12-14  7:18 ` Brian Dessent
  2007-12-14  9:42   ` Andrew STUBBS
  2007-12-14  7:19 ` Rick Mann
  1 sibling, 1 reply; 21+ messages in thread
From: Brian Dessent @ 2007-12-14  7:18 UTC (permalink / raw)
  To: NightStrike; +Cc: Binutils

NightStrike wrote:

> As you can see, the file does exist and is nonzero.  It is readable by
> user, group, and world.  Why would gcc say it does not exist?

You're feeding a POSIX path to a MinGW application.  MinGW applications
have no path translation ability and can only accept Win32 paths.  So
no, the file does not exist in the eyes of i686-pc-mingw32-gcc because
it has no idea what /tmp is supposed to mean.  But 'ls' is a Cygwin app
and knows what /tmp is, so of course that works.

You need to use MSYS if you want this to work, because MSYS does path
translation of command line arguments when invoking MinGW apps.  Cygwin
does not because Cygwin is not intended to work with apps that don't
understand POSIX paths.

This has nothing to do with binutils, so I suggest you follow up on the
MinGW list.

Brian

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: regex.c not found, but it clearly exists
  2007-12-14  7:05 regex.c not found, but it clearly exists NightStrike
  2007-12-14  7:18 ` Brian Dessent
@ 2007-12-14  7:19 ` Rick Mann
  1 sibling, 0 replies; 21+ messages in thread
From: Rick Mann @ 2007-12-14  7:19 UTC (permalink / raw)
  To: NightStrike; +Cc: Binutils


On Dec 13, 2007, at 11:05 PM, NightStrike wrote:

> When compiling binutils in a cygwin shell using the mingw binary
> release of gcc, I see the following confusing thing:

Let me ask: is regex.c a symlink to the real regex.c? If so, you  
probably created the symlink with Cygwin's ln, but mingw doesn't use  
the Cygwin I/O library, and so can't read the symlink correctly.

I just learned this myself.

I ended up building with Cygwin's GCC.

-- 
Rick

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: regex.c not found, but it clearly exists
  2007-12-14  7:18 ` Brian Dessent
@ 2007-12-14  9:42   ` Andrew STUBBS
  2007-12-17 23:22     ` NightStrike
  0 siblings, 1 reply; 21+ messages in thread
From: Andrew STUBBS @ 2007-12-14  9:42 UTC (permalink / raw)
  Cc: NightStrike, Binutils

Brian Dessent wrote:
> NightStrike wrote:
> 
>> As you can see, the file does exist and is nonzero.  It is readable by
>> user, group, and world.  Why would gcc say it does not exist?
> 
> You're feeding a POSIX path to a MinGW application.  MinGW applications
> have no path translation ability and can only accept Win32 paths.  So
> no, the file does not exist in the eyes of i686-pc-mingw32-gcc because
> it has no idea what /tmp is supposed to mean.  But 'ls' is a Cygwin app
> and knows what /tmp is, so of course that works.
> 
> You need to use MSYS if you want this to work, because MSYS does path
> translation of command line arguments when invoking MinGW apps.  Cygwin
> does not because Cygwin is not intended to work with apps that don't
> understand POSIX paths.

Or you could try "gcc -mno-cygwin" where gcc is the standard Cygwin gcc.

That's a Cygwin program so it understands the POSIX paths, but it 
produced MinGW programs (which don't).

Andrew

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: regex.c not found, but it clearly exists
  2007-12-14  9:42   ` Andrew STUBBS
@ 2007-12-17 23:22     ` NightStrike
  2008-01-02 12:48       ` Andrew STUBBS
  0 siblings, 1 reply; 21+ messages in thread
From: NightStrike @ 2007-12-17 23:22 UTC (permalink / raw)
  To: Andrew STUBBS; +Cc: Binutils

On 12/14/07, Andrew STUBBS <andrew.stubbs@st.com> wrote:
> Brian Dessent wrote:
> > NightStrike wrote:
> >
> >> As you can see, the file does exist and is nonzero.  It is readable by
> >> user, group, and world.  Why would gcc say it does not exist?
> >
> > You're feeding a POSIX path to a MinGW application.  MinGW applications
> > have no path translation ability and can only accept Win32 paths.  So
> > no, the file does not exist in the eyes of i686-pc-mingw32-gcc because
> > it has no idea what /tmp is supposed to mean.  But 'ls' is a Cygwin app
> > and knows what /tmp is, so of course that works.
> >
> > You need to use MSYS if you want this to work, because MSYS does path
> > translation of command line arguments when invoking MinGW apps.  Cygwin
> > does not because Cygwin is not intended to work with apps that don't
> > understand POSIX paths.
>
> Or you could try "gcc -mno-cygwin" where gcc is the standard Cygwin gcc.
>
> That's a Cygwin program so it understands the POSIX paths, but it
> produced MinGW programs (which don't).

Are programs compiled in this fashion identical to programs that are
compiled with the actual i686-pc-mingw-gcc program?

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: regex.c not found, but it clearly exists
  2007-12-17 23:22     ` NightStrike
@ 2008-01-02 12:48       ` Andrew STUBBS
  2008-01-02 16:19         ` Andrew STUBBS
                           ` (8 more replies)
  0 siblings, 9 replies; 21+ messages in thread
From: Andrew STUBBS @ 2008-01-02 12:48 UTC (permalink / raw)
  To: NightStrike; +Cc: Binutils

NightStrike wrote:
>> Or you could try "gcc -mno-cygwin" where gcc is the standard Cygwin gcc.
>>
>> That's a Cygwin program so it understands the POSIX paths, but it
>> produced MinGW programs (which don't).
> 
> Are programs compiled in this fashion identical to programs that are
> compiled with the actual i686-pc-mingw-gcc program?

Since nobody more qualified has responded ...

I don't know if they are perfectly identical, but they certainly have 
the same general properties. That is, in order to build a UNIX program 
you have to apply the exact same patches as you would for the MinGW 
compiler.

Note that you must have installed the right Cygwin package for it to 
work - it uses a different set of libraries in -mno-cygwin mode.

Andrew

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: regex.c not found, but it clearly exists
  2008-01-02 12:48       ` Andrew STUBBS
@ 2008-01-02 16:19         ` Andrew STUBBS
  2008-01-02 16:50         ` Andrew STUBBS
                           ` (7 subsequent siblings)
  8 siblings, 0 replies; 21+ messages in thread
From: Andrew STUBBS @ 2008-01-02 16:19 UTC (permalink / raw)
  To: NightStrike; +Cc: Binutils

NightStrike wrote:
>> Or you could try "gcc -mno-cygwin" where gcc is the standard Cygwin gcc.
>>
>> That's a Cygwin program so it understands the POSIX paths, but it
>> produced MinGW programs (which don't).
> 
> Are programs compiled in this fashion identical to programs that are
> compiled with the actual i686-pc-mingw-gcc program?

Since nobody more qualified has responded ...

I don't know if they are perfectly identical, but they certainly have 
the same general properties. That is, in order to build a UNIX program 
you have to apply the exact same patches as you would for the MinGW 
compiler.

Note that you must have installed the right Cygwin package for it to 
work - it uses a different set of libraries in -mno-cygwin mode.

Andrew

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: regex.c not found, but it clearly exists
  2008-01-02 12:48       ` Andrew STUBBS
  2008-01-02 16:19         ` Andrew STUBBS
@ 2008-01-02 16:50         ` Andrew STUBBS
  2008-01-02 19:16         ` Andrew STUBBS
                           ` (6 subsequent siblings)
  8 siblings, 0 replies; 21+ messages in thread
From: Andrew STUBBS @ 2008-01-02 16:50 UTC (permalink / raw)
  To: NightStrike; +Cc: Binutils

NightStrike wrote:
>> Or you could try "gcc -mno-cygwin" where gcc is the standard Cygwin gcc.
>>
>> That's a Cygwin program so it understands the POSIX paths, but it
>> produced MinGW programs (which don't).
> 
> Are programs compiled in this fashion identical to programs that are
> compiled with the actual i686-pc-mingw-gcc program?

Since nobody more qualified has responded ...

I don't know if they are perfectly identical, but they certainly have 
the same general properties. That is, in order to build a UNIX program 
you have to apply the exact same patches as you would for the MinGW 
compiler.

Note that you must have installed the right Cygwin package for it to 
work - it uses a different set of libraries in -mno-cygwin mode.

Andrew

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: regex.c not found, but it clearly exists
  2008-01-02 12:48       ` Andrew STUBBS
  2008-01-02 16:19         ` Andrew STUBBS
  2008-01-02 16:50         ` Andrew STUBBS
@ 2008-01-02 19:16         ` Andrew STUBBS
  2008-01-02 20:03         ` Andrew STUBBS
                           ` (5 subsequent siblings)
  8 siblings, 0 replies; 21+ messages in thread
From: Andrew STUBBS @ 2008-01-02 19:16 UTC (permalink / raw)
  To: NightStrike; +Cc: Binutils

NightStrike wrote:
>> Or you could try "gcc -mno-cygwin" where gcc is the standard Cygwin gcc.
>>
>> That's a Cygwin program so it understands the POSIX paths, but it
>> produced MinGW programs (which don't).
> 
> Are programs compiled in this fashion identical to programs that are
> compiled with the actual i686-pc-mingw-gcc program?

Since nobody more qualified has responded ...

I don't know if they are perfectly identical, but they certainly have 
the same general properties. That is, in order to build a UNIX program 
you have to apply the exact same patches as you would for the MinGW 
compiler.

Note that you must have installed the right Cygwin package for it to 
work - it uses a different set of libraries in -mno-cygwin mode.

Andrew

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: regex.c not found, but it clearly exists
  2008-01-02 12:48       ` Andrew STUBBS
                           ` (2 preceding siblings ...)
  2008-01-02 19:16         ` Andrew STUBBS
@ 2008-01-02 20:03         ` Andrew STUBBS
  2008-01-02 20:59         ` Dave Korn
                           ` (4 subsequent siblings)
  8 siblings, 0 replies; 21+ messages in thread
From: Andrew STUBBS @ 2008-01-02 20:03 UTC (permalink / raw)
  To: NightStrike; +Cc: Binutils

NightStrike wrote:
>> Or you could try "gcc -mno-cygwin" where gcc is the standard Cygwin gcc.
>>
>> That's a Cygwin program so it understands the POSIX paths, but it
>> produced MinGW programs (which don't).
> 
> Are programs compiled in this fashion identical to programs that are
> compiled with the actual i686-pc-mingw-gcc program?

Since nobody more qualified has responded ...

I don't know if they are perfectly identical, but they certainly have 
the same general properties. That is, in order to build a UNIX program 
you have to apply the exact same patches as you would for the MinGW 
compiler.

Note that you must have installed the right Cygwin package for it to 
work - it uses a different set of libraries in -mno-cygwin mode.

Andrew

^ permalink raw reply	[flat|nested] 21+ messages in thread

* RE: regex.c not found, but it clearly exists
  2008-01-02 12:48       ` Andrew STUBBS
                           ` (3 preceding siblings ...)
  2008-01-02 20:03         ` Andrew STUBBS
@ 2008-01-02 20:59         ` Dave Korn
  2008-01-02 21:44           ` Andrew STUBBS
  2008-01-02 23:56         ` Andrew STUBBS
                           ` (3 subsequent siblings)
  8 siblings, 1 reply; 21+ messages in thread
From: Dave Korn @ 2008-01-02 20:59 UTC (permalink / raw)
  To: 'Andrew STUBBS', 'NightStrike'; +Cc: 'Binutils'

On 02 January 2008 12:42, Andrew STUBBS wrote:

> NightStrike wrote:
>>> Or you could try "gcc -mno-cygwin" where gcc is the standard Cygwin gcc.
>>> 
>>> That's a Cygwin program so it understands the POSIX paths, but it
>>> produced MinGW programs (which don't).
>> 
>> Are programs compiled in this fashion identical to programs that are
>> compiled with the actual i686-pc-mingw-gcc program?
> 
> Since nobody more qualified has responded ...
> 
> I don't know if they are perfectly identical, but they certainly have
> the same general properties. That is, in order to build a UNIX program
> you have to apply the exact same patches as you would for the MinGW
> compiler.

  This is basically it, but there are some problems.  The -mno-cygwin flag and
the cross-compile mode of the cygming-targeted compiler are somewhat kludgey.
The major purpose for which they are packaged is so that you can rebuild the
cygwin dll itself from within the cygwin environment.  It's not really
intended for general cross-development, and although it'll just about do,
there is a problem: it doesn't correctly switch over /all/ the default search
paths; if you compare the output of "gcc -v -E -xc - < /dev/null" and "gcc
-mno-cygwin -v -E -xc - < /dev/null", you'll see that gcc -mno-cygwin still
searches the cygwin compiler-specific include dir

/usr/lib/gcc/i686-pc-cygwin/3.4.4/include

when it should be looking in:

/usr/lib/gcc/i686-pc-mingw32/3.4.4/include

  I don't know - and couldn't say for sure without doing a thorough audit -
how serious this could be, but from running a very quick diff over it, I can
see that it might in particular affect C++.  (It could easily break passing
std::strings across DLL boundaries, which cygwin has some custom mods to the
c++ stl header files relating to).

> Note that you must have installed the right Cygwin package for it to
> work - it uses a different set of libraries in -mno-cygwin mode.

  Yes, the packages required for -mno-cygwin are w32api and mingw-runtime
IIRC.


    cheers,
      DaveK
-- 
Can't think of a witty .sigline today....

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: regex.c not found, but it clearly exists
  2008-01-02 20:59         ` Dave Korn
@ 2008-01-02 21:44           ` Andrew STUBBS
  2008-01-02 23:56             ` Andrew STUBBS
                               ` (4 more replies)
  0 siblings, 5 replies; 21+ messages in thread
From: Andrew STUBBS @ 2008-01-02 21:44 UTC (permalink / raw)
  To: Dave Korn; +Cc: 'NightStrike', 'Binutils'

Dave Korn wrote:
>   This is basically it, but there are some problems.  The -mno-cygwin flag and
> the cross-compile mode of the cygming-targeted compiler are somewhat kludgey.
> The major purpose for which they are packaged is so that you can rebuild the
> cygwin dll itself from within the cygwin environment.  It's not really
> intended for general cross-development, and although it'll just about do,
> there is a problem: it doesn't correctly switch over /all/ the default search
> paths; if you compare the output of "gcc -v -E -xc - < /dev/null" and "gcc
> -mno-cygwin -v -E -xc - < /dev/null", you'll see that gcc -mno-cygwin still
> searches the cygwin compiler-specific include dir
> 
> /usr/lib/gcc/i686-pc-cygwin/3.4.4/include
> 
> when it should be looking in:
> 
> /usr/lib/gcc/i686-pc-mingw32/3.4.4/include
> 
>   I don't know - and couldn't say for sure without doing a thorough audit -
> how serious this could be, but from running a very quick diff over it, I can
> see that it might in particular affect C++.  (It could easily break passing
> std::strings across DLL boundaries, which cygwin has some custom mods to the
> c++ stl header files relating to).

We use it to build a complete cross-toolset - binutils, gcc, newlib, gdb 
and a few other bits and pieces. I've never had any trouble with search 
paths that I couldn't blame on the build system, although no doubt there 
are some pit-falls to be had.

Obviously there are a number of patches required to build all those 
utilities on windows. We also have a few patches to make the tools 
understand /cygdrive paths in a limited way - it won't build the target 
libraries without.

We used to target Cygwin, rather than Windows, but that meant that all 
our customers also had to use Cygwin, and there were version mismatch 
problems to overcome.

Andrew

P.S. Sorry about the multiple posts - I've received a notification from 
the mailserver saying that it's having trouble sending the message, but 
there doesn't seem to be any way to tell it not to bother.

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: regex.c not found, but it clearly exists
  2008-01-02 21:44           ` Andrew STUBBS
@ 2008-01-02 23:56             ` Andrew STUBBS
  2008-01-03  2:15             ` Andrew STUBBS
                               ` (3 subsequent siblings)
  4 siblings, 0 replies; 21+ messages in thread
From: Andrew STUBBS @ 2008-01-02 23:56 UTC (permalink / raw)
  To: Dave Korn; +Cc: 'NightStrike', 'Binutils'

Dave Korn wrote:
>   This is basically it, but there are some problems.  The -mno-cygwin flag and
> the cross-compile mode of the cygming-targeted compiler are somewhat kludgey.
> The major purpose for which they are packaged is so that you can rebuild the
> cygwin dll itself from within the cygwin environment.  It's not really
> intended for general cross-development, and although it'll just about do,
> there is a problem: it doesn't correctly switch over /all/ the default search
> paths; if you compare the output of "gcc -v -E -xc - < /dev/null" and "gcc
> -mno-cygwin -v -E -xc - < /dev/null", you'll see that gcc -mno-cygwin still
> searches the cygwin compiler-specific include dir
> 
> /usr/lib/gcc/i686-pc-cygwin/3.4.4/include
> 
> when it should be looking in:
> 
> /usr/lib/gcc/i686-pc-mingw32/3.4.4/include
> 
>   I don't know - and couldn't say for sure without doing a thorough audit -
> how serious this could be, but from running a very quick diff over it, I can
> see that it might in particular affect C++.  (It could easily break passing
> std::strings across DLL boundaries, which cygwin has some custom mods to the
> c++ stl header files relating to).

We use it to build a complete cross-toolset - binutils, gcc, newlib, gdb 
and a few other bits and pieces. I've never had any trouble with search 
paths that I couldn't blame on the build system, although no doubt there 
are some pit-falls to be had.

Obviously there are a number of patches required to build all those 
utilities on windows. We also have a few patches to make the tools 
understand /cygdrive paths in a limited way - it won't build the target 
libraries without.

We used to target Cygwin, rather than Windows, but that meant that all 
our customers also had to use Cygwin, and there were version mismatch 
problems to overcome.

Andrew

P.S. Sorry about the multiple posts - I've received a notification from 
the mailserver saying that it's having trouble sending the message, but 
there doesn't seem to be any way to tell it not to bother.

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: regex.c not found, but it clearly exists
  2008-01-02 12:48       ` Andrew STUBBS
                           ` (4 preceding siblings ...)
  2008-01-02 20:59         ` Dave Korn
@ 2008-01-02 23:56         ` Andrew STUBBS
  2008-01-03 12:57         ` Andrew STUBBS
                           ` (2 subsequent siblings)
  8 siblings, 0 replies; 21+ messages in thread
From: Andrew STUBBS @ 2008-01-02 23:56 UTC (permalink / raw)
  To: NightStrike; +Cc: Binutils

NightStrike wrote:
>> Or you could try "gcc -mno-cygwin" where gcc is the standard Cygwin gcc.
>>
>> That's a Cygwin program so it understands the POSIX paths, but it
>> produced MinGW programs (which don't).
> 
> Are programs compiled in this fashion identical to programs that are
> compiled with the actual i686-pc-mingw-gcc program?

Since nobody more qualified has responded ...

I don't know if they are perfectly identical, but they certainly have 
the same general properties. That is, in order to build a UNIX program 
you have to apply the exact same patches as you would for the MinGW 
compiler.

Note that you must have installed the right Cygwin package for it to 
work - it uses a different set of libraries in -mno-cygwin mode.

Andrew

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: regex.c not found, but it clearly exists
  2008-01-02 21:44           ` Andrew STUBBS
  2008-01-02 23:56             ` Andrew STUBBS
@ 2008-01-03  2:15             ` Andrew STUBBS
  2008-01-03  5:26             ` Andrew STUBBS
                               ` (2 subsequent siblings)
  4 siblings, 0 replies; 21+ messages in thread
From: Andrew STUBBS @ 2008-01-03  2:15 UTC (permalink / raw)
  To: Dave Korn; +Cc: 'NightStrike', 'Binutils'

Dave Korn wrote:
>   This is basically it, but there are some problems.  The -mno-cygwin flag and
> the cross-compile mode of the cygming-targeted compiler are somewhat kludgey.
> The major purpose for which they are packaged is so that you can rebuild the
> cygwin dll itself from within the cygwin environment.  It's not really
> intended for general cross-development, and although it'll just about do,
> there is a problem: it doesn't correctly switch over /all/ the default search
> paths; if you compare the output of "gcc -v -E -xc - < /dev/null" and "gcc
> -mno-cygwin -v -E -xc - < /dev/null", you'll see that gcc -mno-cygwin still
> searches the cygwin compiler-specific include dir
> 
> /usr/lib/gcc/i686-pc-cygwin/3.4.4/include
> 
> when it should be looking in:
> 
> /usr/lib/gcc/i686-pc-mingw32/3.4.4/include
> 
>   I don't know - and couldn't say for sure without doing a thorough audit -
> how serious this could be, but from running a very quick diff over it, I can
> see that it might in particular affect C++.  (It could easily break passing
> std::strings across DLL boundaries, which cygwin has some custom mods to the
> c++ stl header files relating to).

We use it to build a complete cross-toolset - binutils, gcc, newlib, gdb 
and a few other bits and pieces. I've never had any trouble with search 
paths that I couldn't blame on the build system, although no doubt there 
are some pit-falls to be had.

Obviously there are a number of patches required to build all those 
utilities on windows. We also have a few patches to make the tools 
understand /cygdrive paths in a limited way - it won't build the target 
libraries without.

We used to target Cygwin, rather than Windows, but that meant that all 
our customers also had to use Cygwin, and there were version mismatch 
problems to overcome.

Andrew

P.S. Sorry about the multiple posts - I've received a notification from 
the mailserver saying that it's having trouble sending the message, but 
there doesn't seem to be any way to tell it not to bother.

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: regex.c not found, but it clearly exists
  2008-01-02 21:44           ` Andrew STUBBS
  2008-01-02 23:56             ` Andrew STUBBS
  2008-01-03  2:15             ` Andrew STUBBS
@ 2008-01-03  5:26             ` Andrew STUBBS
  2008-01-03 15:29             ` Andrew STUBBS
  2008-01-03 16:06             ` Andrew STUBBS
  4 siblings, 0 replies; 21+ messages in thread
From: Andrew STUBBS @ 2008-01-03  5:26 UTC (permalink / raw)
  To: Dave Korn; +Cc: 'NightStrike', 'Binutils'

Dave Korn wrote:
>   This is basically it, but there are some problems.  The -mno-cygwin flag and
> the cross-compile mode of the cygming-targeted compiler are somewhat kludgey.
> The major purpose for which they are packaged is so that you can rebuild the
> cygwin dll itself from within the cygwin environment.  It's not really
> intended for general cross-development, and although it'll just about do,
> there is a problem: it doesn't correctly switch over /all/ the default search
> paths; if you compare the output of "gcc -v -E -xc - < /dev/null" and "gcc
> -mno-cygwin -v -E -xc - < /dev/null", you'll see that gcc -mno-cygwin still
> searches the cygwin compiler-specific include dir
> 
> /usr/lib/gcc/i686-pc-cygwin/3.4.4/include
> 
> when it should be looking in:
> 
> /usr/lib/gcc/i686-pc-mingw32/3.4.4/include
> 
>   I don't know - and couldn't say for sure without doing a thorough audit -
> how serious this could be, but from running a very quick diff over it, I can
> see that it might in particular affect C++.  (It could easily break passing
> std::strings across DLL boundaries, which cygwin has some custom mods to the
> c++ stl header files relating to).

We use it to build a complete cross-toolset - binutils, gcc, newlib, gdb 
and a few other bits and pieces. I've never had any trouble with search 
paths that I couldn't blame on the build system, although no doubt there 
are some pit-falls to be had.

Obviously there are a number of patches required to build all those 
utilities on windows. We also have a few patches to make the tools 
understand /cygdrive paths in a limited way - it won't build the target 
libraries without.

We used to target Cygwin, rather than Windows, but that meant that all 
our customers also had to use Cygwin, and there were version mismatch 
problems to overcome.

Andrew

P.S. Sorry about the multiple posts - I've received a notification from 
the mailserver saying that it's having trouble sending the message, but 
there doesn't seem to be any way to tell it not to bother.

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: regex.c not found, but it clearly exists
  2008-01-02 12:48       ` Andrew STUBBS
                           ` (5 preceding siblings ...)
  2008-01-02 23:56         ` Andrew STUBBS
@ 2008-01-03 12:57         ` Andrew STUBBS
  2008-01-03 15:44         ` Andrew STUBBS
  2008-01-03 16:17         ` Andrew STUBBS
  8 siblings, 0 replies; 21+ messages in thread
From: Andrew STUBBS @ 2008-01-03 12:57 UTC (permalink / raw)
  To: NightStrike; +Cc: Binutils

NightStrike wrote:
>> Or you could try "gcc -mno-cygwin" where gcc is the standard Cygwin gcc.
>>
>> That's a Cygwin program so it understands the POSIX paths, but it
>> produced MinGW programs (which don't).
> 
> Are programs compiled in this fashion identical to programs that are
> compiled with the actual i686-pc-mingw-gcc program?

Since nobody more qualified has responded ...

I don't know if they are perfectly identical, but they certainly have 
the same general properties. That is, in order to build a UNIX program 
you have to apply the exact same patches as you would for the MinGW 
compiler.

Note that you must have installed the right Cygwin package for it to 
work - it uses a different set of libraries in -mno-cygwin mode.

Andrew

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: regex.c not found, but it clearly exists
  2008-01-02 21:44           ` Andrew STUBBS
                               ` (2 preceding siblings ...)
  2008-01-03  5:26             ` Andrew STUBBS
@ 2008-01-03 15:29             ` Andrew STUBBS
  2008-01-03 16:06             ` Andrew STUBBS
  4 siblings, 0 replies; 21+ messages in thread
From: Andrew STUBBS @ 2008-01-03 15:29 UTC (permalink / raw)
  To: Dave Korn; +Cc: 'NightStrike', 'Binutils'

Dave Korn wrote:
>   This is basically it, but there are some problems.  The -mno-cygwin flag and
> the cross-compile mode of the cygming-targeted compiler are somewhat kludgey.
> The major purpose for which they are packaged is so that you can rebuild the
> cygwin dll itself from within the cygwin environment.  It's not really
> intended for general cross-development, and although it'll just about do,
> there is a problem: it doesn't correctly switch over /all/ the default search
> paths; if you compare the output of "gcc -v -E -xc - < /dev/null" and "gcc
> -mno-cygwin -v -E -xc - < /dev/null", you'll see that gcc -mno-cygwin still
> searches the cygwin compiler-specific include dir
> 
> /usr/lib/gcc/i686-pc-cygwin/3.4.4/include
> 
> when it should be looking in:
> 
> /usr/lib/gcc/i686-pc-mingw32/3.4.4/include
> 
>   I don't know - and couldn't say for sure without doing a thorough audit -
> how serious this could be, but from running a very quick diff over it, I can
> see that it might in particular affect C++.  (It could easily break passing
> std::strings across DLL boundaries, which cygwin has some custom mods to the
> c++ stl header files relating to).

We use it to build a complete cross-toolset - binutils, gcc, newlib, gdb 
and a few other bits and pieces. I've never had any trouble with search 
paths that I couldn't blame on the build system, although no doubt there 
are some pit-falls to be had.

Obviously there are a number of patches required to build all those 
utilities on windows. We also have a few patches to make the tools 
understand /cygdrive paths in a limited way - it won't build the target 
libraries without.

We used to target Cygwin, rather than Windows, but that meant that all 
our customers also had to use Cygwin, and there were version mismatch 
problems to overcome.

Andrew

P.S. Sorry about the multiple posts - I've received a notification from 
the mailserver saying that it's having trouble sending the message, but 
there doesn't seem to be any way to tell it not to bother.

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: regex.c not found, but it clearly exists
  2008-01-02 12:48       ` Andrew STUBBS
                           ` (6 preceding siblings ...)
  2008-01-03 12:57         ` Andrew STUBBS
@ 2008-01-03 15:44         ` Andrew STUBBS
  2008-01-03 16:17         ` Andrew STUBBS
  8 siblings, 0 replies; 21+ messages in thread
From: Andrew STUBBS @ 2008-01-03 15:44 UTC (permalink / raw)
  To: NightStrike; +Cc: Binutils

NightStrike wrote:
>> Or you could try "gcc -mno-cygwin" where gcc is the standard Cygwin gcc.
>>
>> That's a Cygwin program so it understands the POSIX paths, but it
>> produced MinGW programs (which don't).
> 
> Are programs compiled in this fashion identical to programs that are
> compiled with the actual i686-pc-mingw-gcc program?

Since nobody more qualified has responded ...

I don't know if they are perfectly identical, but they certainly have 
the same general properties. That is, in order to build a UNIX program 
you have to apply the exact same patches as you would for the MinGW 
compiler.

Note that you must have installed the right Cygwin package for it to 
work - it uses a different set of libraries in -mno-cygwin mode.

Andrew

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: regex.c not found, but it clearly exists
  2008-01-02 21:44           ` Andrew STUBBS
                               ` (3 preceding siblings ...)
  2008-01-03 15:29             ` Andrew STUBBS
@ 2008-01-03 16:06             ` Andrew STUBBS
  4 siblings, 0 replies; 21+ messages in thread
From: Andrew STUBBS @ 2008-01-03 16:06 UTC (permalink / raw)
  To: Dave Korn; +Cc: 'NightStrike', 'Binutils'

Dave Korn wrote:
>   This is basically it, but there are some problems.  The -mno-cygwin flag and
> the cross-compile mode of the cygming-targeted compiler are somewhat kludgey.
> The major purpose for which they are packaged is so that you can rebuild the
> cygwin dll itself from within the cygwin environment.  It's not really
> intended for general cross-development, and although it'll just about do,
> there is a problem: it doesn't correctly switch over /all/ the default search
> paths; if you compare the output of "gcc -v -E -xc - < /dev/null" and "gcc
> -mno-cygwin -v -E -xc - < /dev/null", you'll see that gcc -mno-cygwin still
> searches the cygwin compiler-specific include dir
> 
> /usr/lib/gcc/i686-pc-cygwin/3.4.4/include
> 
> when it should be looking in:
> 
> /usr/lib/gcc/i686-pc-mingw32/3.4.4/include
> 
>   I don't know - and couldn't say for sure without doing a thorough audit -
> how serious this could be, but from running a very quick diff over it, I can
> see that it might in particular affect C++.  (It could easily break passing
> std::strings across DLL boundaries, which cygwin has some custom mods to the
> c++ stl header files relating to).

We use it to build a complete cross-toolset - binutils, gcc, newlib, gdb 
and a few other bits and pieces. I've never had any trouble with search 
paths that I couldn't blame on the build system, although no doubt there 
are some pit-falls to be had.

Obviously there are a number of patches required to build all those 
utilities on windows. We also have a few patches to make the tools 
understand /cygdrive paths in a limited way - it won't build the target 
libraries without.

We used to target Cygwin, rather than Windows, but that meant that all 
our customers also had to use Cygwin, and there were version mismatch 
problems to overcome.

Andrew

P.S. Sorry about the multiple posts - I've received a notification from 
the mailserver saying that it's having trouble sending the message, but 
there doesn't seem to be any way to tell it not to bother.

^ permalink raw reply	[flat|nested] 21+ messages in thread

* Re: regex.c not found, but it clearly exists
  2008-01-02 12:48       ` Andrew STUBBS
                           ` (7 preceding siblings ...)
  2008-01-03 15:44         ` Andrew STUBBS
@ 2008-01-03 16:17         ` Andrew STUBBS
  8 siblings, 0 replies; 21+ messages in thread
From: Andrew STUBBS @ 2008-01-03 16:17 UTC (permalink / raw)
  To: NightStrike; +Cc: Binutils

NightStrike wrote:
>> Or you could try "gcc -mno-cygwin" where gcc is the standard Cygwin gcc.
>>
>> That's a Cygwin program so it understands the POSIX paths, but it
>> produced MinGW programs (which don't).
> 
> Are programs compiled in this fashion identical to programs that are
> compiled with the actual i686-pc-mingw-gcc program?

Since nobody more qualified has responded ...

I don't know if they are perfectly identical, but they certainly have 
the same general properties. That is, in order to build a UNIX program 
you have to apply the exact same patches as you would for the MinGW 
compiler.

Note that you must have installed the right Cygwin package for it to 
work - it uses a different set of libraries in -mno-cygwin mode.

Andrew

^ permalink raw reply	[flat|nested] 21+ messages in thread

end of thread, other threads:[~2008-01-02 21:05 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-12-14  7:05 regex.c not found, but it clearly exists NightStrike
2007-12-14  7:18 ` Brian Dessent
2007-12-14  9:42   ` Andrew STUBBS
2007-12-17 23:22     ` NightStrike
2008-01-02 12:48       ` Andrew STUBBS
2008-01-02 16:19         ` Andrew STUBBS
2008-01-02 16:50         ` Andrew STUBBS
2008-01-02 19:16         ` Andrew STUBBS
2008-01-02 20:03         ` Andrew STUBBS
2008-01-02 20:59         ` Dave Korn
2008-01-02 21:44           ` Andrew STUBBS
2008-01-02 23:56             ` Andrew STUBBS
2008-01-03  2:15             ` Andrew STUBBS
2008-01-03  5:26             ` Andrew STUBBS
2008-01-03 15:29             ` Andrew STUBBS
2008-01-03 16:06             ` Andrew STUBBS
2008-01-02 23:56         ` Andrew STUBBS
2008-01-03 12:57         ` Andrew STUBBS
2008-01-03 15:44         ` Andrew STUBBS
2008-01-03 16:17         ` Andrew STUBBS
2007-12-14  7:19 ` Rick Mann

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).