Hello, I've been using the mpich MPI library and am using a wrapper to gather information about the calls used. It uses:
#pragma weak MPI_xxx = PMPI_xxx I then only need to implement the MPI_xxx functions and link against my library first to intercept the calls (I then do stuff and go on to call PMPI_xxx). The problem I am experiencing is that the symbol lengths being shown from readelf (or objdump) are reporting the length of PMPI_xxx rather than my MPI_xxx which is being called. I don't expect you will have used the MPI library so I have made a simple example. The source code and Makefile are attached to this message. I create 2 libraries and an executable - weaklib, mylib and test. The executable test calls the function in mylib correctly (which in turn calls the function in weaklib) but the executable shows the wrong length for the function Foo: [EMAIL PROTECTED] ~/samples/weaksyms $ readelf -s libweaklib.a |grep Foo 7: 00000000 10 FUNC WEAK DEFAULT 1 Foo 8: 00000000 10 FUNC GLOBAL DEFAULT 1 PFoo [EMAIL PROTECTED] ~/samples/weaksyms $ readelf -s libmylib.a |grep Foo 7: 00000000 79 FUNC GLOBAL DEFAULT 1 Foo 8: 00000000 0 NOTYPE GLOBAL DEFAULT UND PFoo [EMAIL PROTECTED] ~/samples/weaksyms $ readelf -s test |grep Foo 100: 080483b4 10 FUNC GLOBAL DEFAULT 12 Foo 101: 08048404 10 FUNC GLOBAL DEFAULT 12 PFoo The executable should show the length as 79, shouldn't it? Regards, Paul Btw this happens on all systems I have tried it on: FC4, Gentoo, Suse Opteron - let me know if you want any specific versions
weaksyms.tgz
Description: application/compressed-tar
_______________________________________________ bug-binutils mailing list bug-binutils@gnu.org http://lists.gnu.org/mailman/listinfo/bug-binutils