On Wed, Jul 27, 2011 at 11:34 AM, Neal Becker <ndbeck...@gmail.com> 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
devel@lists.fedoraproject.org
https://admin.fedoraproject.org/mailman/listinfo/devel

Reply via email to