Win64 exception support?

Kai Nacke kai.nacke at redstar.de
Tue May 14 20:30:10 PDT 2013


On Sunday, 10 February 2013 at 22:16:17 UTC, kinke wrote:
> Hey guys,
>
> what's currently missing for working exception handling under 
> Win64?
> https://github.com/ldc-developers/ldc/issues/166 suggests LLVM 
> 3.3 provides at least preliminary support. What else do we 
> need? I'd like to help, but I need some hints...
>
> Thanks and keep it up!

The code to generate the EH data is linked to the issue. (Just 
give me a hint if you can't apply it cleanly. I update the patch 
then.)

There are (at least!) 2 bugs left:
- the EH personality function is hard coded. IMHO this is easy to 
change.
- the code generated by LLVM does not always conform to the WinABI

The last point is serious. E.g. the WinABI states that all 
integers are passed as 64-bit values and expect that the whole 
64-bit register is saved on the stack. In contrast, LLVM reserves 
and stores only 32-bit values for 32-bit wide parameters. This 
breaks the EH data generation.

Is these problems are solved then the implementation in druntime 
is still missing. Again, this should be easy and simply following 
the Dwarf EH solution from Linux.

Regards
Kai


More information about the digitalmars-d-ldc mailing list