On Wed, Jul 27, 2011 at 11:34 AM, Neal Becker <[email protected]> wrote:
> 7. Verify that the only difference is replacing the shared libs installed via
> rpm vs. the same shared libs installed without rpm.
>
> So something that rpm does to the shared libs (in /usr/lib64/dmtcp) is
> breaking
> things. The only thing I can think of is strip.
>
> 8. Notice the error:
>
> dlerror() = /usr/lib64/dmtcp/libmtcp.so: undefined symbol:
> mtcp_restore_start
>
> But it is defined!
> nm -D /usr/lib64/dmtcp/libmtcp.so | grep mtcp_restore_start
> 000000000000911c T mtcp_restore_start
>
> That was the non-working version of libmtcp.so, which has been stripped.
It isn't strip. If I run strip on the version of libmtcp.so left in
the build dir and copy it over /usr/lib64/dmtcp/libmtcp.so, then it
also works. But that version is different from the one installed by
rpm. Watch this:
$ ldd -r /usr/lib64/dmtcp/libmtcp.so
linux-vdso.so.1 => (0x00007fff7d7c3000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f913f396000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f913f17b000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f913ef65000)
libc.so.6 => /lib64/libc.so.6 (0x00007f913ebcc000)
/lib64/ld-linux-x86-64.so.2 (0x0000003520600000)
undefined symbol: mtcp_restore_start (/usr/lib64/dmtcp/libmtcp.so)
undefined symbol: dmtcp_exists (/usr/lib64/dmtcp/libmtcp.so)
undefined symbol: mtcp_restore_argv_start_addr (/usr/lib64/dmtcp/libmtcp.so)
undefined symbol: mtcp_sys_errno (/usr/lib64/dmtcp/libmtcp.so)
undefined symbol: mtcp_get_thread_sysinfo (/usr/lib64/dmtcp/libmtcp.so)
undefined symbol: mtcp_no (/usr/lib64/dmtcp/libmtcp.so)
undefined symbol: mtcp_dump_tls (/usr/lib64/dmtcp/libmtcp.so)
undefined symbol: mtcp_readdec (/usr/lib64/dmtcp/libmtcp.so)
undefined symbol: test_and_prepare_for_forked_ckpt
(/usr/lib64/dmtcp/libmtcp.so)
undefined symbol: write_ckpt_to_file (/usr/lib64/dmtcp/libmtcp.so)
undefined symbol: mtcp_readchar (/usr/lib64/dmtcp/libmtcp.so)
$ ldd -r /tmp/libmtcp-stripped.so
linux-vdso.so.1 => (0x00007fffcd3ff000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f02082b3000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f0208098000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f0207e82000)
libc.so.6 => /lib64/libc.so.6 (0x00007f0207ae9000)
/lib64/ld-linux-x86-64.so.2 (0x0000003520600000)
The program /usr/lib/rpm/debugedit is used to extract debug
information from ELF objects when building RPMs. It looks like it is
damaging the shared object somehow.
--
Jerry James
http://www.jamezone.org/
--
devel mailing list
[email protected]
https://admin.fedoraproject.org/mailman/listinfo/devel