diff options
Diffstat (limited to 'utils/debugNCG/README')
-rw-r--r-- | utils/debugNCG/README | 46 |
1 files changed, 0 insertions, 46 deletions
diff --git a/utils/debugNCG/README b/utils/debugNCG/README deleted file mode 100644 index 90eb2197cc..0000000000 --- a/utils/debugNCG/README +++ /dev/null @@ -1,46 +0,0 @@ - -This program is to assist in debugging GHC's native code generator. - -Finding out which particular code block the native code block has -mis-compiled is like finding a needle in a haystack. This program -solves that problem. Given an assembly file created by the NCG (call -it Foo.s-nat) and one created by gcc (Foo.s-gcc), then - - diff_gcc_nat Foo.s - -will pair up corresponding code blocks, wrap each one in an #if and -spew the entire result out to stdout, along with a load of #defines at -the top, which you can use to switch between the gcc and ncg versions -of each code block. Pipe this into a .S file (I use the name -synth.S). Then you can used the #defines to do a binary search to -quickly arrive at the code block(s) which have been mis-compiled. - -Note that the .S suffix tells ghc that this assembly file needs to be -cpp'd; so you should be sure to use .S and not .s. - -The pattern matching can cope with the fact that the code blocks are -in different orders in the two files. The result synth.S is ordered -by in the order of the -nat input; the -gcc input is searched for the -corresponding stuff. The search relies on spotting artefacts like -section changes, so is fragile and susceptible to minor changes in the -gcc's assembly output. If that happens, it's well worth the effort -fixing this program, rather than trying to infer what's wrong with the -NCG directly from the -nat input. - -This is only known to work on x86 linux, sparc-solaris (and possibly -cygwin). No idea if the same matching heuristics will work on other -archs -- if not, we need to have multiple versions of this program, on -a per-arch basis. - -One other IMPORTANT thing: you *must* enable stg-split-markers in the -native code generator output, otherwise this won't work at all -- -since it won't be able to find out where the code blocks start and -end. Enable these markers by compiling ghc (or at least -ghc/compiler/nativeGen/AsmCodeGen.lhs, function nativeCodeGen) with --DDEBUG_NCG enabled. - -Matching is simple but inefficient; diff-ing a large module could take -a minute or two. - -JRS, 29 June 2000 - |