rizin/test/db/archos/linux-x64/debuginfod
2024-09-07 00:52:17 +08:00

126 lines
7.3 KiB
Text

NAME="Debugging Information in debuginfod"
FILE=
CMDS=<<EOF
!sh -c "debuginfod -vvv -F bins/elf/float_ex1/float_ex1_buildid bins/elf/float_ex1/float_ex1_split-dwarf.debug &"
sleep 10
e bin.dbginfo.debuginfod=true
e bin.dbginfo.debuginfod_urls=http://127.0.0.1:8002
o bins/elf/float_ex1/float_ex1_buildid
aaa
iS
afl
pdf @ dbg.fn1
!kill `!netstat -lp~\:8002 | grep -Po \d+/debuginfod~:0 | grep -Po \d+`
qyn
EOF
EXPECT=<<EOF
paddr size vaddr vsize align perm name type flags
-----------------------------------------------------------------------------------------
0x00000000 0x0 ---------- 0x0 0x0 ---- NULL
0x00000318 0x1c 0x00000318 0x1c 0x0 -r-- .interp PROGBITS alloc
0x00000338 0x20 0x00000338 0x20 0x0 -r-- .note.gnu.property NOTE alloc
0x00000358 0x24 0x00000358 0x24 0x0 -r-- .note.gnu.build-id NOTE alloc
0x0000037c 0x20 0x0000037c 0x20 0x0 -r-- .note.ABI-tag NOTE alloc
0x000003a0 0x40 0x000003a0 0x40 0x0 -r-- .hash HASH alloc
0x000003e0 0x24 0x000003e0 0x24 0x0 -r-- .gnu.hash GNU_HASH alloc
0x00000408 0x108 0x00000408 0x108 0x0 -r-- .dynsym DYNSYM alloc
0x00000510 0xac 0x00000510 0xac 0x0 -r-- .dynstr STRTAB alloc
0x000005bc 0x16 0x000005bc 0x16 0x0 -r-- .gnu.version VERSYM alloc
0x000005d8 0x30 0x000005d8 0x30 0x0 -r-- .gnu.version_r VERNEED alloc
0x00000608 0xc0 0x00000608 0xc0 0x0 -r-- .rela.dyn RELA alloc
0x000006c8 0x78 0x000006c8 0x78 0x0 -r-- .rela.plt RELA alloc,info
0x00001000 0x17 0x00001000 0x17 0x0 -r-x .init PROGBITS alloc,execute
0x00001020 0x60 0x00001020 0x60 0x0 -r-x .plt PROGBITS alloc,execute
0x00001080 0x8 0x00001080 0x8 0x0 -r-x .plt.got PROGBITS alloc,execute
0x00001090 0x31f 0x00001090 0x31f 0x0 -r-x .text PROGBITS alloc,execute
0x000013b0 0x9 0x000013b0 0x9 0x0 -r-x .fini PROGBITS alloc,execute
0x00002000 0x58 0x00002000 0x58 0x0 -r-- .rodata PROGBITS alloc
0x00002058 0x3c 0x00002058 0x3c 0x0 -r-- .eh_frame_hdr PROGBITS alloc
0x00002098 0xec 0x00002098 0xec 0x0 -r-- .eh_frame PROGBITS alloc
0x00002dc0 0x8 0x00003dc0 0x8 0x0 -rw- .init_array INIT_ARRAY write,alloc
0x00002dc8 0x8 0x00003dc8 0x8 0x0 -rw- .fini_array FINI_ARRAY write,alloc
0x00002dd0 0x1f0 0x00003dd0 0x1f0 0x0 -rw- .dynamic DYNAMIC write,alloc
0x00002fc0 0x28 0x00003fc0 0x28 0x0 -rw- .got PROGBITS write,alloc
0x00002fe8 0x40 0x00003fe8 0x40 0x0 -rw- .got.plt PROGBITS write,alloc
0x00003028 0x10 0x00004028 0x10 0x0 -rw- .data PROGBITS write,alloc
0x00003038 0x0 0x00004038 0x8 0x0 -rw- .bss NOBITS write,alloc
0x00003038 0x3b ---------- 0x3b 0x0 ---- .comment PROGBITS merge,strings
0x00003078 0x378 ---------- 0x378 0x0 ---- .symtab SYMTAB
0x000033f0 0x21c ---------- 0x21c 0x0 ---- .strtab STRTAB
0x0000360c 0x11a ---------- 0x11a 0x0 ---- .shstrtab STRTAB
0x00001000 3 23 sym._init
0x00001030 1 6 sym.imp.strncpy
0x00001040 1 6 sym.imp.printf
0x00001050 1 6 sym.imp.memset
0x00001060 1 6 sym.imp.malloc
0x00001070 1 6 sym.imp.strdup
0x00001080 1 6 sym.imp.__cxa_finalize
0x00001090 1 33 entry0
0x000010c0 4 41 -> 34 sym.deregister_tm_clones
0x000010f0 4 57 -> 51 sym.register_tm_clones
0x00001130 5 57 -> 54 sym.__do_global_dtors_aux
0x00001170 1 9 entry.init0
0x00001180 5 170 dbg.fn1
0x00001230 1 48 dbg.new_some
0x00001260 6 335 dbg.main
0x000013b0 1 9 sym._fini
; CALL XREF from dbg.main @ 0x132a
/ _Bool fn1(int a, char *g, double q, struct Some *gg, some_t **out)
| ; var char **arg1 @ rdi
| ; var const char *arg2 @ rsi
| ; var int64_t arg7 @ xmm0
| ; var unsigned long long arg3 @ rdx
| ; var some_t *arg4 @ rcx
| ; arg int a @ stack - 0x10
| ; arg char *g @ stack - 0x18
| ; arg double q @ stack - 0x20
| ; arg struct Some *gg @ stack - 0x28
| ; arg some_t **out @ stack - 0x30
| 0x00001180 push rbp ; float_ex1.c:15
| 0x00001181 mov rbp, rsp
| 0x00001184 sub rsp, 0x30
| 0x00001188 mov dword [a], edi ; arg1
| 0x0000118b mov qword [g], rsi ; arg2
| 0x0000118f movsd qword [q], xmm0 ; arg7
| 0x00001194 mov qword [gg], rdx ; arg3
| 0x00001198 mov qword [out], rcx ; arg4
| 0x0000119c cmp qword [gg], 0 ; float_ex1.c:16
| ,=< 0x000011a1 je 0x11b2
| | 0x000011a7 cmp qword [out], 0
| ,==< 0x000011ac jne 0x11bb
| |`-> 0x000011b2 mov byte [a + 0x7], 0 ; float_ex1.c:17
| |,=< 0x000011b6 jmp 0x121c
| `--> 0x000011bb mov edi, 0x18 ; float_ex1.c:19 ; size_t size
| | 0x000011c0 call sym.imp.malloc ; void *malloc(size_t size)
| | 0x000011c5 mov rcx, rax
| | 0x000011c8 mov rax, qword [out]
| | 0x000011cc mov qword [rax], rcx
| | 0x000011cf mov ecx, dword [a] ; float_ex1.c:20
| | 0x000011d2 mov rax, qword [out]
| | 0x000011d6 mov rax, qword [rax]
| | 0x000011d9 mov dword [rax], ecx
| | 0x000011db mov rax, qword [out] ; float_ex1.c:21
| | 0x000011df mov rdi, qword [rax]
| | 0x000011e2 add rdi, 4 ; char *dest
| | 0x000011e6 mov rsi, qword [g] ; const char *src
| | 0x000011ea mov edx, 5 ; size_t n
| | 0x000011ef call sym.imp.strncpy ; char *strncpy(char *dest, const char *src, size_t n)
| | 0x000011f4 movsd xmm0, qword [q] ; float_ex1.c:22
| | 0x000011f9 cvtsd2ss xmm0, xmm0
| | 0x000011fd mov rax, qword [out]
| | 0x00001201 mov rax, qword [rax]
| | 0x00001204 movss dword [rax + 0xc], xmm0
| | 0x00001209 mov rcx, qword [gg] ; float_ex1.c:23
| | 0x0000120d mov rax, qword [out]
| | 0x00001211 mov rax, qword [rax]
| | 0x00001214 mov qword [rax + 0x10], rcx
| | 0x00001218 mov byte [a + 0x7], 1 ; float_ex1.c:24
| | ; CODE XREF from dbg.fn1 @ 0x11b6
| `-> 0x0000121c mov al, byte [a + 0x7] ; float_ex1.c:25
| 0x0000121f and al, 1
| 0x00001221 movzx eax, al
| 0x00001224 add rsp, 0x30
| 0x00001228 pop rbp
\ 0x00001229 ret
EOF
RUN