Имеется файл foo.c, который содержит две функции одна из них static
int foo(int i, int c)
{
return i + c;
}
static int s_foo(int i, int c)
{
return i + c;
}
Можно ли определить из дизассемблерного кода являетсля ли функция статичной?
Если смотреть на вывод objdump, то эти функции не отличаются.
000000000000063a <foo>:
63a: 55 push %rbp
63b: 48 89 e5 mov %rsp,%rbp
63e: 89 7d fc mov %edi,-0x4(%rbp)
641: 89 75 f8 mov %esi,-0x8(%rbp)
644: 8b 55 fc mov -0x4(%rbp),%edx
647: 8b 45 f8 mov -0x8(%rbp),%eax
64a: 01 d0 add %edx,%eax
64c: 5d pop %rbp
64d: c3 retq
000000000000064e <s_foo>:
64e: 55 push %rbp
64f: 48 89 e5 mov %rsp,%rbp
652: 89 7d fc mov %edi,-0x4(%rbp)
655: 89 75 f8 mov %esi,-0x8(%rbp)
658: 8b 55 fc mov -0x4(%rbp),%edx
65b: 8b 45 f8 mov -0x8(%rbp),%eax
65e: 01 d0 add %edx,%eax
660: 5d pop %rbp
661: c3 retq