如何使用LLVM函数/模块传递检测仅存在于源文件中的那些函数/构造函数?

时间:2015-11-25 04:55:58

标签: c++ llvm llvm-clang llvm-ir

我正在从LLVM写一个模块传递。我需要处理bitcode中存在的所有功能,但同时我需要确保我不会改变对我不感兴趣的功能,即我不想考虑这些功能这些不是源文件。怎么做?

考虑以下测试文件

#include <iostream>

using namespace std;

int testCall()
{
    return 1;
}

class test
 {
       int a;
     public:
       test()
       {
         a = 0;
       }
       test(int b)
       {
        a = b;
       }
       void foo1()
       {
            a =2;
       }
       void fun()
       {
        a = 3;
       }
 };


int main()
{
    testCall();
     test *a = new test(2);
      test *b = new test(4);
     a->foo1();
     a->fun();

      b->fun();

    cout << "Hi" << "\n";
      return 0;
}

我只对找到上面定义的函数感兴趣,而不是LLVM函数/模块检测到的其他函数作为函数传递。这些包括具有像

这样的Demangled Names的函数

1)std::ios_base::Init::Init()

2)std::ios_base::Init::~Init()

3)std::basic_ostream<char, std::char_traits<char> >& std::operator<< <std::char_traits<char> >(std::basic_ostream<char, std::char_traits<char> >&, char const*)

在执行我的功能/模块传递时,我不想考虑这些功能。 怎么做?

0 个答案:

没有答案