https://issues.dlang.org/show_bug.cgi?id=16536

Martin Nowak <[email protected]> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |[email protected]

--- Comment #7 from Martin Nowak <[email protected]> ---
Well, from the error message, it seems to me we're using `unsigned long long`
on the C side (typedef unsigned long long targ_ullong), but `unsigned long` on
the D side (alias targ_ullong = ulong).

(In reply to Jacob Carlborg from comment #6)

> I manually patch the compiler by replacing targ_size_t with size_t/d_size_t
> where the linker complains. I could create a PR but I don't know if it's the
> correct solution.

Well we want to always use unsigned long long on both sides (and for 32 and
64-bit dmds), b/c it must be able to hold any target's size_t (hence the name
targ_size_t).
It's a slightly different problem than the  fix for Issue 16000
https://github.com/dlang/dmd/pull/5788/files#diff-5910c4bad5eadf90caa32a46ab678aa0R12,
where we wanted size_t (4/8 bytes depending on 32/64-bit dmd) on both sides.

Not too sure, but I guess if you `typedef unsigned long targ_ullong` on OSX/64
it should work, but that stuff starts to become really messy.

--

Reply via email to