Ao usar a --adjust-vma
opção de objdump
todas as funções ficarem comprimidas, como se não houvesse informações de depuração sobre onde cada função começa.
Vou demonstrar com o seguinte arquivo C simples ( a.c
):
void func(void)
{
}
int main()
{
}
Compile-o usando gcc -g a.c
Now sem --adjust-vma
obter muitas informações:
$ objdump -d a.out
Disassembly of section .text:
0000000000001040 <_start>:
----- Many other functions which I cut off -------
0000000000001129 <func>:
1129: f3 0f 1e fa endbr64
112d: 55 push %rbp
112e: 48 89 e5 mov %rsp,%rbp
1131: 90 nop
1132: 5d pop %rbp
1133: c3 ret
0000000000001134 <main>:
1134: f3 0f 1e fa endbr64
1138: 55 push %rbp
1139: 48 89 e5 mov %rsp,%rbp
113c: b8 00 00 00 00 mov $0x0,%eax
1141: 5d pop %rbp
1142: c3 ret
Mas com --adjust-vma
eu recebo o seguinte:
$ objdump -d a.out --adjust-vma=0x100000
Disassembly of section .text:
0000000001001040 <main+0xffff0c>:
-------- No function markers, just a lot of instructions one after the other -------
# AM: That's the original `func`
1001129: f3 0f 1e fa endbr64
100112d: 55 push %rbp
100112e: 48 89 e5 mov %rsp,%rbp
1001131: 90 nop
1001132: 5d pop %rbp
1001133: c3 ret
# AM: That's the original `main`
1001134: f3 0f 1e fa endbr64
1001138: 55 push %rbp
1001139: 48 89 e5 mov %rsp,%rbp
100113c: b8 00 00 00 00 mov $0x0,%eax
1001141: 5d pop %rbp
1001142: c3 ret
Alguma ideia de por que isso acontece?