As you've noted, the build system is kind of complex. That's why we're reluctant to change it.
My opinion is that we should deprecate static dwarf support; is anyone actively using it? Drew -- Drew Bernat [email protected] [email protected] On Feb 24, 2013, at 1:01 PM, mkfs <[email protected]> wrote: > Just a quick note -- the source code distro can be built to link > against the static DWARF library (thus resolving the missing .so > problem reported earlier) -- however, libsymtabAPI des not link to > this library correctly, so the dwarf symbols are all unresolved: > > bash$ g++ -I/usr/local/dyninst/include dyninst_test.cpp > -L/usr/local/dyninst/lib -ldyninstAPI -lcommon -lsymtabAPI -lpatchAPI > -lparseAPI -lstackwalk -lpcontrol -linstructionAPI -ldynC_API > -ldynDwarf -ldynElf -lsymLite -lsymtabAPI > /usr/local/dyninst/lib/libdynDwarf.so: undefined reference to > `dwarf_get_fde_info_for_cfa_reg3' > /usr/local/dyninst/lib/libsymtabAPI.so: undefined reference to `dwarf_errmsg' > /usr/local/dyninst/lib/libsymtabAPI.so: undefined reference to > `dwarf_dieoffset' > /usr/local/dyninst/lib/libsymtabAPI.so: undefined reference to `dwarf_lowpc' > ... > bash$ > > > This can be fixed by linking against libdwarf.a correctly in the > application build: > > bash$ g++ -I/usr/local/dyninst/include dyninst_test.cpp > -L/usr/local/dyninst/lib -ldyninstAPI -lcommon -lsymtabAPI -lpatchAPI > -lparseAPI -lstackwalk -lpcontrol -linstructionAPI -ldynC_API > -ldynDwarf -ldynElf -lsymLite -lsymtabAPI -Wl,--whole-archive > /usr/lib/libdwarf.a -Wl,--no-whole-archive > bash$ > > > The requirement for the --whole-archive...--no-whole-archive archive > flags in GNU ld are somewhat new and broke a lot of my own projects > (which tend to build a single shared library from many static > libraries) a few years back. It appears this fix was applied to at > least part of the Dyninst build process, as the flag appears in the > test suite for PPC code: > > bash$ grep -rI ldwarf . > ... > ./testsuite/ppc64_bgq_ion/Makefile:MYLINK_FLAGS += -Wl,--whole-archive > -ldwarf -Wl,--no-whole-archive > ... > > > The proper fix is to use the --whole-archive flags in the build for > either libdynDwarf.so (the obvious place) or libsymtabAPI.so (where > all the libdwarf symbols seem to be referenced). Unfortunately, the > build system is rather baroque, and I couldn't find the proper place > to change "-ldwarf" to "-Wl,--whole-archive -ldwarf > -Wl,--no-whole-archive". > > Have you considered using libtool to manage the building of the shared > libraries? It takes a day or two to get used to, but it should ease > the maintenance of the build system long-term. > _______________________________________________ > Dyninst-api mailing list > [email protected] > https://lists.cs.wisc.edu/mailman/listinfo/dyninst-api _______________________________________________ Dyninst-api mailing list [email protected] https://lists.cs.wisc.edu/mailman/listinfo/dyninst-api
