In processFDE, we currently early exit if there are any references. This is taken to mean the the compiler knew what it was doing so we trust it.
However, there were a couple of issues here.
The first is that these references may not have the correct kind. For example, we expect the function reference to be of type unwindFDEToFunction and so must change the kind of the compiler emitted reference to that. Similarly for CFI and LSDA.
The second issue was that we were stopping processing the FDE if the compiler emitted any references, but there's no guarantee that it emitted all of them. So the compiler may emit a func ref but we should still parse the FDE to generate the CFI and LSDA refs.
We now work out which refs we got from the compiler, then parse the FDE. We create those refs which the compiler did not emit, and any it did are converted to the correct kinds.