Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 5 additions & 1 deletion src/dmd/backend/cdef.h
Original file line number Diff line number Diff line change
Expand Up @@ -235,11 +235,15 @@ char *strupr(char *);

#include <stddef.h> // for size_t

#if __APPLE__ && __i386__
#if __APPLE__
/* size_t is 'unsigned long', which makes it mangle differently
* than D's 'uint'
*/
#if __i386__
typedef unsigned d_size_t;
#else
typedef unsigned long long d_size_t;
#endif
#else
typedef size_t d_size_t;
#endif
Expand Down
6 changes: 5 additions & 1 deletion src/dmd/backend/dt.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,15 @@

#include <stddef.h> // for size_t

#if __APPLE__ && __i386__
#if __APPLE__
/* size_t is 'unsigned long', which makes it mangle differently
* than D's 'uint'
*/
#if __i386__
typedef unsigned d_size_t;
#else
typedef unsigned long long d_size_t;
#endif
#else
typedef size_t d_size_t;
#endif
Expand Down
6 changes: 5 additions & 1 deletion src/dmd/backend/outbuf.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,11 +15,15 @@

#include <stddef.h> // for size_t

#if __APPLE__ && __i386__
#if __APPLE__
/* size_t is 'unsigned long', which makes it mangle differently
* than D's 'uint'
*/
#if __i386__
typedef unsigned d_size_t;
#else
typedef unsigned long long d_size_t;
#endif
#else
typedef size_t d_size_t;
#endif
Expand Down
13 changes: 12 additions & 1 deletion src/dmd/identifier.d
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,17 @@ import dmd.root.stringtable;
import dmd.tokens;
import dmd.utf;

version (OSX)
{
// size_t is unsigned long on OSX, which results in name mangling issues
version (D_LP64)
alias d_size_t = ulong;
else
alias d_size_t = uint;
}
else
alias d_size_t = size_t;

/***********************************************************
*/
extern (C++) final class Identifier : RootObject
Expand Down Expand Up @@ -146,7 +157,7 @@ nothrow:
return idPool(s.ptr, s.length);
}

static Identifier idPool(const(char)* s, size_t len)
static Identifier idPool(const(char)* s, d_size_t len)
{
StringValue* sv = stringtable.update(s, len);
Identifier id = cast(Identifier)sv.ptrvalue;
Expand Down
6 changes: 5 additions & 1 deletion src/dmd/root/rmem.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,15 @@

#include <stddef.h> // for size_t

#if __APPLE__ && __i386__
#if __APPLE__
/* size_t is 'unsigned long', which makes it mangle differently
* than D's 'uint'
*/
#if __i386__
typedef unsigned d_size_t;
#else
typedef unsigned long long d_size_t;
#endif
#else
typedef size_t d_size_t;
#endif
Expand Down
6 changes: 5 additions & 1 deletion src/dmd/tk/mem.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,15 @@

#include <stdio.h> // for size_t

#if __APPLE__ && __i386__
#if __APPLE__
/* size_t is 'unsigned long', which makes it mangle differently
* than D's 'uint'
*/
#if __i386__
typedef unsigned d_size_t;
#else
typedef unsigned long long d_size_t;
#endif
#else
typedef size_t d_size_t;
#endif
Expand Down