[tbb-bugs] #25834 [Applications/Tor Browser]: Use compiler dependent spec files for mingw-w64

Tor Bug Tracker & Wiki blackhole at torproject.org
Thu Apr 19 21:28:52 UTC 2018


#25834: Use compiler dependent spec files for mingw-w64
-------------------------------------------------+-------------------------
 Reporter:  gk                                   |          Owner:  tbb-
                                                 |  team
     Type:  defect                               |         Status:
                                                 |  needs_review
 Priority:  Medium                               |      Milestone:
Component:  Applications/Tor Browser             |        Version:
 Severity:  Normal                               |     Resolution:
 Keywords:  tbb-rbm, ff60-esr,                   |  Actual Points:
  TorBrowserTeam201804R                          |
Parent ID:  #24631                               |         Points:
 Reviewer:                                       |        Sponsor:
-------------------------------------------------+-------------------------

Comment (by cypherpunks):

 {{{
 mkdir -p builddir/mingw-w64/mingw-w64-headers32
 }}}
 `32` in 64 bit builds might confuse somebody. The same for `crt` and
 `widl`.
 {{{
 # We don't want to link against msvcrt.dll due to bug 9084.
 [% c("arch") %]-w64-mingw32-g++ -dumpspecs > $distdir/msvcr100.spec
 }}}
 `gcc` is the driver program of GCC suite, and it handles the specs
 according to the docs. (So, if it gives the same result in practice,
 please, use it instead of `g++`.)
 `-dumpspecs` dumps specs for all programs invoked by `gcc`, and the
 version you called is what is installed on host, so `gcc-4.9-all.spec` is
 a better wording than `msvcr100.spec`.
 {{{
 # Linking libgcc against msvcrt is hard-coded...
 sed 's/msvcrt/msvcr100/' -i gcc-[% c("var/gcc_version")
 %]/gcc/config/i386/t-mingw-w32
 }}}
 First, we use `t-mingw-w64`. Second, it has nothing relative to `msvcrt`.
 Obsolete?
 {{{
 # LDFLAGS_FOR_TARGET does not work for some reason. Thus, we take
 # CFLAGS_FOR_TARGET.
 }}}
 Linker doesn't want to parse compiler's option? That's normal.
 {{{
 export CFLAGS_FOR_TARGET="-specs=$distdir/msvcr100.spec -Wl,--nxcompat
 -Wl,--dynamicbase"
 }}}
 Export not all `-Wl` flags? Very weird.
 Do you use this line to pass `-specs` for the new compiler only? It can be
 done by adding `--with-specs=$distdir/msvcr100.spec` to the next line:
 {{{
 gcc-[% c("var/gcc_version") %]/configure --prefix=$distdir --target=[%
 c("arch") %]-w64-mingw32 --disable-multilib --enable-languages=c,c++
 }}}
 but WARNING: you're going to overwrite the default specs of the new
 compiler with `gcc-4.9-all.spec` ones! And with
 {{{
 # Update msvcr100.spec with the compiler we have built (#25834)
 $distdir/bin/[% c("arch") %]-w64-mingw32-g++ -dumpspecs >
 $distdir/msvcr100.spec
 sed 's/msvcrt/msvcr100/' -i $distdir/msvcr100.spec
 }}}
 you just read all the specs of the new compiler (with part of them already
 overwritten) and try to replace the (new/remaining?) `msvcrt`s (do they
 really exist?).
 And what is the reason to update and use `msvcr100.spec` file later (in
 `firefox`)? It has become the default config of your compiler already.
 USUAL DISCLAIMER: reviewed, but not built :)

--
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/25834#comment:7>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online


More information about the tbb-bugs mailing list