On Thu, Oct 14, 2010 at 23:53, Jeff Squyres <jsquy...@cisco.com> wrote:

> The configure test essentially looks like this -- could you try this
> manually and see what happens?
>
> cat > conftest_weak.h <<EOF
> int real(int i);
> int fake(int i);
> EOF
>
> cat > conftest_weak.c <<EOF
> #include "conftest_weak.h"
> #pragma weak fake = real
> int real(int i) { return i; }
> EOF
>
> cat > conftest.c <<EOF
> #include "conftest_weak.h"
> int main() { return fake(3); }
> EOF
>
> # Try the compile
> clang $CFLAGS  -c conftest_weak.c
> clang $CFLAGS  conftest.c conftest_weak.o -o conftest $LDFLAGS $LIBS
>
> The configure test rules that weak symbol support is there if both compiler
> invocations return an exit status of 0.
>

They exit 0 and

$ nm conftest |g 'real|fake'
00000000004004a0 W fake
00000000004004a0 T real

so it looks like that is working fine.  It also works fine when I stuff it
into a shared library:

$ clang -c -fPIC conftest_weak.c
$ clang -shared -fPIC conftest.c conftest_weak.o -o conftest.so
$ nm conftest.so |g 'real|fake'
00000000000005a0 W fake
00000000000005a0 T real

Jed

Reply via email to