------- Comment #8 from mikpe at it dot uu dot se 2009-05-22 19:18 ------- Created an attachment (id=17902) --> (http://gcc.gnu.org/bugzilla/attachment.cgi?id=17902&action=view) always pass -lgcc to linker
The link error reported by Matthias Klose is caused by the following: 1. g++ links shared libraries with -shared-libgcc, which apparently is important whenever exceptions are possible. 2. -shared-libgcc by definition excludes the static libgcc from the link command. 3. Since the __sync__ procedures are only present in the static libgcc, it follows that they cannot be used by -shared-libgcc objects like libstdc++.so. One way around this is to redefine -shared-libgcc to actually link against the static libgcc, contrary to its intention. Both mingw32 and cygwin do this, so it's not unheard of. The attached patch updates ARM EABI to do just that. Passes a bootstrap and light testing here. However, I would strongly prefer to just move the __sync__ procedures to the shared libgcc (with symbol versions of course). -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40133