https://issues.dlang.org/show_bug.cgi?id=16856
Jonathan M Davis <[email protected]> changed: What |Removed |Added ---------------------------------------------------------------------------- Summary|D is borked on FreeBSD |D does not work on FreeBSD |current (what will |current (what will |eventually be 12) |eventually be 12) due to | |libunwind --- Comment #1 from Jonathan M Davis <[email protected]> --- Okay. I've confirmed that this is a problem with FreeBSD current in general and not just TrueOS, and I've narrowed down commit in the FreeBSD source tree which broke us. Specifically, it's this one commit d20793840b5b74acebe80ec710522f7386b452cf Author: emaste <[email protected]> Date: Wed Jul 27 16:01:44 2016 +0000 Enable LLVM libunwind by default on amd64 and i386 It is a maintained and updated runtime exception stack unwinder that should be a drop-in replacement. It can be disabled by setting WITHOUT_LLVM_LIBUNWIND in src.conf. PR: 206039 [exp-run] Sponsored by: The FreeBSD Foundation and if I rebuild the OS with WITHOUT_LLVM_LIBUNWIND=1, then everything works again. So, clearly, the problem is that FreeBSD changed to using libunwind from whatever they were using before, and whatever we do with dmd and druntime is not compatible with that. The commit message implies that libunwind _should_ be compatible with what was there before, but in our case, it clearly isn't. I don't know if that's a problem with FreeBSD and it truly not being a drop-in replacement, or if we're doing something wrong that happened to work before but doesn't with libunwind, or what. Unfortunately, I know almost nothing about libunwind - just that it has to do with dealing with throwing exceptions, so I really have no idea what the problem could be or what the correct solution is (I don't even know if this involves dmd or just druntime). I'd guess though that we need to do something to become compatible with libunwind. Since libunwind is not specifically a FreeBSD thing, this may affect something in Linux land. I don't know. But we clearly don't work with FreeBSD 12-to-be right now because of this. --
