... | ... | @@ -447,14 +447,14 @@ a bit: |
|
|
|
|
|
Performance problems:
|
|
|
|
|
|
- Potential slowdown bug: "Using -g causes differences in generated core" - [\#15960](https://gitlab.haskell.org//ghc/ghc/issues/15960)
|
|
|
- Potential slowdown bug: "Using -g causes differences in generated core" - [\#15960](https://gitlab.haskell.org/ghc/ghc/issues/15960)
|
|
|
|
|
|
## Design decisions
|
|
|
|
|
|
|
|
|
Currently we use `libdw` (part of `elf-utils`) for stack unwinding and DWARF reading. While `libdw` has the advantage of being comprehensive () and widely used (used by `perf`, among others), it only targets ELF platforms. There are a few alternatives that were considered,
|
|
|
|
|
|
- `libdwarf` ([ https://www.prevanders.net/dwarf.html](https://www.prevanders.net/dwarf.html)): not widely available; questionable upstream maintenance practices
|
|
|
- `libdw` ([ https://sourceware.org/elfutils/](https://sourceware.org/elfutils/)): widely available and used, offering both unwinding and ELF/DWARF parsing, reasonably active upstream, only supports ELF, poor documentation
|
|
|
- `libbacktrace` ([ https://github.com/gcc-mirror/gcc/tree/master/libbacktrace](https://github.com/gcc-mirror/gcc/tree/master/libbacktrace)): Supports ELF and XCOFF, not widely available
|
|
|
- `libunwind` ([ http://www.nongnu.org/libunwind/](http://www.nongnu.org/libunwind/)): well documented, also no MachO support |
|
|
- `libdwarf` ([https://www.prevanders.net/dwarf.html](https://www.prevanders.net/dwarf.html)): not widely available; questionable upstream maintenance practices
|
|
|
- `libdw` ([https://sourceware.org/elfutils/](https://sourceware.org/elfutils/)): widely available and used, offering both unwinding and ELF/DWARF parsing, reasonably active upstream, only supports ELF, poor documentation
|
|
|
- `libbacktrace` ([https://github.com/gcc-mirror/gcc/tree/master/libbacktrace](https://github.com/gcc-mirror/gcc/tree/master/libbacktrace)): Supports ELF and XCOFF, not widely available
|
|
|
- `libunwind` ([http://www.nongnu.org/libunwind/](http://www.nongnu.org/libunwind/)): well documented, also no MachO support |