126 lines
7.3 KiB
Text
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
|