[MacPorts] #38500: gcc48: stable 4.8.0 released
MacPorts
noreply at macports.org
Fri Apr 12 12:09:07 PDT 2013
#38500: gcc48: stable 4.8.0 released
-----------------------+-------------------
Reporter: larryv@… | Owner: mww@…
Type: update | Status: new
Priority: Normal | Milestone:
Component: ports | Version:
Resolution: | Keywords:
Port: gcc48 |
-----------------------+-------------------
Comment (by howarth@…):
Replying to [comment:19 jeremyhu@…]:
> Replying to [comment:18 howarth@…]:
> > Replying to [comment:17 jeremyhu@…]:
> > > That patch from #38758 does some incorrect things to libstdcxx.
Those are not the desired changes for libstdcxx, and the issue they are
trying to fix is independent of the version bump.
> >
> > Exactly what is being done incorrectly?
>
> You are installing the libgcc runtime dylibs as well.
Yes because your current usage of -static-libgcc for linking the libstdc++
shared lib is quite broken. We ran into a very similar issue with the
libitm shared library which revealed that the faster c++ weak-symbol
coalescing introduced in darwin10 plays havoc with symbol resolution for
shared libs that have static libs linked in. Let me explain in more
detail. If you have the same non-weak symbols in both libSystem and in the
static libgcc, linking a shared library which uses those symbols against
the static libgcc insures that the symbols from the static lib are always
used). The faster c++ weak symbol coalescing is quicker because it only
attempts to find alternative symbols outside of the code module from
shared libraries if those symbols are marked as weak in the shared libs.
It is pretty hairy stuff and took us a long time to wrap our heads around
to fix http://gcc.gnu.org/bugzilla/show_bug.cgi?id=55693 in FSF gcc 4.8.0.
The final solution was effectively the same (avoid linking in static
libs).
>
> Please keep these comments in a separate ticket. It's difficult
tracking your issues across multiple unrelated tickets.
>
> > the only one that works reliably is to build both c and c++ with a
full bootstrap
>
> Then just try reverting r103047 (#36116). Don't do the other changes.
I can do it but I know it won't fix the test case that tickles the use of
two unwinders. You are still linking in a libgcc_eh.a and trying accessing
non-weak symbols from libSystem (which will never be used due to the
faster c++ weak coalescing). Just ask Nick Kledzik if you don't believe
me. He helped us understand the subtly in this change made at darwin10. I
know you want this magically fixed in FSF's libgcc_eh but it ain't gonna
happen. The whole issue becomes devilishly complex on darwin because of
the fact that many of the calls in libgcc have been subsumed into
libSystem. For llvm, life is simpler because the same compiler-rt code
used for those calls in clang/llvm are used in libSystem. For FSF gcc, we
have a fork and it is better to focus on the quality of the shared libgcc
support (where we can use stubs to only provide those calls which
libSystem doesn't).
--
Ticket URL: <https://trac.macports.org/ticket/38500#comment:20>
MacPorts <http://www.macports.org/>
Ports system for OS X
More information about the macports-tickets
mailing list