Генерация комплексного графа вызовов с использованием GCC и Египта

Я пытаюсь сгенерировать всеобъемлющий callgraph (в комплекте с низкоуровневыми вызовами Linux, средой выполнения и т. д.).

Я статически скомпилировал свои исходные файлы с помощью «-fdump-rtl-expand» и создал файлы RTL, которые я передал в скрипт PERL под названием Egypt (который, как я полагаю, является Graphviz/Dot) и создал PDF-файл callgraph. . Это работает отлично, никаких проблем.

Кроме того, есть вызовы некоторых библиотек, которые отображаются как встроенные. Я хотел посмотреть, есть ли способ, чтобы callgraph не печатался, а вместо этого настоящие вызовы, сделанные в библиотеках?

Пожалуйста, дайте мне знать, если вопрос не ясен.

http://i.imgur.com/sp58v.jpg

По сути, я пытаюсь избежать создания callgraph

Есть ли способ сделать это?

-------- КОД ---------

#include 
#include 
#include 

unsigned long int t0, t5;
unsigned int NOSPAWN_THRESHOLD = 32;

int fib_nospawn(int n)
{
  if (n < 2) 
    return n;
  else 
    {
      int x = fib_nospawn(n-1);
      int y = fib_nospawn(n-2);
      return x + y;
    }
}

// spawning fibonacci function
int fib(long int n)
{
  long int x, y;
  if (n < 2) 
    return n;
  else if (n <= NOSPAWN_THRESHOLD)
    {
      x = fib_nospawn(n-1);
      y = fib_nospawn(n-2);
      return x + y;
    }
  else 
    {
      x = cilk_spawn fib(n-1);
      y = cilk_spawn fib(n-2);
      cilk_sync;
      return x + y;
    }
}

int main(int argc, char *argv[])
{
  int n;
  long int result;
  long int exec_time;

  n = atoi(argv[1]);
  NOSPAWN_THRESHOLD = atoi(argv[2]);
  result = fib(n);

  printf("%ld\n", result);
  return 0;
}

Я собрал библиотеку Cilk из исходников.

5
задан boffin 17 April 2012 в 18:52
поделиться