[DynInst_API:] Several Dyninst build issues


Date: Fri, 11 Apr 2014 08:15:39 -0700
From: Jim Galarowicz <jeg@xxxxxxxxxxxxx>
Subject: [DynInst_API:] Several Dyninst build issues
Hi Dyninst team:

I have several issues to report, all relating to building Dyninst on different platforms.   I still have Dyninst-8.1.2 the default because Dyninst-8.2 doesn't build on BG/Q (as issue) and I now I see not on Ubuntu.

I have a potential user (if we can get past these build issues), who can't get dyninst-8.1.2 to build on two different platforms.  So, I tried to build Dyninst-8.2 on my ubuntu platform (which is one of Engelbert's platforms of choice).   I ran into two issues.  

Issue 1: (I got around this by using my own binutils with fPIC enabled.)

Linking CXX shared library libcommon.so
/usr/bin/ld: /usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/libiberty.a(cplus-dem.o): relocation R_X86_64_32S against `_sch_istable' can not be used when making a shared object; recompile with -fPIC
/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib/libiberty.a: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
make[2]: *** [common/libcommon.so.8.2.0] Error 1
make[1]: *** [common/CMakeFiles/common.dir/all] Error 2
make: *** [all] Error 2
error: Bad exit status from /home/jeg/OpenSpeedShop_ROOT/INSTALL/jeg-OptiPlex-GX620/rpm-tmp.q8MdTd (%build)

Issue 2: (haven't gotten around and could use advice)

Failure of 8.2 version to build with cmake version 2.8.11.2, gcc-4.8.1

+ CXX=g++ CC=gcc CXXFLAGS=-std=c++0x cmake . -DCMAKE_INSTALL_PREFIX=/home/jeg/OpenSpeedShop_ROOT/BUILDROOT/dyninst-8.2-1.x86_64/opt/krellroot_v2.1u3 -DINSTALL_LIB_DIR=/home/jeg/OpenSpeedShop_ROOT/BUILDROOT/dyninst-8.2-1.x86_64/opt/krellroot_v2.1u3/lib64 -DINSTALL_INCLUDE_DIR=/home/jeg/OpenSpeedShop_ROOT/BUILDROOT/dyninst-8.2-1.x86_64/opt/krellroot_v2.1u3/include/dyninst -DCMAKE_PREFIX_PATH=/home/jeg/OpenSpeedShop_ROOT/BUILDROOT/dyninst-8.2-1.x86_64/opt/krellroot_v2.1u3 -DCMAKE_BUILD_TYPE=RelWithDebInfo -DLIBDWARF_LIBRARIES=/opt/krellroot_v2.1u3/lib -DLIBDWARF_INCLUDE_DIR=/opt/krellroot_v2.1u3/include -DLIBELF_LIBRARIES=/opt/krellroot_v2.1u3/lib -DLIBELF_INCLUDE_DIR=/opt/krellroot_v2.1u3/include -DPATH_BOOST= -DIBERTY_LIBRARY=/opt/krellroot_v2.1u3/lib/libiberty.a
-- The C compiler identification is GNU 4.8.1
-- The CXX compiler identification is GNU 4.8.1
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- broken
CMake Error at /usr/share/cmake-2.8/Modules/CMakeTestCCompiler.cmake:61 (message):
  The C compiler "/usr/bin/gcc" is not able to compile a simple test program.
  It fails with the following output:
   Change Dir: /home/jeg/OpenSpeedShop_ROOT/BUILD/jeg-OptiPlex-GX620/dyninst-8.2/CMakeFiles/CMakeTmp
  Run Build Command:/usr/bin/make "cmTryCompileExec3894022312/fast"
  /usr/bin/make -f CMakeFiles/cmTryCompileExec3894022312.dir/build.make
  CMakeFiles/cmTryCompileExec3894022312.dir/build
  make[1]: Entering directory
  `/home/jeg/OpenSpeedShop_ROOT/BUILD/jeg-OptiPlex-GX620/dyninst-8.2/CMakeFiles/CMakeTmp'
  /usr/bin/cmake -E cmake_progress_report
  /home/jeg/OpenSpeedShop_ROOT/BUILD/jeg-OptiPlex-GX620/dyninst-8.2/CMakeFiles/CMakeTmp/CMakeFiles
  1
  Building C object
  CMakeFiles/cmTryCompileExec3894022312.dir/testCCompiler.c.o
  /usr/bin/gcc -o CMakeFiles/cmTryCompileExec3894022312.dir/testCCompiler.c.o
  -c
  /home/jeg/OpenSpeedShop_ROOT/BUILD/jeg-OptiPlex-GX620/dyninst-8.2/CMakeFiles/CMakeTmp/testCCompiler.c
  Linking C executable cmTryCompileExec3894022312
  /usr/bin/cmake -E cmake_link_script
  CMakeFiles/cmTryCompileExec3894022312.dir/link.txt --verbose=1
  /usr/bin/gcc CMakeFiles/cmTryCompileExec3894022312.dir/testCCompiler.c.o -o
  cmTryCompileExec3894022312 -rdynamic
  /opt/krellroot_v2.1u3/bin/ld: this linker was not configured to use
  sysroots
  collect2: error: ld returned 1 exit status
  make[1]: *** [cmTryCompileExec3894022312] Error 1
  make[1]: Leaving directory
  `/home/jeg/OpenSpeedShop_ROOT/BUILD/jeg-OptiPlex-GX620/dyninst-8.2/CMakeFiles/CMakeTmp'
  make: *** [cmTryCompileExec3894022312/fast] Error 2

  Issue 3: (Engelbert's ubuntu issue):

hi jim, 
another error has shown up which has to do with libdwarf.so. I did "sudo apt-get install libdwarf-dev" but this brought me no relief... Here' the error:
...
../../common/src/arch-x86.C: In member function 'bool NS_x86::instruction::isNop() const':
../../common/src/arch-x86.C:5972:8: warning: variable 'displacement_location' set but not used [-Wunused-but-set-variable]
    int displacement_location = 0;
        ^
../../common/src/arch-x86.C:5973:8: warning: variable 'displacement_size' set but not used [-Wunused-but-set-variable]
    int displacement_size = 0;
        ^
Compiling ../../common/src/arch-power.C
In file included from ../../common/src/arch-power.C:32:0:
../../common/h/arch-power.h: In constructor 'NS_power::instruction::instruction(const void*)':
../../common/h/arch-power.h:782:34: warning: cast from type 'const void*' to type 'NS_power::instructUnion*' casts away qualifiers [-Wcast-qual]
       insn_ = *((instructUnion *)ptr);
                                  ^
Compiling ../../common/src/debug_common.C
Compiling ../../common/src/VariableLocation.C
Compiling ../../common/src/Buffer.C
Updating build voucher information: V_libcommon
common build voucher being constructed for libcommon: BUILD#0
     $common: v8.1.2-1 libcommon #0 2014/04/11 11:18 etijskens@bert-macbookpro-ubuntu $
Compiling V_libcommon.o
Linking libcommon.so.8.1.2
Making symlink libcommon.so.8.1.2 to libcommon.so.8.1
Making symlink libcommon.so.8.1 to libcommon.so
make[1]: Leaving directory `/home/etijskens/software/openspeedshop-release-2.1/BUILD/bert-MacBookPro-ubuntu/dyninst-8.1.2/common/x86_64-unknown-linux2.4'
make[1]: Entering directory `/home/etijskens/software/openspeedshop-release-2.1/BUILD/bert-MacBookPro-ubuntu/dyninst-8.1.2/dwarf/x86_64-unknown-linux2.4'
../../make.library.tmpl:254: DEPENDS: No such file or directory
Building depends files
make[1]: Leaving directory `/home/etijskens/software/openspeedshop-release-2.1/BUILD/bert-MacBookPro-ubuntu/dyninst-8.1.2/dwarf/x86_64-unknown-linux2.4'
make[1]: Entering directory `/home/etijskens/software/openspeedshop-release-2.1/BUILD/bert-MacBookPro-ubuntu/dyninst-8.1.2/dwarf/x86_64-unknown-linux2.4'
Compiling ../src/dwarfResult.C
Compiling ../src/dwarfExprParser.C
Compiling ../src/dwarfFrameParser.C
Compiling ../src/dwarfHandle.C
Updating build voucher information: V_libdynDwarf
dynDwarf build voucher being constructed for libdynDwarf: BUILD#0
     $dynDwarf: v8.1.2-1 libdynDwarf #0 2014/04/11 11:18 etijskens@bert-macbookpro-ubuntu $
Compiling V_libdynDwarf.o
Linking libdynDwarf.so.8.1.2
/usr/bin/ld: /usr/lib/libdwarf.a(dwarf_alloc.o): relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC
/usr/lib/libdwarf.a: error adding symbols: Bad value
collect2: error: ld returned 1 exit status
make[1]: *** [libdynDwarf.so.8.1.2] Error 1
make[1]: Leaving directory `/home/etijskens/software/openspeedshop-release-2.1/BUILD/bert-MacBookPro-ubuntu/dyninst-8.1.2/dwarf/x86_64-unknown-linux2.4'
make: *** [dwarf] Error 2
error: Bad exit status from /home/etijskens/software/openspeedshop-release-2.1/INSTALL/bert-MacBookPro-ubuntu/rpm-tmp.Dm8RP9 (%build)


Issue 4:  (Engelbert's second issue on a non-ubuntu platform):

tried installing the latest version of open speed shop (rc-openspeedshop-release-2.1-u3.tar.gz) on a scientific linux (using gcc 4.8.1) but get the error below 
i used this command to get it going

$ ./install-tool --build-offline --openss-prefix $VSC_DATA/oss-2.1 --with-openmpi /apps/antwerpen/turing/harpertown/software/OpenMPI/1.6.5-GCC-4.8.1
...
Compiling ../src/emitElf.C
In file included from /data/antwerpen/201/vsc20170/oss-2.1/include/boost/tuple/tuple.hpp:33:0,
                 from ../src/emitElfStatic.h:47,
                 from ../src/emitElf.C:40:
/data/antwerpen/201/vsc20170/oss-2.1/include/boost/tuple/detail/tuple_basic.hpp: In function ‘typename boost::tuples::access_traits<typename boost::tuples::element<N, boost::tuples::cons<HT, TT> >::type>::const_type boost::tuples::get(const boost::tuples::cons<HT, TT>&)’:
/data/antwerpen/201/vsc20170/oss-2.1/include/boost/tuple/detail/tuple_basic.hpp:228:45: warning: typedef ‘cons_element’ locally defined but not used [-Wunused-local-typedefs]
   typedef BOOST_DEDUCED_TYPENAME impl::type cons_element;
                                             ^
../src/emitElf.C: In function ‘int elfSymType(Dyninst::SymtabAPI::Symbol*)’:
../src/emitElf.C:171:39: error: ‘STT_GNU_IFUNC’ was not declared in this scope
      case Symbol::ST_INDIRECT: return STT_GNU_IFUNC;
                                       ^
make[1]: *** [emitElf.o] Error 1
make[1]: Leaving directory `/data/antwerpen/201/vsc20170/openspeedshop-release-2.1/BUILD/r2e2cn03/dyninst-8.1.2/symtabAPI/x86_64-unknown-linux2.4'
make: *** [symtabAPI] Error 2
error: Bad exit status from /user/antwerpen/201/vsc20170/data/openspeedshop-release-2.1/INSTALL/r2e2cn03/rpm-tmp.55545 (%build)


RPM build errors:
    Macro %target_prefix has empty body
    Macro %target_prefix has empty body
    Bad exit status from /user/antwerpen/201/vsc20170/data/openspeedshop-release-2.1/INSTALL/r2e2cn03/rpm-tmp.55545 (%build)
DYNINST FAILED TO BUILD - TERMINATING BUILD SCRIPT.  Please check for errors.  sys=r2e2cn03


Any help will be greatly appreciated.

Thanks
Jim G

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