Generate .loc/.file directives from source ticks
authorPeter Wortmann <scpmw@leeds.ac.uk>
Mon, 8 Dec 2014 15:54:16 +0000 (16:54 +0100)
committerAustin Seipp <austin@well-typed.com>
Wed, 17 Dec 2014 00:34:08 +0000 (18:34 -0600)
commit64678e9e8ff0107cac956f0c7b799a1dd317b963
treecce702b5aa2af2461f1e161a1696395b58c4283b
parentea788f0fc53000afd264f0452f23b597887df9f9
Generate .loc/.file directives from source ticks

This generates DWARF, albeit indirectly using the assembler. This is
the easiest (and, apparently, quite standard) method of generating the
.debug_line DWARF section.

Notes:

* Note we have to make sure that .file directives appear correctly
  before the respective .loc. Right now we ppr them manually, which makes
  them absent from dumps. Fixing this would require .file to become a
  native instruction.

* We have to pass a lot of things around the native code generator. I
  know Ian did quite a bit of refactoring already, but having one common
  monad could *really* simplify things here...

* To support SplitObjcs, we need to emit/reset all DWARF data at every
  split. We use the occassion to move split marker generation to
  cmmNativeGenStream as well, so debug data extraction doesn't have to
  choke on it.

(From Phabricator D396)
compiler/nativeGen/AsmCodeGen.hs
compiler/nativeGen/NCGMonad.hs
compiler/nativeGen/RegAlloc/Linear/Main.hs
compiler/nativeGen/X86/CodeGen.hs
compiler/nativeGen/X86/Instr.hs
compiler/nativeGen/X86/Ppr.hs