On 11 Nov 2011, at 14:33, Rainer Orth wrote:

Iain Sandoe <develo...@sandoe-acoustics.co.uk> writes:

however, most of the suite fails on darwin9 - with an undefined reference
to delete(void*).

Could this be the same issue I've been seeing on Tru64 UNIX, i.e. lack
of weakdef support?

        http://gcc.gnu.org/ml/gcc-patches/2011-11/msg01426.html

At least my weakdef.c testcase also fails to link on
i386-apple-darwin9.8.0.

It certainly looks similar to point 2

Having discussed this with Mike and tried out some experiments.

For Darwin, the symbol can be absent at runtime (and will compare to NULL as per the elf case).

However,

a) (with two-level namespace) it can't be absent at link time - so there has to be a dummy provided there.

b) (If you force flat_namespace ... which IMO would be a Very Bad Thing for the compiler) you can do
-flat_namespace -undefined suppress  ...
... see the discussion in http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51059

- so I think that is quite similar to what your quoted page is saying?

However,

... it doesn't explain why x86-64 Darwin10 does NOT seem to experience this (there should be no change in weak semantics AFAIK between 9 and 10) . .. and i686-darwin9 does (unless there's a tool bug in Darwin 9 that this is exposing).

... and the comment stands that the Makefile.am explicitly says "we don't want or need libstdc++" but the missing symbols (in darwin9) seem to be from there.

cheers
Iain

Reply via email to