d_eh_personality required when building an OS with betterC/amd64

Streaksu assemblyislaw at gmail.com
Sun May 31 08:41:32 UTC 2020


Hi, In my OS project I started using struct destructors, and when 
using them for the first time, using them triggered a link error, 
reporting that `_d_eh_personality` is missing.

I stubbed the function using `extern (C) int 
_d_eh_personality(int a, int b, void* c, int d, void* e) { 
assert(0); }`, this works for release builds, but as soon as I 
add `-d-debug` to the flags I use, the signature stops being 
valid and fails compilation with `Error: Incompatible declaration 
of runtime function _d_eh_personality`, when compiling the same 
function.

What prototypes should I be stubbing to get this to work? Why are 
this function required when dealing with struct destructors?
I'm using LDC 1.21.0 with LLVM 10.0.0


More information about the digitalmars-d-ldc mailing list