Re: Our GCC-4.8 is broken

Cesar Strauss <[email protected]> Tue, 24 Dec 2013 21:13:26 +0000
Newsgroups gmane.comp.gnu.mingw.devel
Message-ID <[email protected]>
On 23/12/2013 15:25, arthur wrote:
> On 20/12/2013 7:44 PM, Cesar Strauss wrote:
>> I'll help. I'll try to create a build without embedded drive letters.
>> I'll also look into the packaging.
>
> Cesar, I also downloaded the source pack but didn't notice where the
> embedded drive letters come from. Anyway, please let me know if you any
> help on this. Arthur
>
>

Thank you, Arthur, for your offer.

I did manage to create a build without embedded drive letters, but some 
questions remain.

I used gcc 4.8.2 without any patches as a starting point. I also used 
the setup mentioned by John E. / TDM in 
http://thread.gmane.org/gmane.comp.gnu.mingw.user/42991/focus=43002:

> 1 - Using an MSYS shell, build GCC in a fully "identity-mounted"
> environment, where X:\mingw is mounted as /mingw (X being any Windows
>  drive) and whatever directories you build in and get sources from
> are similarly matched. For example, I build with H:\mingw mounted as
> /mingw and H:\crossdev mounted as /crossdev, and place my build
> directory and sources in various subdirectories of H:\crossdev. I
> believe it also helps to use a relative path when executing GCC's
> configure script, like "../src/gcc/configure <options>".

With this setup, the output from "strings" is reduced to:

  $ strings gcc.exe | grep '[a-z]:/[a-z]'
  i:/p/giaw/mingw/share/locale
  i:/p/giaw/mingw/share/locale

Interestingly, these are Earnie's paths, not mine. This pointed to the 
vector being some library built by Earnie and statically linked to my 
gcc.exe. I found it by:

$ cd /mingw/lib; for f in *.a; do strings $f | grep '/share/locale' && 
echo $f; done
i:/p/giaw/mingw/share/locale
i:/p/giaw/mingw/share/locale
libintl.a

I avoided linking gcc to libintl by configuring gcc with --disable-nls. 
This produced a build without any drive letters, which confirmed the 
suspicion of libintl (gettext) being the vector.

The previous packaged version of gettext did not had this problem, so a 
short term solution is to downgrade gettext and rebuild gcc and other 
affected packages.

Afterwards, we should debug gettext to investigate why this regression 
occurred and fix it.

It would also be nice to investigate the need for building gcc with 
"identity mounts". Maybe it is due to a bad interaction between the gcc 
build machinery and MSYS path translation.

Regards,
Cesar


------------------------------------------------------------------------------
Rapidly troubleshoot problems before they affect your business. Most IT 
organizations don't have a clear picture of how application performance 
affects their revenue. With AppDynamics, you get 100% visibility into your 
Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro!
http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk