Giter Site home page Giter Site logo

llvm-tracer's Introduction

LLVM IR Trace Profiler (LLVM-Tracer) 2.0

LLVM-Tracer is an LLVM instrumentation pass to print out a dynamic LLVM IR trace, including dynamic register values and memory addresses.

If you use LLVM-Tracer in your research, please cite:

ISA-Independent Workload Characterization and its Implications for Specialized Architectures, Yakun Sophia Shao and David Brooks, International Symposium on Performance Analysis of Systems and Software (ISPASS), April 2013

Requirements:

We highly recommend that users use the provided Docker image, available for download here. This will solve basically all environment issues. If you cannot use Docker, then read on.

  1. LLVM 6.0 and Clang 6.0 64-bit. Users cannot download a pre-built package because the Release build type strips value names from LLVM IR, and working around this is difficult. Instead, users must built the toolchain from source.
  2. GCC 5.4 or later.
  3. CMake 2.8.12 or newer.

Changelog:

Feburary 2020: v2 new features

Breaking changes from v1.2 to v2.0:

  • LLVM-Tracer now uses LLVM 6.0. Support for all previous versions of LLVM have been removed. Minor versions 6.0.0 and 6.0.1 have been tested to work.
  • The Release build type of LLVM 6.0 and Clang 6.0 will strip value names from the generated LLVM IR, which breaks the tracer. To avoid this problem, it is highly recommended that you build the Debug build type by adding the cmake flag -DCMAKE_BUILD_TYPE=Debug.

C++ support

LLVM-Tracer now supports C++ for uninstrumented code! Users can write C++ to build applications and only have LLVM-Tracer instrument and generate dynamic traces for the parts that are written in pure C with C-style linkage. limited to writing pure C programs. Now, you can make use of all the features For example: if you write a C++ class that calls a function foo which is in an extern C context, you can trace foo(), but you cannot trace a function like the class's constructor.

See playground/test.cc for a live example.

Multithreading support

LLVM-Tracer can now trace multithreaded applications. Each thread should call the llvmtracer_set_trace_name API first to assign a unique name for the dynamic trace file that will be produced.

See playground/multithreading.cc for an example.

November 2016: v1.2 changelog

Breaking changes from v1.1 to v1.2:

  • CMake is no longer optional. LLVM-Tracer only supports CMake for building. This is because of a new Clangtool component (under ast-pass/) which requires CMake.
  • LLVM-Tracer will install all built files to the subdirectories bin/ and lib/ instead of full-trace/ and profile-func/. The BUILD_ON_SOURCE option has been removed.

Build:

CMake is a configure tool which allows you to do out-of-source build. LLVM-Tracer requires CMake newer than 2.8.12. By default, CMake searches for LLVM 6.0.

  1. Set LLVM_HOME to where you installed LLVM

    export LLVM_HOME=/path/to/your/llvm/installation
    
  2. Clone LLVM-Tracer.

    git clone https://github.com/ysshao/LLVM-Tracer
    cd LLVM-Tracer/
    
  3. Configure with CMake and build LLVM-Tracer source code.

    If you have LLVM installed:

    mkdir build/
    cd build
    cmake ..
    make
    make install
    

    If you want CMake to install LLVM for you (CAUTION: takes an hour!):

    mkdir build/
    cd build
    cmake .. -DLLVM_ROOT=/where/to/install/LLVM -DAUTOINSTALL=TRUE -DCMAKE_BUILD_TYPE=Debug
    make
    make install
    
  4. (Optional) Try running triad example, which is built by CMake.

    cd /path/to/build/LLVM-Tracer/
    ctest -V
    
  5. Available CMake settings

    -DLLVM_ROOT=/where/your/llvm/install   (default : $LLVM_HOME)
      You may denote the path of LLVM to find/install by this option. if
      this option is not defined, environment variable LLVM_HOME will be
      used.
    
    -DAUTOINSTALL=TRUE,FALSE    (default : FALSE)
      By this option, CMake scripts will automatically download, build and
      install LLVM for you if finds no LLVM installation. Using this
      function requires tar-1.22 or newer to extract xz format.
    
      The default installation path is under /your/build_dir/lib/llvm-x.x.
      You can manually define the installation path by
      -DLLVM_ROOT=/where/to/install.
    
    -DCMAKE_BUILD_TYPE=None,Debug,Release    (default : None)
      It is recommended to use the Debug build type for LLVM 6.0.
    

Run:

After you build LLVM-Tracer, you can use example triad programs in the example directory to test LLVM-Tracer.

Example program: triad

  1. Go to /your/path/to/LLVM-Tracer/example/triad

  2. Run LLVM-Tracer to generate a dynamic LLVM IR trace a. LLVM-Tracer tracks regions of interest inside a program. In the triad example, we want to analyze the triad kernel instead of the setup and initialization work done in main. To tell LLVM-Tracer the functions we are interested in, set the enviroment variable WORKLOAD to be the top-level function name:

    export WORKLOAD=triad
    

    If you have multiple functions, separate them with commas.

    export WORKLOAD=md,md_kernel
    

    LLVM-Tracer will trace them differently based on the -trace-all-callees flag, which can be specified to the opt command (see step d).

    • If this flag is specified, then any function called by any function in the WORKLOAD variable will be traced. This is a simple way to trace multiple "top-level" functions at once.
    • If this flag is not specified, then only functions in the WORKLOAD variable will be traced.

    b. Generate the source code labelmap.

    export TRACER_HOME=/your/path/to/LLVM-Tracer
    ${TRACER_HOME}/bin/get-labeled-stmts triad.c -- -I${LLVM_HOME}/lib/clang/6.0/include
    

    c. Generate LLVM IR:

    clang -g -O1 -S -fno-slp-vectorize -fno-vectorize -fno-unroll-loops -fno-inline -emit-llvm -o triad.llvm triad.c
    

    d. Run LLVM-Tracer pass. Before you run, make sure you already built LLVM-Tracer and have set the environment variable TRACER_HOME to where you put LLVM-Tracer code.

    opt -S -load=${TRACER_HOME}/full-trace/full_trace.so -fulltrace -labelmapwriter [-trace-all-callees] triad.llvm -o triad-opt.llvm
    llvm-link -o full.llvm triad-opt.llvm ${TRACER_HOME}/profile-func/trace_logger.llvm
    

    The -trace-all-callees flag is optional and defaults to false.

    e. Generate machine code:

    llc -filetype=asm -o full.s full.llvm
    gcc -fno-inline -o triad-instrumented full.s
    

    f. Run binary. It will generate a file called dynamic_trace under current directory.

    ./triad-instrumented
    

    g. There is a script provided which performs all of these operations.

    python llvm_compile.py $TRACER_HOME/example/triad triad
    

triad is part of the SHOC benchmark suite. We provide a version of SHOC that is ready to be used with LLVM-Tracer. Please go to Aladdin and look under the SHOC directory.


Sophia Shao, Sam Xi, and Emma Wang

llvm-tracer's People

Contributors

amritamaz avatar emma926 avatar exhausted-engy avatar rgly avatar xyzsam avatar yaoyuannnn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

llvm-tracer's Issues

Unable to generate opt file

Hello,
I have some problems when generating dynamic trace with LLVM-Tracer 3.4 version. This is the link that I used to generate the dynamic trace miniFE ,I'm using the Reference 2.0 version.
The following is the log

root@c7f18a28e1ce:/workspace/LLVM-Tracer/miniFE/ref/src# make
clang -g -O0 -S -static -emit-llvm -I. -I../utils -I../fem -DMINIFE_SCALAR=double -DMINIFE_LOCAL_ORDINAL=int -DMINIFE_GLOBAL_ORDINAL=int -DMINIFE_CSR_MATRIX -DMINIFE_REPORT_RUSAGE -DMINIFE_INFO=1 -DMINIFE_KERNELS=0 -o main.llvm main.cpp
opt -S -load=/workspace/LLVM-Tracer/lib/full_trace.so -fulltrace -trace-all-callees main.llvm -o main-opt.llvm
opt: /workspace/LLVM-Tracer/full-trace/full_trace.cpp:939: void Tracer::handleInstructionResult(llvm::Instruction*, llvm::Instruction*, InstEnv*): Assertion `false && "Return instruction is terminator...\n"' failed.
0 opt 0x00000000018519d8 llvm::sys::PrintStackTrace(_IO_FILE*) + 53
1 opt 0x0000000001851c68
2 opt 0x0000000001851631
3 libpthread.so.0 0x00007fb88dd9e390
4 libc.so.6 0x00007fb88d157428 gsignal + 56
5 libc.so.6 0x00007fb88d15902a abort + 362
6 libc.so.6 0x00007fb88d14fbd7
7 libc.so.6 0x00007fb88d14fc82
8 full_trace.so 0x00007fb88cf175b7
9 full_trace.so 0x00007fb88cf179e1 Tracer::runOnBasicBlock(llvm::BasicBlock&) + 1057
10 full_trace.so 0x00007fb88cf15cf0 Tracer::runOnFunction(llvm::Function&) + 208
11 opt 0x0000000001716004 llvm::FPPassManager::runOnFunction(llvm::Function&) + 330
12 opt 0x000000000171617a llvm::FPPassManager::runOnModule(llvm::Module&) + 120
13 opt 0x000000000171647a
14 opt 0x0000000001716972 llvm::legacy::PassManagerImpl::run(llvm::Module&) + 262
15 opt 0x0000000001716b4b llvm::legacy::PassManager::run(llvm::Module&) + 39
16 opt 0x00000000008d2bc8 main + 5804
17 libc.so.6 0x00007fb88d142830 __libc_start_main + 240
18 opt 0x00000000008c4299 _start + 41
Stack dump:
0. Program arguments: opt -S -load=/workspace/LLVM-Tracer/lib/full_trace.so -fulltrace -trace-all-callees main.llvm -o main-opt.llvm

  1. Running pass 'Function Pass Manager' on module 'main.llvm'.
  2. Running pass 'Add full Tracing Instrumentation for Aladdin' on function '@main'
    Makefile:43: recipe for target 'main-opt.llvm' failed
    make: *** [main-opt.llvm] Aborted (core dumped)

How can I solve this problem? Thank you very much for your help.
-Min

full-trace/full_trace.cpp:4:31: fatal error: llvm/IR/Constants.h: No such file or directory

Hi,
I am following the README.rd to build the LLVM-Tracer project and I came across a problem when I use the make command, that is "full-trace/full_trace.cpp:4:31: fatal error: llvm/IR/Constants.h: No such file or directory". Thanks for any help!

Here is what I tried.
(1) I have built the LLVM 3.4 source using cmake and 'ninja' and then set "LLVM_HOME=/home/xxx/llvm3.4"
(2) I have used the cmake command to generate the Makefile correctly. such as "-- Build files have been written to: "/home/xxx/LLVM-Tracer-master/build"
(3) When I use the make command in the directory "/home/xxx/LLVM-Tracer-master/build", it emit the above error:
Scanning dependencies of target full_trace
[ 7%] Building CXX object full-trace/CMakeFiles/full_trace.dir/full_trace.cpp.o
/home/xxx/LLVM-Tracer-master/full-trace/full_trace.cpp:4:31: fatal error: llvm/IR/Constants.h: No such file or directory
#include "llvm/IR/Constants.h"

/usr/include/stdlib.h:31:10: fatal error: 'stddef.h' file not found

root@5e60d163e16d:/workspace/LLVM-Tracer/example/triad# python llvm_compile.py $TRACER_HOME/example/triad triad
/workspace/LLVM-Tracer/example/triad triad
In file included from /workspace/LLVM-Tracer/example/triad/triad.c:1:
In file included from /workspace/LLVM-Tracer/example/triad/triad.h:2:
/usr/include/stdlib.h:31:10: fatal error: 'stddef.h' file not found
#include <stddef.h>
^~~~~~~~~~
1 error generated.
Error while processing /workspace/LLVM-Tracer/example/triad/triad.c.
/tmp/cc96g3ay.o: In function create_trace(char const*)': llvm-link:(.text+0x3867): undefined reference to operator new(unsigned long)'
llvm-link:(.text+0x38a0): undefined reference to operator delete(void*)' /tmp/cc96g3ay.o: In function write_labelmap()':
llvm-link:(.text+0x390e): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::c_str() const' llvm-link:(.text+0x391b): undefined reference to std::__cxx11::basic_string<char, std::char_traits, std::allocator >::length() const'
/tmp/cc96g3ay.o: In function open_trace_file()': llvm-link:(.text+0x3963): undefined reference to pthread_mutex_lock'
llvm-link:(.text+0x39ef): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::c_str() const' llvm-link:(.text+0x3a66): undefined reference to pthread_mutex_unlock'
/tmp/cc96g3ay.o: In function trace_logger_init': llvm-link:(.text+0x3ac3): undefined reference to pthread_mutex_init'
/tmp/cc96g3ay.o: In function fin_toplevel()': llvm-link:(.text+0x3be8): undefined reference to operator delete(void*)'
/tmp/cc96g3ay.o: In function llvmtracer_set_trace_name': llvm-link:(.text+0x3c2f): undefined reference to std::__cxx11::basic_string<char, std::char_traits, std::allocator >::operator=(char const*)'
/tmp/cc96g3ay.o: In function log_or_not(bool, bool, int, char*)': llvm-link:(.text+0x3caf): undefined reference to std::__cxx11::basic_string<char, std::char_traits, std::allocator >::length() const'
llvm-link:(.text+0x3cf1): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::c_str() const' /tmp/cc96g3ay.o: In function trace_logger_update_status':
llvm-link:(.text+0x3ec3): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::c_str() const' llvm-link:(.text+0x3f18): undefined reference to std::__cxx11::basic_string<char, std::char_traits, std::allocator >::c_str() const'
llvm-link:(.text+0x3f64): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::length() const' llvm-link:(.text+0x3f90): undefined reference to std::__cxx11::basic_string<char, std::char_traits, std::allocator >::operator=(char const*)'
llvm-link:(.text+0x3fc2): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator=(char const*)' /tmp/cc96g3ay.o: In function trace_logger_register_labelmap':
llvm-link:(.text+0x3aa3): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::assign(char const*, unsigned long)' /tmp/cc96g3ay.o: In function __cxx_global_var_init.1':
llvm-link:(.text.startup+0x3c): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string()' /tmp/cc96g3ay.o: In function __dtor__Z12labelmap_strB5cxx11':
llvm-link:(.text.startup+0x5d): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' /tmp/cc96g3ay.o: In function __clang_call_terminate':
llvm-link:(.text.__clang_call_terminate[__clang_call_terminate]+0x9): undefined reference to __cxa_begin_catch' llvm-link:(.text.__clang_call_terminate[__clang_call_terminate]+0x12): undefined reference to std::terminate()'
/tmp/cc96g3ay.o: In function __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, gzFile_s*> > >::deallocate(std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, gzFile_s*> >*, unsigned long)': llvm-link:(.text._ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8gzFile_sEEE10deallocateEPSD_m[_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8gzFile_sEEE10deallocateEPSD_m]+0x11): undefined reference to operator delete(void*)'
/tmp/cc96g3ay.o: In function std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, gzFile_s*>::~pair()': llvm-link:(.text._ZNSt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8gzFile_sED2Ev[_ZNSt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8gzFile_sED2Ev]+0x6): undefined reference to std::__cxx11::basic_string<char, std::char_traits, std::allocator >::~basic_string()'
/tmp/cc96g3ay.o: In function trace_info::trace_info(char const*)': llvm-link:(.text._ZN10trace_infoC2EPKc[_ZN10trace_infoC2EPKc]+0x1c): undefined reference to std::allocator::allocator()'
llvm-link:(.text._ZN10trace_infoC2EPKc[_ZN10trace_infoC2EPKc]+0x2d): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&)' llvm-link:(.text._ZN10trace_infoC2EPKc[_ZN10trace_infoC2EPKc]+0x38): undefined reference to std::allocator::~allocator()'
llvm-link:(.text._ZN10trace_infoC2EPKc[_ZN10trace_infoC2EPKc]+0x4d): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string()' llvm-link:(.text._ZN10trace_infoC2EPKc[_ZN10trace_infoC2EPKc]+0x70): undefined reference to std::allocator::~allocator()'
/tmp/cc96g3ay.o: In function std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, gzFile_s*, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, gzFile_s*> > >::at(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)': llvm-link:(.text._ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8gzFile_sSt4lessIS5_ESaISt4pairIKS5_S7_EEE2atERSB_[_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8gzFile_sSt4lessIS5_ESaISt4pairIKS5_S7_EEE2atERSB_]+0x7a): undefined reference to std::__throw_out_of_range(char const*)'
/tmp/cc96g3ay.o: In function std::_Rb_tree_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, gzFile_s*> > std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, gzFile_s*>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, gzFile_s*> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, gzFile_s*> > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, gzFile_s*> >, std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&)': llvm-link:(.text._ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_P8gzFile_sESt10_Select1stISA_ESt4lessIS5_ESaISA_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJRS7_EESL_IJEEEEESt17_Rb_tree_iteratorISA_ESt23_Rb_tree_const_iteratorISA_EDpOT_[_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_P8gzFile_sESt10_Select1stISA_ESt4lessIS5_ESaISA_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJRS7_EESL_IJEEEEESt17_Rb_tree_iteratorISA_ESt23_Rb_tree_const_iteratorISA_EDpOT_]+0xbc): undefined reference to __cxa_begin_catch'
llvm-link:(.text.ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_P8gzFile_sESt10_Select1stISA_ESt4lessIS5_ESaISA_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJRS7_EESL_IJEEEEESt17_Rb_tree_iteratorISA_ESt23_Rb_tree_const_iteratorISA_EDpOT[ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_P8gzFile_sESt10_Select1stISA_ESt4lessIS5_ESaISA_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJRS7_EESL_IJEEEEESt17_Rb_tree_iteratorISA_ESt23_Rb_tree_const_iteratorISA_EDpOT]+0xd2): undefined reference to __cxa_rethrow' llvm-link:(.text._ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_P8gzFile_sESt10_Select1stISA_ESt4lessIS5_ESaISA_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJRS7_EESL_IJEEEEESt17_Rb_tree_iteratorISA_ESt23_Rb_tree_const_iteratorISA_EDpOT_[_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_P8gzFile_sESt10_Select1stISA_ESt4lessIS5_ESaISA_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJRS7_EESL_IJEEEEESt17_Rb_tree_iteratorISA_ESt23_Rb_tree_const_iteratorISA_EDpOT_]+0x114): undefined reference to __cxa_end_catch'
/tmp/cc96g3ay.o: In function std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, gzFile_s*>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, gzFile_s*> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, gzFile_s*> > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, gzFile_s*> >*)': llvm-link:(.text._ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_P8gzFile_sESt10_Select1stISA_ESt4lessIS5_ESaISA_EE14_M_insert_nodeEPSt18_Rb_tree_node_baseSI_PSt13_Rb_tree_nodeISA_E[_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_P8gzFile_sESt10_Select1stISA_ESt4lessIS5_ESaISA_EE14_M_insert_nodeEPSt18_Rb_tree_node_baseSI_PSt13_Rb_tree_nodeISA_E]+0x78): undefined reference to std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)'
/tmp/cc96g3ay.o: In function std::_Rb_tree_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, gzFile_s*> >::operator--()': llvm-link:(.text._ZNSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8gzFile_sEEmmEv[_ZNSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8gzFile_sEEmmEv]+0x13): undefined reference to std::_Rb_tree_decrement(std::_Rb_tree_node_base*)'
/tmp/cc96g3ay.o: In function std::_Rb_tree_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, gzFile_s*> >::operator++()': llvm-link:(.text._ZNSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8gzFile_sEEppEv[_ZNSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8gzFile_sEEppEv]+0x13): undefined reference to std::_Rb_tree_increment(std::_Rb_tree_node_base*)'
/tmp/cc96g3ay.o: In function void std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, gzFile_s*>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, gzFile_s*> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, gzFile_s*> > >::_M_construct_node<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, gzFile_s*> >*, std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&)': llvm-link:(.text._ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_P8gzFile_sESt10_Select1stISA_ESt4lessIS5_ESaISA_EE17_M_construct_nodeIJRKSt21piecewise_construct_tSt5tupleIJRS7_EESL_IJEEEEEvPSt13_Rb_tree_nodeISA_EDpOT_[_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_P8gzFile_sESt10_Select1stISA_ESt4lessIS5_ESaISA_EE17_M_construct_nodeIJRKSt21piecewise_construct_tSt5tupleIJRS7_EESL_IJEEEEEvPSt13_Rb_tree_nodeISA_EDpOT_]+0x77): undefined reference to __cxa_begin_catch'
llvm-link:(.text.ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_P8gzFile_sESt10_Select1stISA_ESt4lessIS5_ESaISA_EE17_M_construct_nodeIJRKSt21piecewise_construct_tSt5tupleIJRS7_EESL_IJEEEEEvPSt13_Rb_tree_nodeISA_EDpOT[ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_P8gzFile_sESt10_Select1stISA_ESt4lessIS5_ESaISA_EE17_M_construct_nodeIJRKSt21piecewise_construct_tSt5tupleIJRS7_EESL_IJEEEEEvPSt13_Rb_tree_nodeISA_EDpOT]+0x8d): undefined reference to __cxa_rethrow' llvm-link:(.text._ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_P8gzFile_sESt10_Select1stISA_ESt4lessIS5_ESaISA_EE17_M_construct_nodeIJRKSt21piecewise_construct_tSt5tupleIJRS7_EESL_IJEEEEEvPSt13_Rb_tree_nodeISA_EDpOT_[_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_P8gzFile_sESt10_Select1stISA_ESt4lessIS5_ESaISA_EE17_M_construct_nodeIJRKSt21piecewise_construct_tSt5tupleIJRS7_EESL_IJEEEEEvPSt13_Rb_tree_nodeISA_EDpOT_]+0x9d): undefined reference to __cxa_end_catch'
/tmp/cc96g3ay.o: In function std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, gzFile_s*>::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, 0ul>(std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&, std::tuple<>&, std::_Index_tuple<0ul>, std::_Index_tuple<>)': llvm-link:(.text._ZNSt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8gzFile_sEC2IJRS6_EJLm0EEJEJEEERSt5tupleIJDpT_EERSC_IJDpT1_EESt12_Index_tupleIJXspT0_EEESL_IJXspT2_EEE[_ZNSt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8gzFile_sEC2IJRS6_EJLm0EEJEJEEERSt5tupleIJDpT_EERSC_IJDpT1_EESt12_Index_tupleIJXspT0_EEESL_IJXspT2_EEE]+0x28): undefined reference to std::__cxx11::basic_string<char, std::char_traits, std::allocator >::basic_string(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&)'
/tmp/cc96g3ay.o: In function __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, gzFile_s*> > >::allocate(unsigned long, void const*)': llvm-link:(.text._ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8gzFile_sEEE8allocateEmPKv[_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8gzFile_sEEE8allocateEmPKv]+0x1f): undefined reference to std::__throw_bad_alloc()'
llvm-link:(.text._ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8gzFile_sEEE8allocateEmPKv[_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8gzFile_sEEE8allocateEmPKv]+0x35): undefined reference to operator new(unsigned long)' /tmp/cc96g3ay.o: In function bool std::operator< <char, std::char_traits, std::allocator >(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&)':
llvm-link:(.text.ZStltIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EESA[ZStltIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EESA]+0x9): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::compare(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const' /tmp/cc96g3ay.o: In function trace_info::~trace_info()':
llvm-link:(.text._ZN10trace_infoD2Ev[_ZN10trace_infoD2Ev]+0x17): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' llvm-link:(.text._ZN10trace_infoD2Ev[_ZN10trace_infoD2Ev]+0x28): undefined reference to std::__cxx11::basic_string<char, std::char_traits, std::allocator >::~basic_string()'
/tmp/cc96g3ay.o:(.eh_frame+0x137): undefined reference to __gxx_personality_v0' /usr/lib/gcc/x86_64-linux-gnu/7/libgcc_eh.a(unwind-dw2-fde-dip.o): In function __register_frame_info_bases.part.6':
(.text+0x1801): undefined reference to pthread_mutex_lock' /usr/lib/gcc/x86_64-linux-gnu/7/libgcc_eh.a(unwind-dw2-fde-dip.o): In function __register_frame_info_table_bases':
(.text+0x1911): undefined reference to pthread_mutex_lock' /usr/lib/gcc/x86_64-linux-gnu/7/libgcc_eh.a(unwind-dw2-fde-dip.o): In function __deregister_frame_info_bases':
(.text+0x19de): undefined reference to pthread_mutex_lock' (.text+0x1a65): undefined reference to pthread_mutex_unlock'
(.text+0x1a8d): undefined reference to pthread_mutex_unlock' /usr/lib/gcc/x86_64-linux-gnu/7/libgcc_eh.a(unwind-dw2-fde-dip.o): In function _Unwind_Find_FDE':
(.text+0x1bc4): undefined reference to pthread_mutex_lock' (.text+0x1c12): undefined reference to pthread_mutex_unlock'
(.text+0x1d21): undefined reference to pthread_mutex_unlock' /usr/lib/gcc/x86_64-linux-gnu/7/libgcc_eh.a(unwind-dw2-fde-dip.o): In function __register_frame_info_bases.part.6':
(.text+0x1834): undefined reference to pthread_mutex_unlock' /usr/lib/gcc/x86_64-linux-gnu/7/libgcc_eh.a(unwind-dw2-fde-dip.o): In function __register_frame_info_table_bases':
(.text+0x1944): undefined reference to `pthread_mutex_unlock'
collect2: error: ld returned 1 exit status
sh: 1: ./triad-instrumented: not found

"/bin/sh: 1: : Permission denied" when run "make"

Hi. How to solve this when I run make under /LLVM-Trace/build after "cmake ..".
Thanks!

mca@ubuntu740:~/LLVM-Tracer/build$ make VERBOSE=1
/usr/bin/cmake -H/home/mca/LLVM-Tracer -B/home/mca/LLVM-Tracer/build --check-build-system CMakeFiles/Makefile.cmake 0
/usr/bin/cmake -E cmake_progress_start /home/mca/LLVM-Tracer/build/CMakeFiles /home/mca/LLVM-Tracer/build/CMakeFiles/progress.marks
make -f CMakeFiles/Makefile2 all
make[1]: Entering directory '/home/mca/LLVM-Tracer/build'
make -f full-trace/CMakeFiles/full_trace.dir/build.make full-trace/CMakeFiles/full_trace.dir/depend
make[2]: Entering directory '/home/mca/LLVM-Tracer/build'
cd /home/mca/LLVM-Tracer/build && /usr/bin/cmake -E cmake_depends "Unix Makefiles" /home/mca/LLVM-Tracer /home/mca/LLVM-Tracer/full-trace /home/mca/LLVM-Tracer/build /home/mca/LLVM-Tracer/build/full-trace /home/mca/LLVM-Tracer/build/full-trace/CMakeFiles/full_trace.dir/DependInfo.cmake --color=
make[2]: Leaving directory '/home/mca/LLVM-Tracer/build'
make -f full-trace/CMakeFiles/full_trace.dir/build.make full-trace/CMakeFiles/full_trace.dir/build
make[2]: Entering directory '/home/mca/LLVM-Tracer/build'
[ 6%] Building CXX object full-trace/CMakeFiles/full_trace.dir/full_trace.cpp.o
cd /home/mca/LLVM-Tracer/build/full-trace && "" -DLLVM_VERSION=34 -D__STDC_CONSTANT_MACROS -D__STDC_LIMIT_MACROS -Dfull_trace_EXPORTS -I/home/mca/clang+llvm-3.4-x86_64-linux-gnu-ubuntu-13.10/include -Wall -W -Wno-unused-parameter -Wwrite-strings -pedantic -Wno-long-long -std=c++11 -fno-rtti -O3 -fPIC -o CMakeFiles/full_trace.dir/full_trace.cpp.o -c /home/mca/LLVM-Tracer/full-trace/full_trace.cpp
/bin/sh: 1: : Permission denied
full-trace/CMakeFiles/full_trace.dir/build.make:62: recipe for target 'full-trace/CMakeFiles/full_trace.dir/full_trace.cpp.o' failed
make[2]: *** [full-trace/CMakeFiles/full_trace.dir/full_trace.cpp.o] Error 127
make[2]: Leaving directory '/home/mca/LLVM-Tracer/build'
CMakeFiles/Makefile2:85: recipe for target 'full-trace/CMakeFiles/full_trace.dir/all' failed
make[1]: *** [full-trace/CMakeFiles/full_trace.dir/all] Error 2
make[1]: Leaving directory '/home/mca/LLVM-Tracer/build'
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2

How to generate LLVM6.0 trace of the main function(C++)?

As I see the example in the playground, the WORKLOAD is top_level, which is a function defined outside the main(), and it run successfully. But when I try to change the WORKLOAD to main, it reports error like this:

test-instrumented: /workspace/LLVM-Tracer/profile-func/trace_logger.cpp:132: logging_status log_or_not(bool, bool, int, char *): Assertion `false && "Returning from within a toplevel function before it was called!"' failed.
Aborted (core dumped)

If I want to generate LLVM trace of the whole main function, what should I do?Or is it possible to make it in a C++ program using LLVM-Tracer 6.0?Did I missed any details?

Thank you very much

Kind regards

Segmentation Fault on all programs.

When trying to execute any program it gives out this error.

Starting to log at inst = 0.
Segmentation fault (core dumped)


It also generates a corrupted dynamic_trace.gz file.

undefined reference to `trace_logger_log_ptr'

when I run the example,I encountered the following error while executing this command:
gcc -fno-inline -o triad-instrumented full.s
/tmp/cc8x6Zy0.o: In function triad': /LLVM-Tracer/example/triad/triad.c:3: undefined reference to trace_logger_log_ptr'
/LLVM-Tracer/example/triad/triad.c:3: undefined reference to trace_logger_log_ptr' /LLVM-Tracer/example/triad/triad.c:3: undefined reference to trace_logger_log_ptr'
/LLVM-Tracer/example/triad/triad.c:3: undefined reference to trace_logger_log_int' /tmp/cc8x6Zy0.o: In function main':
/LLVM-Tracer/example/triad/triad.c:12: undefined reference to `trace_logger_write_labelmap'
collect2: error: ld returned 1 exit status

How to set the LLVM_HOME?

export LLVM_HOME=/path/to/your/llvm/installation

  1. What is "/llvm/installation" example?
  2. Do we have to build "llvm/installation"?
  3. Can you give us the link of step-by-step how to build "llvm/installtion"?

Thanks,
Peter H. Chen

typo in README.md

llvm-link -o full.llvm triad-opt.llvm $TRACER_HOME/profile-func/tracer_logger.llvm

should be:

llvm-link -o full.llvm triad-opt.llvm $TRACER_HOME/profile-func/trace_logger.llvm

Dynamic Trace File Error

I have observed that when I write the inputs (Main function) to the kernel in a different C file the dynamic trace file doesn't consider it. The Dynamic Trace file would just show me the labelmap and not any traces to the kernel. Am I missing something??
I am working on a docker.

Detailed documentation request

I think it would be very useful if there was detailed documentation for general users and for developers. Poking through the code to figure out the reasons behind every method is a little painful 😈

Make Error

I ran the cmake command successfully, but I encountered an error when I ran the make command.

CMAKE Output:
-- The CXX compiler identification is GNU 5.4.0
-- Check for working CXX compiler: /bwfefs/opt/x86_64/gcc/5.4.0/bin/c++
-- Check for working CXX compiler: /bwfefs/opt/x86_64/gcc/5.4.0/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- use LLVM_ROOT : /home/Huimin97/download/LLVM-Tracer/build/lib/llvm-3.4
-- find LLVM-Config : /home/Huimin97/libs/llvm3.4/bin/llvm-config
-- LLVM version : 3.4svn
-- LLVM_LINK found : /home/Huimin97/libs/llvm3.4/bin/llvm-link
-- LLVM_OPT found : /home/Huimin97/libs/llvm3.4/bin/opt
-- LLVM_LLC found : /home/Huimin97/libs/llvm3.4/bin/llc
-- LLVM_COMPILER found : /home/Huimin97/libs/llvm3.4/bin/clang-3.4
-- Found ZLIB: /home/Huimin97/libs/zlib/lib (found suitable version "1.2.11", minimum required is "1.2.10")
-- Found Curses: /usr/lib64/libcurses.so
-- Configuring done
-- Generating done
-- Build files have been written to: /home/Huimin97/download/LLVM-Tracer/build

MAKE Output:
Scanning dependencies of target trace_logger
Scanning dependencies of target get-labeled-stmts
Scanning dependencies of target full_trace
[ 8%] Generating trace_logger.obj.llvm
[ 16%] Building CXX object full-trace/CMakeFiles/full_trace.dir/full_trace.cpp.o
[ 25%] Building CXX object ast-pass/CMakeFiles/get-labeled-stmts.dir/GetLabeledStmts.cpp.o
[ 25%] Built target full_trace
[ 33%] Generating trace_logger.unopt.llvm
[ 41%] Generating trace_logger.llvm
[ 41%] Built target trace_logger
Scanning dependencies of target PROFILE_FUNC
[ 41%] Built target PROFILE_FUNC
Scanning dependencies of target Tracer_triad
[ 50%] Generating triad.obj.llvm
[ 58%] Generating triad.unopt.llvm
Linking CXX executable get-labeled-stmts
[ 66%] Generating triad.llvm
[ 75%] Generating triad-opt.llvm
Error opening '/home/Huimin97/download/LLVM-Tracer/build/full-trace/full_trace.so': /home/Huimin97/download/LLVM-Tracer/build/full-trace/full_trace.so: undefined symbol: _ZNK4llvm12FunctionPass17createPrinterPassERNS_11raw_ostreamERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE
-load request ignored.
opt: Unknown command line argument '-fulltrace'. Try: '/home/Huimin97/libs/llvm3.4/bin/opt -help'
opt: Did you mean '-filetype'?
make[2]: *** [example/triad/triad-opt.llvm] Error 1
make[1]: *** [example/triad/CMakeFiles/Tracer_triad.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
CMakeFiles/get-labeled-stmts.dir/GetLabeledStmts.cpp.o: In function main': GetLabeledStmts.cpp:(.text.startup+0x6e): undefined reference to clang::tooling::ClangTool::ClangTool(clang::tooling::CompilationDatabase const&, llvm::ArrayRef<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >)'
collect2: error: ld returned 1 exit status
make[2]: *** [ast-pass/get-labeled-stmts] Error 1
make[1]: *** [ast-pass/CMakeFiles/get-labeled-stmts.dir/all] Error 2
make: *** [all] Error 2

I don't know how to fix it, and I checked that the file full_trace.so exists.

llvm-link-3.4 error: Invalid value

While running the install script found in the Readme, the error I am getting is:

cd /if21/mp3t/Projects/LLVM-Tracer/build/profile-func && /usr/bin/llvm-link-3.4 /if21/mp3t/Projects/LLVM-Tracer/build/profile-func/trace_logger.obj.llvm -o /if2
1/mp3t/Projects/LLVM-Tracer/build/profile-func/trace_logger.unopt.llvm
/usr/bin/llvm-link-3.4: /if21/mp3t/Projects/LLVM-Tracer/build/profile-func/trace
_logger.obj.llvm: error: Invalid value
/usr/bin/llvm-link-3.4: error loading file '/if21/mp3t/Projects/LLVM-Tracer/buil
d/profile-func/trace_logger.obj.llvm'

One caveat is that it seems that I have LLVM-3.4 installed but I am building with Clang-3.9, does this matter? (I am on a university machine and do not have sysadmin privileges.)

Full verbose output trace of make can be found here

Any ideas on how to approach this?

Labelmap and llvm-link fail

Hi,

I am trying to run some benchmarks with LLVM-Tracer. They use the header file "ap_int.h" and it seems that it is causing a problem when generating the labelmap and when running llvm-link. I am using LLVM and Clang version 3.4.

When generating labelmap, it gives the following error: /usr/lib/llvm-3.4/include/clang/AST/Decl.h:130: llvm::String clang::NamedDecl::getName() const: Assertion 'Name.isIdentifier() && "Name not a simple identifier"' failed. Aborted (core dumped)

Then when running llvm-link it gives some errors that say: undefined reference to 'std::ios_base::Init::Init(). But maybe this is because labelmap failed in the first place.

Here are the two commands I am using:

To generate labelmap:

${TRACER_HOME}/bin/get-labeled-stmts harness.cpp -- -Iinclude -Isrc -Icommon -I/usr/lib/gcc/x86_64-linux-gnu/3.4.6/include -I${LLVM_HOME}/lib/clang/3.4/include

To run LLVM link:

llvm-link-3.4 -o full.llvm harness-opt.llvm ${TRACER_HOME}/profile-func/trace_logger.llvm

I am specifically trying to run rodinia-hls benchmarks after I modified them to run on the CPU: https://github.com/SFU-HiAccel/rodinia-hls

The benchmarks that do not have "ap_int.h" included work well, and when I try to comment out "ap_int.h" then the labelmap will execute correctly but the compilation will give errors of course because of the missing header file, so I believe this header file is causing the problem.

This might be more related to the benchmarks I am using so I understand if you don't have a solution in mind but any suggestion will be helpful. Thanks in advance!

fatal error: llvm/Analysis/LoopInfo.h: No such file or directory

I followed the following steps to install llvm and LLVM-Tracer:
Installing llvm:

  1. svn co http://llvm.org/svn/llvm-project/llvm/tags/RELEASE_34/final llvm
  2. cd llvm/tools
  3. svn co http://llvm.org/svn/llvm-project/cfe/tags/RELEASE_34/final clang
  4. cd ../..
  5. cd llvm/tools/clang/tools
  6. svn co http://llvm.org/svn/llvm-project/clang-tools-extra/tags/RELEASE_34/final extra
  7. cd ../../../..
  8. cd llvm/projects
  9. svn co http://llvm.org/svn/llvm-project/compiler-rt/tags/RELEASE_34/final compiler-rt
  10. cd ../..
  11. mkdir build (in-tree build is not supported)
  12. cd build
  13. cmake -G "Unix Makefiles" ../llvm
  14. make

Installing LLVM-Tracer:

  1. export LLVM_HOME=export LLVM_HOME=/home/mitali/build
  2. git clone https://github.com/ysshao/LLVM-Tracer
  3. cd LLVM-Tracer/
  4. mkdir build/
  5. cd build
  6. cmake ..
  7. make
    error:
    Scanning dependencies of target full_trace
    [ 7%] Building CXX object full-trace/CMakeFiles/full_trace.dir/full_trace.cpp.o
    /home/mitali/LLVM-Tracer/full-trace/full_trace.cpp:4:36: fatal error: llvm/Analysis/LoopInfo.h: No such file or directory
    #include "llvm/Analysis/LoopInfo.h"
    ^
    compilation terminated.
    make[2]: *** [full-trace/CMakeFiles/full_trace.dir/full_trace.cpp.o] Error 1
    make[1]: *** [full-trace/CMakeFiles/full_trace.dir/all] Error 2
    make: *** [all] Error 2

symbol multiply defined!

Hello,
When I am using the following command to link the llvm files (for Triad): /usr/lib/llvm-3.4/bin/llvm-link -o full.llvm triad-opt.llvm ${TRACER_HOME}/build/profile-func/trace_logger.llvm,

I am getting this error:
/usr/lib/llvm-3.4/bin/llvm-link: link error in '/../LLVM-Tracer/build/profile-func/trace_logger.llvm': Linking globals named 'triad': symbol multiply defined!

I have tried it with 'md' benchmark as well and it generated the same error. Any idea, what might be causing this?

Regards.

Cannot make

  • I had to modify CMakefiles, I commented out find_package(ZLIB) and manually set ZLIB lib and include dirs since I installed them from sources.
  • cmake configuration is complete.
  • when I try to make I get this error:
    /data/omran/emerald/llvm_install/bin/llvm-link: /data/omran/emerald/LLVM-Tracer/build/profile-func/trace_logger.obj.llvm:1:1: error: expected top-level entity

error in cmake ..

hi
when i run cmake i faced with below error
masi@orca:~/LLVM-Tracer/build$ cmake ..
-- use LLVM_ROOT : usr/include/llvm-3.4/llvm
-- find LLVM-Config : /usr/bin/llvm-config-3.4
-- LLVM version : 3.4
-- LLVM_LINK found : /usr/bin/llvm-link-3.4
-- LLVM_OPT found : /usr/bin/opt-3.4
-- LLVM_LLC found : /usr/bin/llc-3.4
-- LLVM_COMPILER found : /usr/bin/clang
-- Could NOT find Curses (missing: CURSES_LIBRARY CURSES_INCLUDE_PATH)
CMake Error: The following variables are used in this project, but they are set to NOTFOUND.
Please set them or make sure they are set and tested correctly in the CMake files:
CURSES_CURSES_LIBRARY (ADVANCED)
linked by target "get-labeled-stmts" in directory /home/masi/LLVM-Tracer/ast-pass

-- Configuring incomplete, errors occurred!
See also "/home/masi/LLVM-Tracer/build/CMakeFiles/CMakeOutput.log".

can u help me to solve it?
tnx

Remove the examples/ directory

It contains outdated scripts and CMakefiles and has caused lots of issues for users here. Delete it and replace it with instructions on how to use it with the playground instead.

Modify LLVM tracer to make Fault Injection

Hi Sophia,

This is not an issue. I just want to ask you for help in understanding your code and see if it is possible to modify it to do a dynamic fault injection since you are doing a dynamic trace. I checked the full_trace.cpp source code and I saw that there is a function named "createCallForParameterLine". I wonder if in that function I can modify the register of a particular instruction and inject a wrong value? If so, could you give me a hint on how I can accomplish that?

Best,

make not working

I run the cmake, after that when I tried the make command, I received the following error:

[ 8%] Built target full_trace
[ 33%] Built target trace_logger
[ 33%] Built target PROFILE_FUNC
Scanning dependencies of target get-labeled-stmts
[ 41%] Building CXX object ast-pass/CMakeFiles/get-labeled-stmts.dir/GetLabeledStmts.cpp.o
/home/amir/aladdin/LLVM-Tracer/ast-pass/GetLabeledStmts.cpp:24:27: fatal error: clang/AST/AST.h: No such file or directory
#include "clang/AST/AST.h"
^
compilation terminated.
make[2]: *** [ast-pass/CMakeFiles/get-labeled-stmts.dir/GetLabeledStmts.cpp.o] Error 1
make[1]: *** [ast-pass/CMakeFiles/get-labeled-stmts.dir/all] Error 2
make: *** [all] Error 2

how can I solve this issue?
I'm using llvm-clang 3.4 and my gcc and g++ are 4.8
Thanks!

LLVM 3.5 auto installation

I would like to install the LLVM-Tracer tool and, if it is possible, I also would like that cmake installs LLVM3.5.

For this reason I performed the following commands:

$ mkdir llvm3.5Auto
$ git clone https://github.com/ysshao/LLVM-Tracer
$ cd LLVM-Tracer
$ mkdir build                                    
$ cd build
$ cmake .. -DLLVM_ROOT=/local_disk/cornagli/llvmTracer/llvm3.5Auto -DLLVM_RECOMMEND_VERSION="3.5" -DAUTOINSTALL=TRUE

At this point I obtained the following error:

-- The CXX compiler identification is GNU 5.4.0
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- use LLVM_ROOT : /local_disk/cornagli/llvmTracer/llvm3.5Auto
-- find LLVM-Config : /usr/bin/llvm-config
CMake Error at cmake-scripts/AutoInstaller/installLLVM.cmake:39 (if):
  if given arguments:

    "VERSION_LESS" "1.22"

  Unknown arguments specified
Call Stack (most recent call first):
  cmake-scripts/AutoInstaller/installLLVM.cmake:95 (find_xz)
  cmake-scripts/AutoInstaller/installLLVM.cmake:261 (configure_autoinstall)
  cmake-scripts/LLVMFinder/findLLVM.cmake:63 (autoinstall_llvm)
  cmake-scripts/LLVMFinder/findLLVM.cmake:133 (CHECK_LLVM_CONFIG_VERSION_OR_AUTOINSTALL)
  cmake-scripts/findAndSetLLVM.cmake:13 (FIND_LLVM)
  CMakeLists.txt:8 (include)


-- Configuring incomplete, errors occurred!
See also "/local_disk/cornagli/llvmTracer/LLVM-Tracer/build/CMakeFiles/CMakeOutput.log".

Is it possible to request to auto install LLVM version 3.5?
Thanks.

Make command fails.

I am currently working on Ubuntu 18.04 , clang v3.4 and gcc v4.8

I am able to run CMAKE command successfully, however when I run the run the make command I get the following errors:

CMAKE Output:
" cmake .. -DCMAKE_CXX_COMPILER:FILEPATH=/usr/bin/g++-4.8
-- use LLVM_ROOT : /home/potharaju.a/opt/llvm3.4
-- find LLVM-Config : /home/potharaju.a/opt/llvm3.4/bin/llvm-config
-- LLVM version : 3.4svn
-- LLVM_LINK found : /home/potharaju.a/opt/llvm3.4/bin/llvm-link
-- LLVM_OPT found : /home/potharaju.a/opt/llvm3.4/bin/opt
-- LLVM_LLC found : /home/potharaju.a/opt/llvm3.4/bin/llc
-- LLVM_COMPILER found : /home/potharaju.a/opt/llvm3.4/bin/clang-3.4
-- Configuring done
-- Generating done
-- Build files have been written to: /home/potharaju.a/LLVM-Tracer/build"

MAKE Output:
"[ 14%] Built target full_trace
[ 35%] Built target trace_logger
[ 35%] Built target PROFILE_FUNC
[ 50%] Built target get-labeled-stmts
[ 57%] Generating triad-instrumented
/home/potharaju.a/LLVM-Tracer/build/example/triad/full.s: Assembler messages:
/home/potharaju.a/LLVM-Tracer/build/example/triad/full.s:3613: Error: no such instruction: vmovsdz %xmm0,56(%rsp)' /home/potharaju.a/LLVM-Tracer/build/example/triad/full.s:3639: Error: no such instruction: vmovsdz 56(%rsp),%xmm0'
/home/potharaju.a/LLVM-Tracer/build/example/triad/full.s:3656: Error: no such instruction: vmovsdz 56(%rsp),%xmm0' /home/potharaju.a/LLVM-Tracer/build/example/triad/full.s:3668: Error: no such instruction: vmovsdz 56(%rsp),%xmm0'
example/triad/CMakeFiles/Tracer_triad.dir/build.make:60: recipe for target 'example/triad/triad-instrumented' failed
make[2]: *** [example/triad/triad-instrumented] Error 1
CMakeFiles/Makefile2:303: recipe for target 'example/triad/CMakeFiles/Tracer_triad.dir/all' failed
make[1]: *** [example/triad/CMakeFiles/Tracer_triad.dir/all] Error 2
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2

"

I have added -no_pie to the LLVMC_FLAGS in the LLVM-TRACER/cmake-scripts/buildBitCode.cmake file however the same problem remain.

I am getting the same error while running the final command:
'python llvm_compile.py $TRACER_HOME/example/triad triad'
while using the docker image

make error

Hello, I have some error when I build LLVM-Tracer.
Do you have any idea to solve this?
Thanks.

/usr/bin/x86_64-linux-gnu-ld: /tmp/ccMIYvHB.o: relocation R_X86_64_32S against `.rodata' can not be used when making a PIE object; recompile with -fPIC
/usr/bin/x86_64-linux-gnu-ld: final link failed: Nonrepresentable section on output
collect2: error: ld returned 1 exit status
example/triad/CMakeFiles/Tracer_triad.dir/build.make:60: recipe for target 'example/triad/triad-instrumented' failed
make[2]: *** [example/triad/triad-instrumented] Error 1
CMakeFiles/Makefile2:303: recipe for target 'example/triad/CMakeFiles/Tracer_triad.dir/all' failed
make[1]: *** [example/triad/CMakeFiles/Tracer_triad.dir/all] Error 2
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2

Can't get a constant or global slot for this (Help wanted)

I'm attempting to run a rather complex program and am unable to obtain a trace using LLVM-Tracer. Would like to know how to modify my code/ or the tracer in order to get it to work with gem5-aladdin.

The error I am receiving is:

SlotTracker.h:331: int SlotTracker::getLocalSlot(const llvm::Value*): 
Assertion '!isa<Constant>(V) && "Can't get a constant or global slot with this!"' failed.

I've ruled the issue down to something with the following C code:

COLrec deserializeCOLrec(FILE* os) {
    char line[256];
    int item = 0;
    COLrec c;
    size_t *data;
    while (fgets(line, sizeof(line), os) != NULL && item < 23) {
        if (line[0] == '#')
            continue;
        switch (item){
            case 0: c.id = deserializeStr(line); break;
            case 1: c.width = deserializeUint(line); break;
            ... /* Elided some code for brevity */
            case 17:
                fseek(os, -strlen(line), SEEK_CUR);
                c.heap = deserializeHeap(os);
                break;
            default:
                break; // DONE
        }
        item++;
    }
    return c;
}

The associated llvm IR for the entry block is as follows:

; Function Attrs: nounwind uwtable
define void @deserializeCOLrec(%struct.COLrec* noalias nocapture sret %agg.result, %struct._IO_FILE* %os) #0 {
  %line = alloca [256 x i8], align 16
  %c.sroa.21 = alloca [3 x i8], align 1
  %c.sroa.28 = alloca %struct.Heap, align 8
 ; PROBLEM LINE HERE vv
  %1 = alloca %struct.Heap, align 8
  call void @llvm.dbg.value(metadata !{%struct._IO_FILE* %os}, i64 0, metadata !334), !dbg !692
  %2 = getelementptr inbounds [256 x i8]* %line, i64 0, i64 0, !dbg !693
  call void @llvm.lifetime.start(i64 256, i8* %2) #5, !dbg !693
  call void @llvm.dbg.declare(metadata !{[256 x i8]* %line}, metadata !335), !dbg !693
  call void @llvm.dbg.value(metadata !13, i64 0, metadata !336), !dbg !694
  %3 = getelementptr inbounds [3 x i8]* %c.sroa.21, i64 0, i64 0, !dbg !695
  call void @llvm.lifetime.start(i64 3, i8* %3), !dbg !695
  %4 = bitcast %struct.Heap* %c.sroa.28 to i8*, !dbg !695
  call void @llvm.lifetime.start(i64 56, i8* %4), !dbg !695
  call void @llvm.dbg.declare(metadata !696, metadata !337), !dbg !695
  %5 = bitcast %struct.Heap* %1 to i8*, !dbg !697
  br label %.outer, !dbg !700

[EDIT] I should add that this code is simply part of the setup for my benchmark, it's not actually part of the section I've highlighted using the WORKLOAD variable.

No dynamic_trace.gz generated while running *-instrumented

I am using LLVM-Tracer 6.0 ( not docker container ), and I have successfully compiled with this makefile:
makefile.txt

but when I run the test-instrumented, there is no dynamic_trace.gz file that should have been generated.

here is the original file bfs.cpp and its input file:
bfs&input file.zip

Are there any problems with my Makefile or sth else? I wonder why there is no 'dynamic_trace.gz' out.

Thank you very much!

LLVM-Tracer/bin/get-labeled-stmts: Command not found

Hi,

I tried to run example in playground.
Before I ran the example, I built LLVM Tracer by following the steps in README.md
圖片
When I ran the example in playground, here is the error message I met.
圖片

When I built LLVM Tracer, I didn't have any error message.
However, there is not bin directory in LLVM-Tracer.
How could I solve it?
Thanks!

void Tracer::handleInstructionResult(llvm::Instruction*, llvm::Instruction*, InstEnv*): Assertion `false && "Return instruction is terminator...\n"' failed.

Hello, could you help me with this issue?When I was generating opt.llvm, I met a mistake. Here are the commands I used and the error log.
root@5b6be5e4a8ba:/workspace/LLVM-Tracer/work# make
clang -g -O1 -S -static -emit-llvm -o main.llvm main.cpp
opt -S -load=/workspace/LLVM-Tracer/lib/full_trace.so -fulltrace main.llvm -o main-opt.llvm
opt: /workspace/LLVM-Tracer/full-trace/full_trace.cpp:939: void Tracer::handleInstructionResult(llvm::Instruction*, llvm::Instruction*, InstEnv*): Assertion `false && "Return instruction is terminator...\n"' failed.
0 opt 0x00000000018519d8 llvm::sys::PrintStackTrace(_IO_FILE*) + 53
1 opt 0x0000000001851c68
2 opt 0x0000000001851631
3 libpthread.so.0 0x00007efd87f1b390
4 libc.so.6 0x00007efd872d4428 gsignal + 56
5 libc.so.6 0x00007efd872d602a abort + 362
6 libc.so.6 0x00007efd872ccbd7
7 libc.so.6 0x00007efd872ccc82
8 full_trace.so 0x00007efd870945b7
9 full_trace.so 0x00007efd870949e1 Tracer::runOnBasicBlock(llvm::BasicBlock&) + 1057
10 full_trace.so 0x00007efd87092cf0 Tracer::runOnFunction(llvm::Function&) + 208
11 opt 0x0000000001716004 llvm::FPPassManager::runOnFunction(llvm::Function&) + 330
12 opt 0x000000000171617a llvm::FPPassManager::runOnModule(llvm::Module&) + 120
13 opt 0x000000000171647a
14 opt 0x0000000001716972 llvm::legacy::PassManagerImpl::run(llvm::Module&) + 262
15 opt 0x0000000001716b4b llvm::legacy::PassManager::run(llvm::Module&) + 39
16 opt 0x00000000008d2bc8 main + 5804
17 libc.so.6 0x00007efd872bf830 __libc_start_main + 240
18 opt 0x00000000008c4299 _start + 41
Stack dump:
0. Program arguments: opt -S -load=/workspace/LLVM-Tracer/lib/full_trace.so -fulltrace main.llvm -o main-opt.llvm

  1. Running pass 'Function Pass Manager' on module 'main.llvm'.
  2. Running pass 'Add full Tracing Instrumentation for Aladdin' on function '@ main'
    Makefile:34: recipe for target 'main-opt.llvm' failed
    make: *** [main-opt.llvm] Aborted (core dumped)

error during make

I had this error during make, can you help me figure out the problem??

[ 14%] Built target full_trace
[ 35%] Built target trace_logger
[ 35%] Built target PROFILE_FUNC
[ 42%] Linking CXX executable get-labeled-stmts
CMakeFiles/get-labeled-stmts.dir/GetLabeledStmts.cpp.o: In function main': GetLabeledStmts.cpp:(.text.startup+0x80): undefined reference to clang::tooling::ClangTool::ClangTool(clang::tooling::CompilationDatabase const&, llvm::ArrayRef<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >)'
collect2: error: ld returned 1 exit status
ast-pass/CMakeFiles/get-labeled-stmts.dir/build.make:96: recipe for target 'ast-pass/get-labeled-stmts' failed
make[2]: *** [ast-pass/get-labeled-stmts] Error 1
CMakeFiles/Makefile2:228: recipe for target 'ast-pass/CMakeFiles/get-labeled-stmts.dir/all' failed
make[1]: *** [ast-pass/CMakeFiles/get-labeled-stmts.dir/all] Error 2
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2

Thank you!

Project doesn't compile with LLVM 10

It's a large jump from the last version it supported so just putting this here while I am trying to fix things incrementally. If anyone has a newer port this would be greatly appreciated

Not able to build on macOS Sierra in spite of having the clang 3.4 toolchain.

I did get the clang 3.4 from http://releases.llvm.org/3.4/clang+llvm-3.4-x86_64-apple-darwin10.9.tar.gz and set LLVM_HOME to this version after extraction. I am getting Undefined symbols while linking.
6 warnings generated.
[ 14%] Linking CXX shared library full_trace.dylib
Undefined symbols for architecture x86_64:
"llvm::BasicBlock::getFirstInsertionPt()", referenced from:
Tracer::runOnBasicBlock(llvm::BasicBlock&) in full_trace.cpp.o
Tracer::handlePhiNodes(llvm::BasicBlock*, InstEnv*) in full_trace.cpp.o
LabelMapHandler::runOnModule(llvm::Module&) in full_trace.cpp.o
...
Please see the full log file - make.log.txt. I did try to get cmake install LLVM and also tried to explicitly set PATH, LD_LIBRARY_PATH, but I end up with the same error. Is there anything else to be done to get this to build on macOS Sierra? Any ideas will be greatly appreciated.

Thanks,
Nalini.

Can't build the project

Hi I am trying to install LLVM-Tracer on CentOS 8 machine. But when I try to build it it fails with following output:

[ 14%] Built target full_trace [ 35%] Built target trace_logger [ 35%] Built target PROFILE_FUNC [ 42%] Linking CXX executable get-labeled-stmts /home/atanu/installs/llvm-6.0.1/lib/libclangFrontend.a(CompilerInvocation.cpp.o): In functionsetPGOUseInstrumentor(clang::CodeGenOptions&, llvm::Twine const&)':
/home/atanu/installers/llvm-project-llvmorg-6.0.1/clang/lib/Frontend/CompilerInvocation.cpp:420: undefined reference to llvm::IndexedInstrProfReader::create(llvm::Twine const&)' /home/atanu/installs/llvm-6.0.1/lib/libLLVMCore.a(AsmWriter.cpp.o): In function (anonymous namespace)::MDFieldPrinter::printTag(llvm::DINode const*)':
/home/atanu/installers/llvm-project-llvmorg-6.0.1/llvm/lib/IR/AsmWriter.cpp:1485: undefined reference to llvm::dwarf::TagString(unsigned int)' /home/atanu/installs/llvm-6.0.1/lib/libLLVMCore.a(AsmWriter.cpp.o): In function (anonymous namespace)::MDFieldPrinter::printMacinfoType(llvm::DIMacroNode const*)':
/home/atanu/installers/llvm-project-llvmorg-6.0.1/llvm/lib/IR/AsmWriter.cpp:1494: undefined reference to llvm::dwarf::MacinfoString(unsigned int)' /home/atanu/installs/llvm-6.0.1/lib/libLLVMCore.a(AsmWriter.cpp.o): In function writeDIBasicType(llvm::raw_ostream&, llvm::DIBasicType const*, (anonymous namespace)::TypePrinting*, llvm::SlotTracker*, llvm::Module const*)':
/home/atanu/installers/llvm-project-llvmorg-6.0.1/llvm/lib/IR/AsmWriter.cpp:1650: undefined reference to llvm::dwarf::AttributeEncodingString(unsigned int)' /home/atanu/installs/llvm-6.0.1/lib/libLLVMCore.a(AsmWriter.cpp.o): In function writeDICompositeType(llvm::raw_ostream&, llvm::DICompositeType const*, (anonymous namespace)::TypePrinting*, llvm::SlotTracker*, llvm::Module const*)':
/home/atanu/installers/llvm-project-llvmorg-6.0.1/llvm/lib/IR/AsmWriter.cpp:1694: undefined reference to llvm::dwarf::LanguageString(unsigned int)' /home/atanu/installs/llvm-6.0.1/lib/libLLVMCore.a(AsmWriter.cpp.o): In function writeDISubroutineType(llvm::raw_ostream&, llvm::DISubroutineType const*, (anonymous namespace)::TypePrinting*, llvm::SlotTracker*, llvm::Module const*)':
/home/atanu/installers/llvm-project-llvmorg-6.0.1/llvm/lib/IR/AsmWriter.cpp:1708: undefined reference to llvm::dwarf::ConventionString(unsigned int)' /home/atanu/installs/llvm-6.0.1/lib/libLLVMCore.a(AsmWriter.cpp.o): In function writeDICompileUnit(llvm::raw_ostream&, llvm::DICompileUnit const*, (anonymous namespace)::TypePrinting*, llvm::SlotTracker*, llvm::Module const*)':
/home/atanu/installers/llvm-project-llvmorg-6.0.1/llvm/lib/IR/AsmWriter.cpp:1732: undefined reference to llvm::dwarf::LanguageString(unsigned int)' /home/atanu/installs/llvm-6.0.1/lib/libLLVMCore.a(AsmWriter.cpp.o): In function writeDISubprogram(llvm::raw_ostream&, llvm::DISubprogram const*, (anonymous namespace)::TypePrinting*, llvm::SlotTracker*, llvm::Module const*)':
/home/atanu/installers/llvm-project-llvmorg-6.0.1/llvm/lib/IR/AsmWriter.cpp:1770: undefined reference to llvm::dwarf::VirtualityString(unsigned int)' /home/atanu/installs/llvm-6.0.1/lib/libLLVMCore.a(AsmWriter.cpp.o): In function writeDIExpression(llvm::raw_ostream&, llvm::DIExpression const*, (anonymous namespace)::TypePrinting*, llvm::SlotTracker*, llvm::Module const*)':
/home/atanu/installers/llvm-project-llvmorg-6.0.1/llvm/lib/IR/AsmWriter.cpp:1928: undefined reference to llvm::dwarf::OperationEncodingString(unsigned int)' collect2: error: ld returned 1 exit status make[2]: *** [ast-pass/CMakeFiles/get-labeled-stmts.dir/build.make:86: ast-pass/get-labeled-stmts] Error 1 make[1]: *** [CMakeFiles/Makefile2:258: ast-pass/CMakeFiles/get-labeled-stmts.dir/all] Error 2 make: *** [Makefile:141: all] Error 2

The output of cmake .. command is as follows:

`- use LLVM_ROOT : /home/atanu/installs/llvm-6.0.1
-- find LLVM-Config : /home/atanu/installs/llvm-6.0.1/bin/llvm-config
-- LLVM version : 6.0.1
CMake Warning (dev) at cmake-scripts/LLVMFinder/loadLLVMModule.cmake:35 (find_package):
Policy CMP0074 is not set: find_package uses _ROOT variables.
Run "cmake --help-policy CMP0074" for policy details. Use the cmake_policy
command to set the policy and suppress this warning.

CMake variable LLVM_ROOT is set to:

/home/atanu/installs/llvm-6.0.1

For compatibility, CMake is ignoring the variable.
Call Stack (most recent call first):
cmake-scripts/LLVMFinder/findLLVM.cmake:95 (loadLLVMModule)
cmake-scripts/LLVMFinder/findLLVM.cmake:135 (LOAD_LLVM_SETTINGS)
cmake-scripts/findAndSetLLVM.cmake:13 (FIND_LLVM)
CMakeLists.txt:8 (include)
This warning is for project developers. Use -Wno-dev to suppress it.

llvm-config: unknown component name: jit
-- LLVM_LINK found : /home/atanu/installs/llvm-6.0.1/bin/llvm-link
-- LLVM_OPT found : /home/atanu/installs/llvm-6.0.1/bin/opt
-- LLVM_LLC found : /home/atanu/installs/llvm-6.0.1/bin/llc
-- LLVM_COMPILER found : /home/atanu/installs/llvm-6.0.1/bin/clang-6.0
-- Found Curses: /usr/lib64/libcurses.so
-- Configuring done
-- Generating done
-- Build files have been written to: /home/atanu/work/LLVM-Tracer/build
`
The GCC version is 8.0.1

error in running triad example (from docker)

Hello, could you help me with this issue? I pulled the docker image and tried to run the triad test until step e, I put -no-pie into the command but got this error:

root@bddd47a827c8:/workspace/LLVM-Tracer/example/triad# gcc -fno-inline -o triad-instrumented full.s -no-pie
/tmp/ccnhs4ab.o: In function create_trace(char const*)': llvm-link:(.text+0x3867): undefined reference to operator new(unsigned long)'
llvm-link:(.text+0x38a0): undefined reference to operator delete(void*)' /tmp/ccnhs4ab.o: In function write_labelmap()':
llvm-link:(.text+0x38f8): undefined reference to gzwrite' llvm-link:(.text+0x390e): undefined reference to std::__cxx11::basic_string<char, std::char_traits, std::allocator >::c_str() const'
llvm-link:(.text+0x391b): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::length() const' llvm-link:(.text+0x392c): undefined reference to gzwrite'
/tmp/ccnhs4ab.o: In function open_trace_file()': llvm-link:(.text+0x39ef): undefined reference to std::__cxx11::basic_string<char, std::char_traits, std::allocator >::c_str() const'
llvm-link:(.text+0x3a01): undefined reference to gzopen' /tmp/ccnhs4ab.o: In function fin_main()':
llvm-link:(.text+0x3b7e): undefined reference to gzclose' /tmp/ccnhs4ab.o: In function fin_toplevel()':
llvm-link:(.text+0x3be8): undefined reference to operator delete(void*)' /tmp/ccnhs4ab.o: In function llvmtracer_set_trace_name':
llvm-link:(.text+0x3c2f): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator=(char const*)' /tmp/ccnhs4ab.o: In function log_or_not(bool, bool, int, char*)':
llvm-link:(.text+0x3caf): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::length() const' llvm-link:(.text+0x3cf1): undefined reference to std::__cxx11::basic_string<char, std::char_traits, std::allocator >::c_str() const'
/tmp/ccnhs4ab.o: In function trace_logger_update_status': llvm-link:(.text+0x3ec3): undefined reference to std::__cxx11::basic_string<char, std::char_traits, std::allocator >::c_str() const'
llvm-link:(.text+0x3f18): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::c_str() const' llvm-link:(.text+0x3f64): undefined reference to std::__cxx11::basic_string<char, std::char_traits, std::allocator >::length() const'
llvm-link:(.text+0x3f90): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::operator=(char const*)' llvm-link:(.text+0x3fc2): undefined reference to std::__cxx11::basic_string<char, std::char_traits, std::allocator >::operator=(char const*)'
/tmp/ccnhs4ab.o: In function trace_logger_log_entry': llvm-link:(.text+0x4075): undefined reference to gzprintf'
/tmp/ccnhs4ab.o: In function trace_logger_log0': llvm-link:(.text+0x4108): undefined reference to gzprintf'
/tmp/ccnhs4ab.o: In function trace_logger_log_int': llvm-link:(.text+0x41bc): undefined reference to gzprintf'
llvm-link:(.text+0x41e1): undefined reference to gzprintf' llvm-link:(.text+0x4209): undefined reference to gzprintf'
/tmp/ccnhs4ab.o:llvm-link:(.text+0x422d): more undefined references to gzprintf' follow /tmp/ccnhs4ab.o: In function write_labelmap()':
llvm-link:(.text+0x3949): undefined reference to gzwrite' /tmp/ccnhs4ab.o: In function trace_logger_register_labelmap':
llvm-link:(.text+0x3aa3): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::assign(char const*, unsigned long)' /tmp/ccnhs4ab.o: In function __cxx_global_var_init.1':
llvm-link:(.text.startup+0x3c): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string()' /tmp/ccnhs4ab.o: In function __dtor__Z12labelmap_strB5cxx11':
llvm-link:(.text.startup+0x5d): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' /tmp/ccnhs4ab.o: In function __clang_call_terminate':
llvm-link:(.text.__clang_call_terminate[__clang_call_terminate]+0x9): undefined reference to __cxa_begin_catch' llvm-link:(.text.__clang_call_terminate[__clang_call_terminate]+0x12): undefined reference to std::terminate()'
/tmp/ccnhs4ab.o: In function __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, gzFile_s*> > >::deallocate(std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, gzFile_s*> >*, unsigned long)': llvm-link:(.text._ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8gzFile_sEEE10deallocateEPSD_m[_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8gzFile_sEEE10deallocateEPSD_m]+0x11): undefined reference to operator delete(void*)'
/tmp/ccnhs4ab.o: In function std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, gzFile_s*>::~pair()': llvm-link:(.text._ZNSt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8gzFile_sED2Ev[_ZNSt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8gzFile_sED2Ev]+0x6): undefined reference to std::__cxx11::basic_string<char, std::char_traits, std::allocator >::~basic_string()'
/tmp/ccnhs4ab.o: In function trace_info::trace_info(char const*)': llvm-link:(.text._ZN10trace_infoC2EPKc[_ZN10trace_infoC2EPKc]+0x1c): undefined reference to std::allocator::allocator()'
llvm-link:(.text._ZN10trace_infoC2EPKc[_ZN10trace_infoC2EPKc]+0x2d): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string(char const*, std::allocator<char> const&)' llvm-link:(.text._ZN10trace_infoC2EPKc[_ZN10trace_infoC2EPKc]+0x38): undefined reference to std::allocator::~allocator()'
llvm-link:(.text._ZN10trace_infoC2EPKc[_ZN10trace_infoC2EPKc]+0x4d): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::basic_string()' llvm-link:(.text._ZN10trace_infoC2EPKc[_ZN10trace_infoC2EPKc]+0x70): undefined reference to std::allocator::~allocator()'
/tmp/ccnhs4ab.o: In function std::map<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, gzFile_s*, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, gzFile_s*> > >::at(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)': llvm-link:(.text._ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8gzFile_sSt4lessIS5_ESaISt4pairIKS5_S7_EEE2atERSB_[_ZNSt3mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8gzFile_sSt4lessIS5_ESaISt4pairIKS5_S7_EEE2atERSB_]+0x7a): undefined reference to std::__throw_out_of_range(char const*)'
/tmp/ccnhs4ab.o: In function std::_Rb_tree_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, gzFile_s*> > std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, gzFile_s*>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, gzFile_s*> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, gzFile_s*> > >::_M_emplace_hint_unique<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::_Rb_tree_const_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, gzFile_s*> >, std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&)': llvm-link:(.text._ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_P8gzFile_sESt10_Select1stISA_ESt4lessIS5_ESaISA_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJRS7_EESL_IJEEEEESt17_Rb_tree_iteratorISA_ESt23_Rb_tree_const_iteratorISA_EDpOT_[_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_P8gzFile_sESt10_Select1stISA_ESt4lessIS5_ESaISA_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJRS7_EESL_IJEEEEESt17_Rb_tree_iteratorISA_ESt23_Rb_tree_const_iteratorISA_EDpOT_]+0xbc): undefined reference to __cxa_begin_catch'
llvm-link:(.text.ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_P8gzFile_sESt10_Select1stISA_ESt4lessIS5_ESaISA_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJRS7_EESL_IJEEEEESt17_Rb_tree_iteratorISA_ESt23_Rb_tree_const_iteratorISA_EDpOT[ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_P8gzFile_sESt10_Select1stISA_ESt4lessIS5_ESaISA_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJRS7_EESL_IJEEEEESt17_Rb_tree_iteratorISA_ESt23_Rb_tree_const_iteratorISA_EDpOT]+0xd2): undefined reference to __cxa_rethrow' llvm-link:(.text._ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_P8gzFile_sESt10_Select1stISA_ESt4lessIS5_ESaISA_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJRS7_EESL_IJEEEEESt17_Rb_tree_iteratorISA_ESt23_Rb_tree_const_iteratorISA_EDpOT_[_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_P8gzFile_sESt10_Select1stISA_ESt4lessIS5_ESaISA_EE22_M_emplace_hint_uniqueIJRKSt21piecewise_construct_tSt5tupleIJRS7_EESL_IJEEEEESt17_Rb_tree_iteratorISA_ESt23_Rb_tree_const_iteratorISA_EDpOT_]+0x114): undefined reference to __cxa_end_catch'
/tmp/ccnhs4ab.o: In function std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, gzFile_s*>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, gzFile_s*> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, gzFile_s*> > >::_M_insert_node(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, gzFile_s*> >*)': llvm-link:(.text._ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_P8gzFile_sESt10_Select1stISA_ESt4lessIS5_ESaISA_EE14_M_insert_nodeEPSt18_Rb_tree_node_baseSI_PSt13_Rb_tree_nodeISA_E[_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_P8gzFile_sESt10_Select1stISA_ESt4lessIS5_ESaISA_EE14_M_insert_nodeEPSt18_Rb_tree_node_baseSI_PSt13_Rb_tree_nodeISA_E]+0x78): undefined reference to std::_Rb_tree_insert_and_rebalance(bool, std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::_Rb_tree_node_base&)'
/tmp/ccnhs4ab.o: In function std::_Rb_tree_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, gzFile_s*> >::operator--()': llvm-link:(.text._ZNSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8gzFile_sEEmmEv[_ZNSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8gzFile_sEEmmEv]+0x13): undefined reference to std::_Rb_tree_decrement(std::_Rb_tree_node_base*)'
/tmp/ccnhs4ab.o: In function std::_Rb_tree_iterator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, gzFile_s*> >::operator++()': llvm-link:(.text._ZNSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8gzFile_sEEppEv[_ZNSt17_Rb_tree_iteratorISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8gzFile_sEEppEv]+0x13): undefined reference to std::_Rb_tree_increment(std::_Rb_tree_node_base*)'
/tmp/ccnhs4ab.o: In function void std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, gzFile_s*>, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, gzFile_s*> >, std::less<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, gzFile_s*> > >::_M_construct_node<std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>, std::tuple<> >(std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, gzFile_s*> >*, std::piecewise_construct_t const&, std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&&, std::tuple<>&&)': llvm-link:(.text._ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_P8gzFile_sESt10_Select1stISA_ESt4lessIS5_ESaISA_EE17_M_construct_nodeIJRKSt21piecewise_construct_tSt5tupleIJRS7_EESL_IJEEEEEvPSt13_Rb_tree_nodeISA_EDpOT_[_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_P8gzFile_sESt10_Select1stISA_ESt4lessIS5_ESaISA_EE17_M_construct_nodeIJRKSt21piecewise_construct_tSt5tupleIJRS7_EESL_IJEEEEEvPSt13_Rb_tree_nodeISA_EDpOT_]+0x77): undefined reference to __cxa_begin_catch'
llvm-link:(.text.ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_P8gzFile_sESt10_Select1stISA_ESt4lessIS5_ESaISA_EE17_M_construct_nodeIJRKSt21piecewise_construct_tSt5tupleIJRS7_EESL_IJEEEEEvPSt13_Rb_tree_nodeISA_EDpOT[ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_P8gzFile_sESt10_Select1stISA_ESt4lessIS5_ESaISA_EE17_M_construct_nodeIJRKSt21piecewise_construct_tSt5tupleIJRS7_EESL_IJEEEEEvPSt13_Rb_tree_nodeISA_EDpOT]+0x8d): undefined reference to __cxa_rethrow' llvm-link:(.text._ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_P8gzFile_sESt10_Select1stISA_ESt4lessIS5_ESaISA_EE17_M_construct_nodeIJRKSt21piecewise_construct_tSt5tupleIJRS7_EESL_IJEEEEEvPSt13_Rb_tree_nodeISA_EDpOT_[_ZNSt8_Rb_treeINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_P8gzFile_sESt10_Select1stISA_ESt4lessIS5_ESaISA_EE17_M_construct_nodeIJRKSt21piecewise_construct_tSt5tupleIJRS7_EESL_IJEEEEEvPSt13_Rb_tree_nodeISA_EDpOT_]+0x9d): undefined reference to __cxa_end_catch'
/tmp/ccnhs4ab.o: In function std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, gzFile_s*>::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, 0ul>(std::tuple<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&>&, std::tuple<>&, std::_Index_tuple<0ul>, std::_Index_tuple<>)': llvm-link:(.text._ZNSt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8gzFile_sEC2IJRS6_EJLm0EEJEJEEERSt5tupleIJDpT_EERSC_IJDpT1_EESt12_Index_tupleIJXspT0_EEESL_IJXspT2_EEE[_ZNSt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8gzFile_sEC2IJRS6_EJLm0EEJEJEEERSt5tupleIJDpT_EERSC_IJDpT1_EESt12_Index_tupleIJXspT0_EEESL_IJXspT2_EEE]+0x28): undefined reference to std::__cxx11::basic_string<char, std::char_traits, std::allocator >::basic_string(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&)'
/tmp/ccnhs4ab.o: In function __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const, gzFile_s*> > >::allocate(unsigned long, void const*)': llvm-link:(.text._ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8gzFile_sEEE8allocateEmPKv[_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8gzFile_sEEE8allocateEmPKv]+0x1f): undefined reference to std::__throw_bad_alloc()'
llvm-link:(.text._ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8gzFile_sEEE8allocateEmPKv[_ZN9__gnu_cxx13new_allocatorISt13_Rb_tree_nodeISt4pairIKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEP8gzFile_sEEE8allocateEmPKv]+0x35): undefined reference to operator new(unsigned long)' /tmp/ccnhs4ab.o: In function bool std::operator< <char, std::char_traits, std::allocator >(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&)':
llvm-link:(.text.ZStltIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EESA[ZStltIcSt11char_traitsIcESaIcEEbRKNSt7__cxx1112basic_stringIT_T0_T1_EESA]+0x9): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::compare(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const' /tmp/ccnhs4ab.o: In function trace_info::~trace_info()':
llvm-link:(.text._ZN10trace_infoD2Ev[_ZN10trace_infoD2Ev]+0x17): undefined reference to std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()' llvm-link:(.text._ZN10trace_infoD2Ev[_ZN10trace_infoD2Ev]+0x28): undefined reference to std::__cxx11::basic_string<char, std::char_traits, std::allocator >::~basic_string()'
/tmp/ccnhs4ab.o:(.eh_frame+0x137): undefined reference to `__gxx_personality_v0'
collect2: error: ld returned 1 exit status

Dynamic_trace.gz generated error while running make run-trace? (from docker)

I encountered the following error while executing the instruction:
What is generated is a corrupted dynamic_trace.gz file.
root@ab9c3ac9d6e6:/workspace/LLVM-Tracer/playground# make run-trace
/workspace/LLVM-Tracer/bin/get-labeled-stmts test1.cc --
-I/usr/local/lib/clang/6.0.0/include -I/workspace/LLVM-Tracer/playground/ \

"/usr/local/bin/clang-6.0" "-cc1" "-triple" "x86_64-unknown-linux-gnu" "-emit-llvm" "-disable-free" "-disable-llvm-verifier" "-main-file-name" "test1.cc" "-static-define" "-mrelocation-model" "static" "-mthread-model" "posix" "-fmath-errno" "-masm-verbose" "-mconstructor-aliases" "-munwind-tables" "-fuse-init-array" "-target-cpu" "x86-64" "-dwarf-column-info" "-debug-info-kind=limited" "-dwarf-version=4" "-debugger-tuning=gdb" "-momit-leaf-frame-pointer" "-coverage-notes-file" "/workspace/LLVM-Tracer/playground/test1.gcno" "-resource-dir" "/usr/local/lib/clang/6.0.0" "-internal-isystem" "/usr/lib/gcc/x86_64-linux-gnu/7.5.0/../../../../include/c++/7.5.0" "-internal-isystem" "/usr/lib/gcc/x86_64-linux-gnu/7.5.0/../../../../include/x86_64-linux-gnu/c++/7.5.0" "-internal-isystem" "/usr/lib/gcc/x86_64-linux-gnu/7.5.0/../../../../include/x86_64-linux-gnu/c++/7.5.0" "-internal-isystem" "/usr/lib/gcc/x86_64-linux-gnu/7.5.0/../../../../include/c++/7.5.0/backward" "-internal-isystem" "/usr/local/include" "-internal-isystem" "/usr/local/lib/clang/6.0.0/include" "-internal-externc-isystem" "/usr/include/x86_64-linux-gnu" "-internal-externc-isystem" "/include" "-internal-externc-isystem" "/usr/include" "-O1" "-fdeprecated-macro" "-fdebug-compilation-dir" "/workspace/LLVM-Tracer/playground" "-ferror-limit" "19" "-fmessage-length" "0" "-fno-unroll-loops" "-fno-builtin" "-fno-inline" "-fobjc-runtime=gcc" "-fcxx-exceptions" "-fexceptions" "-fdiagnostics-show-option" "-o" "test1.llvm" "-x" "c++" "test1.cc"
opt -S -load=/workspace/LLVM-Tracer/lib/full_trace.so -fulltrace -labelmapwriter test1.llvm -o test1-opt.llvm
llvm-link -o full.llvm test1-opt.llvm /workspace/LLVM-Tracer/lib/trace_logger.llvm
llc -O0 -disable-fp-elim -filetype=asm -o full.s full.llvm
g++ -no-pie -O0 -fno-inline -o test1-instrumented full.s -lm -lz -pthread
./test1-instrumented
dynamic_trace.gz: Starting to log at inst = 0.
0 1 2 3 dynamic_trace.gz: Stopping logging at inst 164.
test1-instrumented: /workspace/LLVM-Tracer/profile-func/trace_logger.cpp:132: logging_status log_or_not(bool, bool, int, char *): Assertion `false && "Returning from within a toplevel function before it was called!"' failed.
Makefile.tracer:20: recipe for target 'run-trace' failed
make: *** [run-trace] Aborted (core dumped)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.