Я пытаюсь сгенерировать всеобъемлющий callgraph (в комплекте с низкоуровневыми вызовами Linux, средой выполнения и т. д.).
Я статически скомпилировал свои исходные файлы с помощью «-fdump-rtl-expand» и создал файлы RTL, которые я передал в скрипт PERL под названием Egypt (который, как я полагаю, является Graphviz/Dot) и создал PDF-файл callgraph. . Это работает отлично, никаких проблем.
Кроме того, есть вызовы некоторых библиотек, которые отображаются как встроенные. Я хотел посмотреть, есть ли способ, чтобы callgraph не печатался, а вместо этого настоящие вызовы, сделанные в библиотеках?
Пожалуйста, дайте мне знать, если вопрос не ясен.
По сути, я пытаюсь избежать создания 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 из исходников.