GCC 4.7.2: Mudflap linker errors
Frank Ch. Eigler
fche@redhat.com
Sat Sep 22 01:33:00 GMT 2012
bd satish <bdsatish@gmail.com> writes:
> [...]
> The following piece of code, gives "undefined references" to
> __real_malloc, __real_free, etc.:
> Compiled with:
> g++ -fmudflap references.cc -lmudflap
>
> /lib64/libmudflap.a(mf-runtime.o): In function `__mfu_check':
> ../libmudflap/mf-runtime.c:912: undefined reference to `__real_malloc'
> [...]
According to libmudflap/mf-impl.h, since you're using ordinary
archives rather than shared libraries (-fPIC) these __real_FOO
functions are expected to be provided by the linker:
(1) The static method involves a list of -wrap=foo flags being passed to
the linker, which then links references to "foo" to the symbol
"__wrap_foo", and links references to "__real_foo" to the symbol "foo".
When compiled without -DPIC, libmudflap.a contains such __wrap_foo
functions which delegate to __real_foo functions in libc to get their
work done.
So, something appears wrong with this wrapping mechanism in your case.
Can you rerun g++ with -v to see how the linker is invoked? Perhaps
there is something missing for the C++ static-linking case.
- FChE
More information about the Gcc
mailing list