Rewrite ELF parsing from scratch w/o dependency of elf(3) and gelf(3)
[elfdbg/.git] / README.md
1 # elfdbg
2
3 ## About
4
5 This project _elfdbg_ is a utility program to quickly identify if an ELF binary
6 is built with [debug sections](https://en.wikipedia.org/wiki/Debug_symbol)
7
8 Debug sections in ELF binary usually are generated using the `-g` flag with the
9 compiler. The compiler adds the new `.debug_*` sections in the binary.
10
11 The program is looking for the existence of sections with name starting with
12 `.debug_` to determine if the binary has been built with debug information.
13
14 The [ELF][ELF] format is a well-known standard. ELF TIS reference specification
15 is available [here][spec] and as a FreeBSD [elf(5)][man] man page.
16
17 ## Build and install
18
19 The Makefile use the standard BSDMakefile to build the program.
20
21 ```
22 make && sudo make install
23 ```
24
25 ## Test
26
27 The tests cases are implemented using the FreeBSD test suite framework with
28 [kyua](https://github.com/jmmv/kyua) and [Kyuafile](./tests/Kyuafile).
29
30 ```
31 make test
32 ```
33
34 ## History
35
36 * _2015_ I wrote this using libelf elf(3) and gelf(3) API
37   [f4b470b](https://github.com/sbz/elfdbg/commit/f4b470b)
38 * _2020_ I rewrote this without relying on libelf API
39   [96010ce](https://github.com/sbz/eldbg/commit/96010ce)
40
41 [ELF]: https://en.wikipedia.org/wiki/Executable_and_Linkable_Format
42 [spec]: http://refspecs.linuxbase.org/elf/elf.pdf
43 [man]: https://www.freebsd.org/cgi/man.cgi?query=elf&sektion=5