On Saturday, 8 March 2014 at 07:52:10 UTC, Mike wrote:
I'm getting an ICE in d-target.cc/critsecsize when I create a synchronized block. Looking at the source code, it's pretty obvious why - my target (ARM Cortex-M bare metal) isn't any of the ones listed:

if (global.params.isWindows)
  ...
else if (global.params.isLinux)
  ...
else if (global.params.isFreeBSD)
  ...
else if (global.params.isOpenBSD)
  ...
else if (global.params.isOSX)
  ...
else if (global.params.isSolaris)
  ...

gcc_unreachable();  //ARM cortex-M (ARM Thumb): Ouch!

Interestingly, it only lists OSs, not CPU architectures. If I look at the Param struct in mars.h, it seems there is no parameter that suits my target.

I may be able to submit a pull request to change this (at least partially), but I'm looking for advice on how to add support for my target.

* Does GDC/DMD need a new isARMThumb/isBareMetal/isWhatever param? * Should critsecsize return sizeof(target's size_t) if not otherwise specified instead of calling gcc_unreachable()?

I realize there is a broader problem here than support for synchronized. What's the correct way to go about adding support for my target platform.

Thanks,
Mike

Why do you need synchronized? Are you building some kind of multithreading library?

Reply via email to