Re: [DynInst_API:] Cannot link to dyninst 8.0 on Ubuntu


Date: Thu, 28 Feb 2013 21:11:27 -0600
From: Andrew Bernat <bernat@xxxxxxxxxxx>
Subject: Re: [DynInst_API:] Cannot link to dyninst 8.0 on Ubuntu
On Feb 27, 2013, at 2:32 PM, mkfs <semper.non.sequitur@xxxxxxxxx> wrote:

Is there any reason not to use the --whole-archive flags in one of the
Dyninst shared libraries, such symtabAPI or dynDwarf?

It doesn't work if libdwarf.a isn't compiled with -fPIC. However, I've updated the test suite and the parseThat utility to support static libdwarf. They're compiled as follows:

test suite driver: -rdynamic -Wl,--whole-archive -ldwarf -Wl,--no-whole-archive
parseThat: -Wl,--whole-archive -ldwarf -Wl,--no-whole-archive

The test suite driver uses dlopen to load the Dyninst libraries, and thus requires -rdynamic to ensure that all dwarf symbols are available to dlopen (via the dynamic symbol table). Unfortunately, all users who build binaries will have to do something similar. 

Alternatively, this could be handled via 'better documentation', as
mentioned. When I began to write code against Dyninst, it would have
been very helpful to have a sample application (e.g. create a BPatch
against argv[1] and exit) along with toolchain-specific build
commands. This could even use the configured build system, as long as
the build commands are echoed to STDOUT for reference. I tried to coax
the build commands out of the testsuite, but was not very successful.

This is a good idea, and it's been added to the DyninstAPI documentation. We'll look into adding an example build line, since there are a lot of details that have to be right now - library ordering, flags, the lot. 

Drew




[← Prev in Thread] Current Thread [Next in Thread→]