Hacker News new | ask | show | jobs
by overbytecode 965 days ago
I’m confused, why would the debugging information file be an executable? These are just debugging symbols, no?
2 comments

DWARF is touring complete and not the accidental kind, it has instructions and all. GDB implements the whole set so you can basically make GDB do arbitrary code execution if you control the DWARF data.
As far why it's not accidental, one of the primary purposes of DWARF is to be able to essentially describe "this source-level value is described by f(memory, registers)". Even if you wanted to restrict it to just the simple conditions like "this is described at stack offset N", there are cases where there might be variably-sized objects on the stack, and so you'd need to run a small function just to compute "N".
The debug info is stored in an elf file, just like an executable. You can have them together in the same file, or you can use a tool like objcopy to make them separate.
> or you can use a tool like objcopy to make them separate

which is how Debian generates the -debug packages [1].

[1] https://github.com/Debian/debhelper/blob/master/dh_strip