-
diff -r a61748274812 src/dmd/backend/cc.h
|
a
|
b
|
|
| 82 | 82 | WM_badnumber = 24, |
| 83 | 83 | WM_ccast = 25, |
| 84 | 84 | WM_obsolete = 26, |
| 85 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 85 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 86 | 86 | WM_skip_attribute = 27, // skip GNUC attribute specification |
| 87 | 87 | WM_warning_message = 28, // preprocessor warning message |
| 88 | 88 | WM_bad_vastart = 29, // args for builtin va_start bad |
| … |
… |
|
| 146 | 146 | #include "msgs2.h" |
| 147 | 147 | #endif |
| 148 | 148 | #include "ty.h" |
| 149 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 149 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 150 | 150 | #include "../tk/mem.h" |
| 151 | 151 | #else |
| 152 | 152 | #include "mem.h" |
| … |
… |
|
| 745 | 745 | #define Fnteh 0x08 // uses NT Structured EH |
| 746 | 746 | #define Fdoinline 0x40 // do inline walk |
| 747 | 747 | #define Foverridden 0x80 // ignore for overriding purposes |
| 748 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 748 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 749 | 749 | #define Fnowrite 0x100 // SCinline should never output definition |
| 750 | 750 | #else |
| 751 | 751 | #define Fjmonitor 0x100 // Jupiter synchronized function |
| … |
… |
|
| 800 | 800 | // of SCftexpspec explicit specializations |
| 801 | 801 | Funcsym *Fsurrogatesym; // Fsurrogate: surrogate cast function |
| 802 | 802 | |
| 803 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 803 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 804 | 804 | char *Fredirect; // redirect function name to this name in object |
| 805 | 805 | #endif |
| 806 | 806 | TARGET_structFUNC_S |
| … |
… |
|
| 1325 | 1325 | #define SFLmutable 0x100000 // SCmember or SCfield is mutable |
| 1326 | 1326 | #define SFLdyninit 0x200000 // symbol has dynamic initializer |
| 1327 | 1327 | #define SFLtmp 0x400000 // symbol is a generated temporary |
| 1328 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 1328 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 1329 | 1329 | #define SFLthunk 0x40000 // symbol is temporary for thunk |
| 1330 | 1330 | #endif |
| 1331 | 1331 | |
| … |
… |
|
| 1543 | 1543 | FLallocatmp, // temp for built-in alloca() |
| 1544 | 1544 | FLstack, // offset from ESP rather than EBP |
| 1545 | 1545 | FLdsymbol, // it's a Dsymbol |
| 1546 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 1546 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 1547 | 1547 | // Change this, update debug.c too |
| 1548 | 1548 | FLgot, // global offset table entry outside this object file |
| 1549 | 1549 | FLgotoff, // global offset table entry inside this object file |
-
diff -r a61748274812 src/dmd/backend/cdef.h
|
a
|
b
|
|
| 171 | 171 | #define TARGET_SOLARIS 0 // target is a Solaris executable |
| 172 | 172 | #endif |
| 173 | 173 | |
| | 174 | // Set to 1 using the makefile |
| | 175 | #ifndef TARGET_HAIKU |
| | 176 | #define TARGET_HAIKU 0 // target is a Haiku executable |
| | 177 | #endif |
| | 178 | |
| 174 | 179 | // This is the default |
| 175 | 180 | #ifndef TARGET_WINDOS |
| 176 | | #define TARGET_WINDOS (!(TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS)) |
| | 181 | #define TARGET_WINDOS (!(TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU)) |
| 177 | 182 | #endif |
| 178 | 183 | |
| 179 | 184 | #if __GNUC__ |
| … |
… |
|
| 242 | 247 | |
| 243 | 248 | // Precompiled header variations |
| 244 | 249 | #define MEMORYHX (_WINDLL && _WIN32) // HX and SYM files are cached in memory |
| 245 | | #define MMFIO (_WIN32 || linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4) // if memory mapped files |
| | 250 | #define MMFIO (_WIN32 || linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__) // if memory mapped files |
| 246 | 251 | #define LINEARALLOC _WIN32 // if we can reserve address ranges |
| 247 | 252 | |
| 248 | 253 | // H_STYLE takes on one of these precompiled header methods |
| … |
… |
|
| 458 | 463 | #define DOUBLESIZE 8 |
| 459 | 464 | #if TARGET_OSX |
| 460 | 465 | #define LNGDBLSIZE 16 // 80 bit reals |
| 461 | | #elif TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 466 | #elif TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 462 | 467 | #define LNGDBLSIZE 12 // 80 bit reals |
| 463 | 468 | #else |
| 464 | 469 | #define LNGDBLSIZE 10 // 80 bit reals |
| … |
… |
|
| 509 | 514 | #define OMFOBJ TARGET_WINDOS |
| 510 | 515 | #endif |
| 511 | 516 | #ifndef ELFOBJ |
| 512 | | #define ELFOBJ (TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS) |
| | 517 | #define ELFOBJ (TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU) |
| 513 | 518 | #endif |
| 514 | 519 | #ifndef MACHOBJ |
| 515 | 520 | #define MACHOBJ TARGET_OSX |
| … |
… |
|
| 696 | 701 | #define EX_SCOUNIX 0x800 |
| 697 | 702 | #define EX_UNIXSVR4 0x1000 |
| 698 | 703 | #define EX_LINUX 0x2000 |
| | 704 | #define EX_HAIKU 0x2000 |
| 699 | 705 | #define EX_WIN64 0x4000 // AMD64 and Windows (64 bit mode) |
| 700 | 706 | #define EX_LINUX64 0x8000 // AMD64 and Linux (64 bit mode) |
| 701 | 707 | #define EX_OSX 0x10000 |
| … |
… |
|
| 707 | 713 | |
| 708 | 714 | #define EX_flat (EX_OS2 | EX_NT | EX_LINUX | EX_WIN64 | EX_LINUX64 | \ |
| 709 | 715 | EX_OSX | EX_OSX64 | EX_FREEBSD | EX_FREEBSD64 | \ |
| 710 | | EX_SOLARIS | EX_SOLARIS64) |
| | 716 | EX_SOLARIS | EX_SOLARIS64 | EX_HAIKU) |
| 711 | 717 | #define EX_dos (EX_DOSX | EX_ZPM | EX_RATIONAL | EX_PHARLAP | \ |
| 712 | 718 | EX_COM | EX_MZ /*| EX_WIN16*/) |
| 713 | 719 | |
| … |
… |
|
| 760 | 766 | #define CFG3relax 0x200 // relaxed type checking (C only) |
| 761 | 767 | #define CFG3cpp 0x400 // C++ compile |
| 762 | 768 | #define CFG3igninc 0x800 // ignore standard include directory |
| 763 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 769 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 764 | 770 | #define CFG3mars 0x1000 // use mars libs and headers |
| 765 | 771 | #define NO_FAR (TRUE) // always ignore __far and __huge keywords |
| 766 | 772 | #else |
| … |
… |
|
| 772 | 778 | #define CFG3cppcomment 0x8000 // allow C++ style comments |
| 773 | 779 | #define CFG3wkfloat 0x10000 // make floating point references weak externs |
| 774 | 780 | #define CFG3digraphs 0x20000 // support ANSI C++ digraphs |
| 775 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 781 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 776 | 782 | #define CFG3semirelax 0x40000 // moderate relaxed type checking |
| 777 | 783 | #endif |
| 778 | 784 | #define CFG3pic 0x80000 // position independent code |
| … |
… |
|
| 975 | 981 | #define SYMBOLZERO |
| 976 | 982 | #endif |
| 977 | 983 | |
| 978 | | #if TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 984 | #if TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 979 | 985 | #define UNIXFIELDS (unsigned)-1,(unsigned)-1,0,0, |
| 980 | 986 | #elif TARGET_OSX |
| 981 | 987 | #define UNIXFIELDS (unsigned)-1,(unsigned)-1,0,0,0, |
-
diff -r a61748274812 src/dmd/backend/cg87.c
|
a
|
b
|
|
| 619 | 619 | static double dval[7] = |
| 620 | 620 | {0.0,1.0,PI,LOG2T,LOG2E,LOG2,LN2}; |
| 621 | 621 | static long double ldval[7] = |
| 622 | | #if __APPLE__ || __FreeBSD__ || __sun&&__SVR4 |
| | 622 | #if __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ |
| 623 | 623 | #define M_PIl 0x1.921fb54442d1846ap+1L // 3.14159 fldpi |
| 624 | 624 | #define M_LOG2T_L 0x1.a934f0979a3715fcp+1L // 3.32193 fldl2t |
| 625 | 625 | #define M_LOG2El 0x1.71547652b82fe178p+0L // 1.4427 fldl2e |
-
diff -r a61748274812 src/dmd/backend/cgcod.c
|
a
|
b
|
|
| 127 | 127 | csmax = 64; |
| 128 | 128 | csextab = (struct CSE *) util_calloc(sizeof(struct CSE),csmax); |
| 129 | 129 | functy = tybasic(funcsym_p->ty()); |
| 130 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 130 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 131 | 131 | if (0 && config.flags3 & CFG3pic) |
| 132 | 132 | { |
| 133 | 133 | ALLREGS = ALLREGS_INIT_PIC; |
| … |
… |
|
| 1002 | 1002 | #endif |
| 1003 | 1003 | if (config.flags2 & CFG2seh) |
| 1004 | 1004 | c = cat(c,nteh_unwind(0,toindex)); |
| 1005 | | #if MARS && (TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS) |
| | 1005 | #if MARS && (TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU) |
| 1006 | 1006 | else if (toindex + 1 <= fromindex) |
| 1007 | 1007 | { |
| 1008 | 1008 | //c = cat(c, linux_unwind(0, toindex)); |
| … |
… |
|
| 1089 | 1089 | assert(!getregs(allregs)); |
| 1090 | 1090 | assert(!e); |
| 1091 | 1091 | assert(!bl->Bcode); |
| 1092 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 1092 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 1093 | 1093 | if (config.flags3 & CFG3pic) |
| 1094 | 1094 | { |
| 1095 | 1095 | if (STACKALIGN == 16) |
| … |
… |
|
| 1553 | 1553 | return mST0; |
| 1554 | 1554 | |
| 1555 | 1555 | case TYcfloat: |
| 1556 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 1556 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 1557 | 1557 | if (I32 && tybasic(tyf) == TYnfunc) |
| 1558 | 1558 | return mDX | mAX; |
| 1559 | 1559 | #endif |
| … |
… |
|
| 2492 | 2492 | case OPrelconst: |
| 2493 | 2493 | c = cdrelconst(e,pretregs); |
| 2494 | 2494 | break; |
| 2495 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 2495 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 2496 | 2496 | case OPgot: |
| 2497 | 2497 | c = cdgot(e,pretregs); |
| 2498 | 2498 | break; |
-
diff -r a61748274812 src/dmd/backend/cgelem.c
|
a
|
b
|
|
| 812 | 812 | e2 = e->E2; |
| 813 | 813 | if (e2->Eoper == OPconst) |
| 814 | 814 | { |
| 815 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 815 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 816 | 816 | if (e1->Eoper == OPrelconst && e1->EV.sp.Vsym->Sfl == FLgot) |
| 817 | 817 | goto ret; |
| 818 | 818 | #endif |
| … |
… |
|
| 827 | 827 | } |
| 828 | 828 | else if (e1->Eoper == OPconst) |
| 829 | 829 | { |
| 830 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 830 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 831 | 831 | if (e2->Eoper == OPrelconst && e2->EV.sp.Vsym->Sfl == FLgot) |
| 832 | 832 | goto ret; |
| 833 | 833 | #endif |
-
diff -r a61748274812 src/dmd/backend/cod1.c
|
a
|
b
|
|
| 1279 | 1279 | case FLextern: |
| 1280 | 1280 | if (s->Sident[0] == '_' && memcmp(s->Sident + 1,"tls_array",10) == 0) |
| 1281 | 1281 | { |
| 1282 | | #if TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 1282 | #if TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 1283 | 1283 | // Rewrite as GS:[0000], or FS:[0000] for 64 bit |
| 1284 | 1284 | if (I64) |
| 1285 | 1285 | { |
| … |
… |
|
| 1307 | 1307 | case FLdata: |
| 1308 | 1308 | case FLudata: |
| 1309 | 1309 | case FLcsdata: |
| 1310 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 1310 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 1311 | 1311 | case FLgot: |
| 1312 | 1312 | case FLgotoff: |
| 1313 | 1313 | case FLtlsdata: |
| … |
… |
|
| 1338 | 1338 | { |
| 1339 | 1339 | pcs->Iflags |= CFcs | CFoff; |
| 1340 | 1340 | } |
| 1341 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 1341 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 1342 | 1342 | if (I64 && config.flags3 & CFG3pic && |
| 1343 | 1343 | (fl == FLtlsdata || s->ty() & mTYthread)) |
| 1344 | 1344 | { |
| … |
… |
|
| 1923 | 1923 | { |
| 1924 | 1924 | //printf("callclib(e = %p, clib = %d, *pretregs = %s, keepmask = %s\n", e, clib, regm_str(*pretregs), regm_str(keepmask)); |
| 1925 | 1925 | //elem_print(e); |
| 1926 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 1926 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 1927 | 1927 | static symbol lib[] = |
| 1928 | 1928 | { |
| 1929 | 1929 | /* Convert destroyed regs into saved regs */ |
| 1930 | 1930 | #define Z(desregs) (~(desregs) & (mBP| mES | ALLREGS)) |
| 1931 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 1931 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 1932 | 1932 | #define N(name) "_" name |
| 1933 | 1933 | #else |
| 1934 | 1934 | #define N(name) name |
| … |
… |
|
| 2149 | 2149 | {DOUBLEREGS_16,DOUBLEREGS_32,0,INFfloat,1,1}, // _INTDBL@ intdbl |
| 2150 | 2150 | {mAX,mAX,0,INFfloat,1,1}, // _DBLUNS@ dbluns |
| 2151 | 2151 | {DOUBLEREGS_16,DOUBLEREGS_32,0,INFfloat,1,1}, // _UNSDBL@ unsdbl |
| 2152 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 2152 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 2153 | 2153 | {mDX|mAX,mAX,0,INF32|INFfloat,0,1}, // _DBLULNG@ dblulng |
| 2154 | 2154 | #else |
| 2155 | 2155 | {mDX|mAX,mAX,0,INFfloat,1,1}, // _DBLULNG@ dblulng |
| … |
… |
|
| 2162 | 2162 | |
| 2163 | 2163 | {DOUBLEREGS_16,mDX|mAX,0,INFfloat,1,1}, // _DBLLLNG@ |
| 2164 | 2164 | {DOUBLEREGS_16,DOUBLEREGS_32,0,INFfloat,1,1}, // _LLNGDBL@ |
| 2165 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 2165 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 2166 | 2166 | {DOUBLEREGS_16,mDX|mAX,0,INFfloat,2,2}, // _DBLULLNG@ |
| 2167 | 2167 | #else |
| 2168 | 2168 | {DOUBLEREGS_16,mDX|mAX,0,INFfloat,1,1}, // _DBLULLNG@ |
-
diff -r a61748274812 src/dmd/backend/cod2.c
|
a
|
b
|
|
| 151 | 151 | |
| 152 | 152 | ty1 = tybasic(e1->Ety); |
| 153 | 153 | if (tyfloating(ty1)) |
| 154 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 154 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 155 | 155 | return orth87(e,pretregs); |
| 156 | 156 | #else |
| 157 | 157 | return opdouble(e,pretregs,(e->Eoper == OPadd) ? CLIBdadd |
| … |
… |
|
| 793 | 793 | unsigned grex = rex << 16; |
| 794 | 794 | |
| 795 | 795 | if (tyfloating(tyml)) |
| 796 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 796 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 797 | 797 | return orth87(e,pretregs); |
| 798 | 798 | #else |
| 799 | 799 | return opdouble(e,pretregs,(oper == OPmul) ? CLIBdmul : CLIBddiv); |
| … |
… |
|
| 3761 | 3761 | goto L4; |
| 3762 | 3762 | |
| 3763 | 3763 | case FLtlsdata: |
| 3764 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 3764 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 3765 | 3765 | { |
| 3766 | 3766 | L5: |
| 3767 | 3767 | if (I64 && config.flags3 & CFG3pic) |
| … |
… |
|
| 3853 | 3853 | goto L4; |
| 3854 | 3854 | |
| 3855 | 3855 | case FLextern: |
| 3856 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 3856 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 3857 | 3857 | if (e->EV.sp.Vsym->ty() & mTYthread) |
| 3858 | 3858 | goto L5; |
| 3859 | 3859 | #endif |
| 3860 | 3860 | case FLdata: |
| 3861 | 3861 | case FLudata: |
| 3862 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 3862 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 3863 | 3863 | case FLgot: |
| 3864 | 3864 | case FLgotoff: |
| 3865 | 3865 | #endif |
| … |
… |
|
| 4141 | 4141 | |
| 4142 | 4142 | if (tyfloating(tyml)) |
| 4143 | 4143 | { |
| 4144 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 4144 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 4145 | 4145 | return post87(e,pretregs); |
| 4146 | 4146 | #else |
| 4147 | 4147 | if (config.inline8087) |
-
diff -r a61748274812 src/dmd/backend/cod3.c
|
a
|
b
|
|
| 534 | 534 | genjmp(c,JNE,FLblock,list_block(b->Bsucc)); /* JNE default */ |
| 535 | 535 | } |
| 536 | 536 | ce = getregs(mCX|mDI); |
| 537 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 537 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 538 | 538 | if (config.flags3 & CFG3pic) |
| 539 | 539 | { // Add in GOT |
| 540 | 540 | code *cx; |
| … |
… |
|
| 614 | 614 | mod = (disp > 127) ? 2 : 1; /* 1 or 2 byte displacement */ |
| 615 | 615 | if (config.flags & CFGromable) |
| 616 | 616 | gen1(ce,SEGCS); /* table is in code segment */ |
| 617 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 617 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 618 | 618 | if (config.flags3 & CFG3pic) |
| 619 | 619 | { // ADD EDX,(ncases-1)*2[EDI] |
| 620 | 620 | ct = genc1(CNIL,0x03,modregrm(mod,DX,7),FLconst,disp); |
| … |
… |
|
| 1092 | 1092 | gen1(c, 0x58 + reg); // L1: POP reg |
| 1093 | 1093 | |
| 1094 | 1094 | return cat(c,fixresult(e,retregs,pretregs)); |
| 1095 | | #elif TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 1095 | #elif TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 1096 | 1096 | regm_t retregs; |
| 1097 | 1097 | unsigned reg; |
| 1098 | 1098 | code *c; |
| … |
… |
|
| 1125 | 1125 | #endif |
| 1126 | 1126 | } |
| 1127 | 1127 | |
| 1128 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 1128 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 1129 | 1129 | /***************************** |
| 1130 | 1130 | * Returns: |
| 1131 | 1131 | * # of bytes stored |
| … |
… |
|
| 1401 | 1401 | if (config.wflags & WFincbp && farfunc) |
| 1402 | 1402 | c = gen1(c,0x40 + BP); /* INC BP */ |
| 1403 | 1403 | if (config.target_cpu < TARGET_80286 || |
| 1404 | | config.exe & (EX_LINUX | EX_LINUX64 | EX_OSX | EX_OSX64 | EX_FREEBSD | EX_FREEBSD64 | EX_SOLARIS | EX_SOLARIS64) || |
| | 1404 | config.exe & (EX_LINUX | EX_LINUX64 | EX_OSX | EX_OSX64 | EX_FREEBSD | EX_FREEBSD64 | EX_SOLARIS | EX_SOLARIS64 | EX_HAIKU) || |
| 1405 | 1405 | !localsize || |
| 1406 | 1406 | config.flags & CFGstack || |
| 1407 | 1407 | (xlocalsize >= 0x1000 && config.exe & EX_flat) || |
| … |
… |
|
| 2077 | 2077 | |
| 2078 | 2078 | code *cod3_load_got() |
| 2079 | 2079 | { |
| 2080 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 2080 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 2081 | 2081 | code *c; |
| 2082 | 2082 | code *cgot; |
| 2083 | 2083 | |
| … |
… |
|
| 2259 | 2259 | sthunk->Soffset = thunkoffset; |
| 2260 | 2260 | sthunk->Ssize = Coffset - thunkoffset; /* size of thunk */ |
| 2261 | 2261 | sthunk->Sseg = cseg; |
| 2262 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 2262 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 2263 | 2263 | objpubdef(cseg,sthunk,sthunk->Soffset); |
| 2264 | 2264 | #endif |
| 2265 | 2265 | searchfixlist(sthunk); /* resolve forward refs */ |
| … |
… |
|
| 4251 | 4251 | // un-named external with is the start of .rodata or .data |
| 4252 | 4252 | case FLextern: /* external data symbol */ |
| 4253 | 4253 | case FLtlsdata: |
| 4254 | | #if TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 4254 | #if TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 4255 | 4255 | case FLgot: |
| 4256 | 4256 | case FLgotoff: |
| 4257 | 4257 | #endif |
| … |
… |
|
| 4344 | 4344 | // un-named external with is the start of .rodata or .data |
| 4345 | 4345 | case FLextern: /* external data symbol */ |
| 4346 | 4346 | case FLtlsdata: |
| 4347 | | #if TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 4347 | #if TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 4348 | 4348 | case FLgot: |
| 4349 | 4349 | case FLgotoff: |
| 4350 | 4350 | #endif |
| … |
… |
|
| 4568 | 4568 | // resolve directly. |
| 4569 | 4569 | if (s->Sseg == p->Lseg && |
| 4570 | 4570 | (s->Sclass == SCstatic || |
| 4571 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 4571 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 4572 | 4572 | (!(config.flags3 & CFG3pic) && s->Sclass == SCglobal)) && |
| 4573 | 4573 | #else |
| 4574 | 4574 | s->Sclass == SCglobal) && |
-
diff -r a61748274812 src/dmd/backend/cod4.c
|
a
|
b
|
|
| 749 | 749 | byte = (sz == 1); // 1 for byte operation, else 0 |
| 750 | 750 | if (tyfloating(tyml)) |
| 751 | 751 | { |
| 752 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 752 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 753 | 753 | if (op == OPnegass) |
| 754 | 754 | c = cdnegass87(e,pretregs); |
| 755 | 755 | else |
| … |
… |
|
| 1192 | 1192 | |
| 1193 | 1193 | |
| 1194 | 1194 | if (tyfloating(tyml)) |
| 1195 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 1195 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 1196 | 1196 | return opass87(e,pretregs); |
| 1197 | 1197 | #else |
| 1198 | 1198 | return opassdbl(e,pretregs,op); |
| … |
… |
|
| 1685 | 1685 | unsigned rex = (I64 && sz == 8) ? REX_W : 0; |
| 1686 | 1686 | unsigned grex = rex << 16; // 64 bit operands |
| 1687 | 1687 | |
| 1688 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 1688 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 1689 | 1689 | if (tyfloating(tym)) /* if floating operation */ |
| 1690 | 1690 | { |
| 1691 | 1691 | retregs = mPSW; |
| … |
… |
|
| 2427 | 2427 | case OPd_s64: |
| 2428 | 2428 | return cnvt87(e,pretregs); |
| 2429 | 2429 | case OPd_u32: // use subroutine, not 8087 |
| 2430 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 2430 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 2431 | 2431 | retregs = mST0; |
| 2432 | 2432 | #else |
| 2433 | 2433 | retregs = DOUBLEREGS; |
-
diff -r a61748274812 src/dmd/backend/code.h
|
a
|
b
|
|
| 110 | 110 | #define RMload (1 << 30) |
| 111 | 111 | #define RMstore (1 << 31) |
| 112 | 112 | |
| 113 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 113 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 114 | 114 | // To support positional independent code, |
| 115 | 115 | // must be able to remove BX from available registers |
| 116 | 116 | extern regm_t ALLREGS; |
| … |
… |
|
| 669 | 669 | cd_t cdcomma; |
| 670 | 670 | cd_t cdloglog; |
| 671 | 671 | cd_t cdshift; |
| 672 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 672 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 673 | 673 | cd_t cdindpic; |
| 674 | 674 | #endif |
| 675 | 675 | cd_t cdind; |
-
diff -r a61748274812 src/dmd/backend/debug.c
|
a
|
b
|
|
| 101 | 101 | if (t & mTYpasobj) |
| 102 | 102 | dbg_printf("mTYpasobj|"); |
| 103 | 103 | #endif |
| 104 | | #if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 |
| | 104 | #if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ |
| 105 | 105 | if (t & mTYtransu) |
| 106 | 106 | dbg_printf("mTYtransu|"); |
| 107 | 107 | #endif |
| … |
… |
|
| 294 | 294 | "ndp ","farda ","local ","csdat ","tlsdat", |
| 295 | 295 | "bprel ","frameh","asm ","blocko","alloca", |
| 296 | 296 | "stack ","dsym ", |
| 297 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 297 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 298 | 298 | "got ","gotoff", |
| 299 | 299 | #endif |
| 300 | 300 | #endif |
-
diff -r a61748274812 src/dmd/backend/dwarf.c
|
a
|
b
|
|
| 22 | 22 | #include <malloc.h> |
| 23 | 23 | #endif |
| 24 | 24 | |
| 25 | | #if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 |
| | 25 | #if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ |
| 26 | 26 | #include <signal.h> |
| 27 | 27 | #include <unistd.h> |
| 28 | 28 | #include <errno.h> |
| … |
… |
|
| 402 | 402 | linebuf->writeString((char *)list_ptr(pl)); |
| 403 | 403 | linebuf->writeByte(0); |
| 404 | 404 | } |
| 405 | | #if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 |
| | 405 | #if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ |
| 406 | 406 | for (pl = pathsyslist; pl; pl = list_next(pl)) |
| 407 | 407 | { |
| 408 | 408 | linebuf->writeString((char *)list_ptr(pl)); |
-
diff -r a61748274812 src/dmd/backend/el.c
|
a
|
b
|
|
| 1329 | 1329 | return e; |
| 1330 | 1330 | } |
| 1331 | 1331 | #endif |
| 1332 | | #if TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 1332 | #if TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 1333 | 1333 | |
| 1334 | 1334 | elem *el_picvar(symbol *s) |
| 1335 | 1335 | { elem *e; |
| … |
… |
|
| 1531 | 1531 | |
| 1532 | 1532 | //printf("el_var(s = '%s')\n", s->Sident); |
| 1533 | 1533 | //printf("%x\n", s->Stype->Tty); |
| 1534 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 1534 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 1535 | 1535 | // OSX is currently always pic |
| 1536 | 1536 | if (config.flags3 & CFG3pic && |
| 1537 | | #if TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 1537 | #if TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 1538 | 1538 | (!(s->Stype->Tty & mTYthread) || I64) && |
| 1539 | 1539 | #endif |
| 1540 | 1540 | !tyfunc(s->ty())) |
| … |
… |
|
| 1553 | 1553 | //printf("thread local %s\n", s->Sident); |
| 1554 | 1554 | #if TARGET_OSX |
| 1555 | 1555 | ; |
| 1556 | | #elif TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 1556 | #elif TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 1557 | 1557 | /* For 32 bit: |
| 1558 | 1558 | * Generate for var locals: |
| 1559 | 1559 | * MOV reg,GS:[00000000] // add GS: override in back end |
| … |
… |
|
| 1658 | 1658 | { elem *e; |
| 1659 | 1659 | |
| 1660 | 1660 | //printf("el_var(s = '%s')\n", s->Sident); |
| 1661 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 1661 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 1662 | 1662 | if (config.flags3 & CFG3pic && !tyfunc(s->ty())) |
| 1663 | 1663 | return el_picvar(s); |
| 1664 | 1664 | #endif |
| … |
… |
|
| 1755 | 1755 | return e; |
| 1756 | 1756 | } |
| 1757 | 1757 | #endif |
| 1758 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 1758 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 1759 | 1759 | if (config.flags3 & CFG3pic && tyfunc(s->ty())) |
| 1760 | 1760 | e = el_picvar(s); |
| 1761 | 1761 | else |
-
diff -r a61748274812 src/dmd/backend/elfobj.c
|
a
|
b
|
|
| 1863 | 1863 | } |
| 1864 | 1864 | break; |
| 1865 | 1865 | case mTYman_std: |
| 1866 | | #if TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 1866 | #if TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 1867 | 1867 | if (tyfunc(s->ty()) && !variadic(s->Stype)) |
| 1868 | 1868 | #else |
| 1869 | 1869 | if (!(config.flags4 & CFG4oldstdmangle) && |
-
diff -r a61748274812 src/dmd/backend/evalu8.c
|
a
|
b
|
|
| 42 | 42 | |
| 43 | 43 | extern void error(const char *filename, unsigned linnum, const char *format, ...); |
| 44 | 44 | |
| 45 | | #if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 |
| | 45 | #if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ |
| 46 | 46 | int _status87() |
| 47 | 47 | { |
| 48 | 48 | return fetestexcept(FE_ALL_EXCEPT); |
| … |
… |
|
| 514 | 514 | if (e2->Eoper == OPconst) |
| 515 | 515 | { targ_int i = e2->EV.Vint; |
| 516 | 516 | |
| 517 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 517 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 518 | 518 | if (i && e1->EV.sp.Vsym->Sfl == FLgot) |
| 519 | 519 | break; |
| 520 | 520 | #endif |
-
diff -r a61748274812 src/dmd/backend/global.h
|
a
|
b
|
|
| 546 | 546 | void dwarf_CFA_args_size(size_t sz); |
| 547 | 547 | #endif |
| 548 | 548 | |
| 549 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 549 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 550 | 550 | void elfobj_gotref(symbol *s); |
| 551 | 551 | symbol *elfobj_getGOTsym(); |
| 552 | 552 | void elfobj_refGOTsym(); |
-
diff -r a61748274812 src/dmd/backend/machobj.c
|
a
|
b
|
|
| 21 | 21 | #include <malloc.h> |
| 22 | 22 | #endif |
| 23 | 23 | |
| 24 | | #if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 |
| | 24 | #if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ |
| 25 | 25 | #include <signal.h> |
| 26 | 26 | #include <unistd.h> |
| 27 | 27 | #endif |
| … |
… |
|
| 1615 | 1615 | strupr(dest); // to upper case |
| 1616 | 1616 | break; |
| 1617 | 1617 | case mTYman_std: |
| 1618 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 1618 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 1619 | 1619 | if (tyfunc(s->ty()) && !variadic(s->Stype)) |
| 1620 | 1620 | #else |
| 1621 | 1621 | if (!(config.flags4 & CFG4oldstdmangle) && |
-
diff -r a61748274812 src/dmd/backend/nteh.c
|
a
|
b
|
|
| 415 | 415 | /* An sindex value of -2 is a magic value that tells the |
| 416 | 416 | * stack unwinder to skip this frame. |
| 417 | 417 | */ |
| 418 | | assert(config.exe & (EX_LINUX | EX_LINUX64 | EX_OSX | EX_OSX64 | EX_FREEBSD | EX_FREEBSD64 | EX_SOLARIS | EX_SOLARIS64)); |
| | 418 | assert(config.exe & (EX_LINUX | EX_LINUX64 | EX_OSX | EX_OSX64 | EX_FREEBSD | EX_FREEBSD64 | EX_SOLARIS | EX_SOLARIS64 | EX_HAIKU)); |
| 419 | 419 | cs.Iop = 0x68; |
| 420 | 420 | cs.Iflags = 0; |
| 421 | 421 | cs.Irex = 0; |
-
diff -r a61748274812 src/dmd/backend/optabgen.c
|
a
|
b
|
|
| 703 | 703 | case FLctor: segfl[i] = -1; break; |
| 704 | 704 | case FLdtor: segfl[i] = -1; break; |
| 705 | 705 | case FLdsymbol: segfl[i] = -1; break; |
| 706 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 706 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 707 | 707 | case FLgot: segfl[i] = -1; break; |
| 708 | 708 | case FLgotoff: segfl[i] = -1; break; |
| 709 | 709 | #endif |
-
diff -r a61748274812 src/dmd/backend/os.c
|
a
|
b
|
|
| 26 | 26 | #include <sys\stat.h> |
| 27 | 27 | #endif |
| 28 | 28 | |
| 29 | | #if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 |
| | 29 | #if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ |
| 30 | 30 | #include <sys/types.h> |
| 31 | 31 | #include <sys/stat.h> |
| 32 | 32 | #include <fcntl.h> |
| … |
… |
|
| 658 | 658 | if (!find) |
| 659 | 659 | return 0; |
| 660 | 660 | return (find->attribute & FA_DIREC) ? 2 : 1; |
| 661 | | #elif linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 |
| | 661 | #elif linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ |
| 662 | 662 | struct stat buf; |
| 663 | 663 | |
| 664 | 664 | return stat(name,&buf) == 0; /* file exists if stat succeeded */ |
| … |
… |
|
| 735 | 735 | |
| 736 | 736 | int file_write(char *name, void *buffer, unsigned len) |
| 737 | 737 | { |
| 738 | | #if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 |
| | 738 | #if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ |
| 739 | 739 | int fd; |
| 740 | 740 | ssize_t numwritten; |
| 741 | 741 | |
| … |
… |
|
| 811 | 811 | |
| 812 | 812 | int file_createdirs(char *name) |
| 813 | 813 | { |
| 814 | | #if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 |
| | 814 | #if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ |
| 815 | 815 | return 1; |
| 816 | 816 | #endif |
| 817 | 817 | #if _WIN32 |
| … |
… |
|
| 861 | 861 | } |
| 862 | 862 | #endif |
| 863 | 863 | |
| 864 | | #if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 |
| | 864 | #if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ |
| 865 | 865 | int os_critsecsize() |
| 866 | 866 | { |
| 867 | 867 | return sizeof(pthread_mutex_t); |
-
diff -r a61748274812 src/dmd/backend/out.c
|
a
|
b
|
|
| 408 | 408 | flags = CFoff | CFseg; |
| 409 | 409 | if (tybasic(dt->Dty) == TYcptr) |
| 410 | 410 | reftocodseg(seg,offset,dt->DTabytes); |
| 411 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 411 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 412 | 412 | else |
| 413 | 413 | reftodatseg(seg,offset,dt->DTabytes,dt->DTseg,flags); |
| 414 | 414 | #else |
-
diff -r a61748274812 src/dmd/backend/parser.h
|
a
|
b
|
|
| 156 | 156 | #define FQtop 8 // top level file, already open |
| 157 | 157 | #define FQqual 0x10 // filename is already qualified |
| 158 | 158 | #endif |
| 159 | | #if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 |
| | 159 | #if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU |
| 160 | 160 | #define FQnext 0x20 // search starts after directory |
| 161 | 161 | #endif // of last included file |
| 162 | 162 | |
| … |
… |
|
| 698 | 698 | |
| 699 | 699 | extern list_t pathlist; // include paths |
| 700 | 700 | extern list_t headers; // pre-include files |
| 701 | | #if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 |
| | 701 | #if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ |
| 702 | 702 | extern list_t pathsyslist; // include path for .h file overrides |
| 703 | 703 | #endif |
| 704 | 704 | |
-
diff -r a61748274812 src/dmd/backend/strtold.c
|
a
|
b
|
|
| 20 | 20 | #if _WIN32 |
| 21 | 21 | #include <fltpnt.h> |
| 22 | 22 | #endif |
| 23 | | #if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 |
| | 23 | #if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ |
| 24 | 24 | #include <errno.h> |
| 25 | 25 | #endif |
| 26 | 26 | |
| … |
… |
|
| 30 | 30 | void __pascal __set_errno (int an_errno); |
| 31 | 31 | #endif |
| 32 | 32 | |
| 33 | | #if _WIN32 || linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 |
| | 33 | #if _WIN32 || linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ |
| 34 | 34 | |
| 35 | 35 | #if 0 |
| 36 | 36 | /* This is for compilers that don't support hex float literals, |
-
diff -r a61748274812 src/dmd/backend/token.h
|
a
|
b
|
|
| 179 | 179 | TK_stdcall, |
| 180 | 180 | TK_syscall, |
| 181 | 181 | TK_try, |
| 182 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 182 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 183 | 183 | TK_attribute, |
| 184 | 184 | TK_extension, |
| 185 | 185 | TK_format, |
| … |
… |
|
| 211 | 211 | TKandand,TKshl,TKshr,TKrcur,TKeq,TKaddass,TKminass,TKmulass,TKdivass, |
| 212 | 212 | TKmodass,TKshrass,TKshlass,TKandass,TKxorass,TKorass,TKsemi, |
| 213 | 213 | TKadd,TKellipsis, |
| 214 | | #if !TX86 || TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 214 | #if !TX86 || TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 215 | 215 | TKdollar, |
| 216 | 216 | #endif |
| 217 | 217 | |
-
diff -r a61748274812 src/dmd/backend/ty.h
|
a
|
b
|
|
| 304 | 304 | /* Array to give the 'relaxed' type for relaxed type checking */ |
| 305 | 305 | extern unsigned char _tyrelax[]; |
| 306 | 306 | #define type_relax (config.flags3 & CFG3relax) // !=0 if relaxed type checking |
| 307 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 307 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 308 | 308 | #define type_semirelax (config.flags3 & CFG3semirelax) // !=0 if semi-relaxed type checking |
| 309 | 309 | #else |
| 310 | 310 | #define type_semirelax type_relax |
-
diff -r a61748274812 src/dmd/backend/type.h
|
a
|
b
|
|
| 54 | 54 | unsigned short Tflags; // TFxxxxx |
| 55 | 55 | |
| 56 | 56 | #if TX86 |
| 57 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 57 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 58 | 58 | #define mTYnoret 0x010000 // function has no return |
| 59 | 59 | #define mTYtransu 0x010000 // transparent union |
| 60 | 60 | #else |
| … |
… |
|
| 68 | 68 | #define mTYsyscall 0x400000 |
| 69 | 69 | #define mTYjava 0x800000 |
| 70 | 70 | |
| 71 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 71 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 72 | 72 | #define mTYTFF 0xFE0000 |
| 73 | 73 | #else |
| 74 | 74 | #define mTYTFF 0xFF0000 |
-
diff -r a61748274812 src/dmd/backend/var.c
|
a
|
b
|
|
| 58 | 58 | #if MEMMODELS == 1 |
| 59 | 59 | tym_t functypetab[LINK_MAXDIM] = |
| 60 | 60 | { |
| 61 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 61 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 62 | 62 | TYnfunc, |
| 63 | 63 | TYnpfunc, |
| 64 | 64 | TYnpfunc, |
-
diff -r a61748274812 src/dmd/cond.c
|
a
|
b
|
|
| 138 | 138 | #endif |
| 139 | 139 | "OSX", "FreeBSD", |
| 140 | 140 | "Solaris", |
| | 141 | "Haiku", |
| 141 | 142 | "LittleEndian", "BigEndian", |
| 142 | 143 | "all", |
| 143 | 144 | "none", |
-
diff -r a61748274812 src/dmd/e2ir.c
|
a
|
b
|
|
| 174 | 174 | if ((global.params.isLinux || |
| 175 | 175 | global.params.isOSX || |
| 176 | 176 | global.params.isFreeBSD || |
| 177 | | global.params.isSolaris) && tf->linkage != LINKd) |
| | 177 | global.params.isSolaris || |
| | 178 | global.params.isHaiku) && tf->linkage != LINKd) |
| 178 | 179 | ; // ehidden goes last on Linux/OSX C++ |
| 179 | 180 | else |
| 180 | 181 | { |
| … |
… |
|
| 1582 | 1583 | if (global.params.useInvariants && t1->ty == Tclass && |
| 1583 | 1584 | !((TypeClass *)t1)->sym->isInterfaceDeclaration()) |
| 1584 | 1585 | { |
| 1585 | | #if TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 1586 | #if TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 1586 | 1587 | e = el_bin(OPcall, TYvoid, el_var(rtlsym[RTLSYM__DINVARIANT]), e); |
| 1587 | 1588 | #else |
| 1588 | 1589 | e = el_bin(OPcall, TYvoid, el_var(rtlsym[RTLSYM_DINVARIANT]), e); |
-
diff -r a61748274812 src/dmd/eh.c
|
a
|
b
|
|
| 26 | 26 | symbol *except_gentables() |
| 27 | 27 | { |
| 28 | 28 | //printf("except_gentables()\n"); |
| 29 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 29 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 30 | 30 | symbol *s; |
| 31 | 31 | int sz; // size so far |
| 32 | 32 | dt_t **pdt; |
-
diff -r a61748274812 src/dmd/expression.c
|
a
|
b
|
|
| 1626 | 1626 | #if __APPLE__ |
| 1627 | 1627 | return (__inline_isnan(x1) && __inline_isnan(x2)) || |
| 1628 | 1628 | #else |
| 1629 | | return (isnan(x1) && isnan(x2)) || |
| | 1629 | return (__isnan(x1) && __isnan(x2)) || |
| 1630 | 1630 | #endif |
| 1631 | 1631 | /* In some cases, the REALPAD bytes get garbage in them, |
| 1632 | 1632 | * so be sure and ignore them. |
| … |
… |
|
| 1735 | 1735 | #if __APPLE__ |
| 1736 | 1736 | if (__inline_isnan(value)) |
| 1737 | 1737 | #else |
| 1738 | | if (isnan(value)) |
| | 1738 | if (__isnan(value)) |
| 1739 | 1739 | #endif |
| 1740 | 1740 | buf->writestring("NAN"); // no -NAN bugs |
| 1741 | 1741 | else |
-
diff -r a61748274812 src/dmd/glue.c
|
a
|
b
|
|
| 610 | 610 | // Pull in RTL startup code |
| 611 | 611 | if (func->isMain()) |
| 612 | 612 | { objextdef("_main"); |
| 613 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 613 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 614 | 614 | obj_ehsections(); // initialize exception handling sections |
| 615 | 615 | #endif |
| 616 | 616 | #if TARGET_WINDOS |
| … |
… |
|
| 770 | 770 | pi++; |
| 771 | 771 | } |
| 772 | 772 | |
| 773 | | if ((global.params.isLinux || global.params.isOSX || global.params.isFreeBSD || global.params.isSolaris) && |
| | 773 | if ((global.params.isLinux || global.params.isOSX || global.params.isFreeBSD || global.params.isSolaris || global.params.isHaiku) && |
| 774 | 774 | linkage != LINKd && shidden && sthis) |
| 775 | 775 | { |
| 776 | 776 | /* swap shidden and sthis |
| … |
… |
|
| 1015 | 1015 | s->toObjFile(0); |
| 1016 | 1016 | } |
| 1017 | 1017 | |
| 1018 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 1018 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 1019 | 1019 | // A hack to get a pointer to this function put in the .dtors segment |
| 1020 | 1020 | if (ident && memcmp(ident->toChars(), "_STD", 4) == 0) |
| 1021 | 1021 | obj_staticdtor(s); |
| … |
… |
|
| 1061 | 1061 | //case Tbit: t = TYuchar; break; |
| 1062 | 1062 | case Tbool: t = TYbool; break; |
| 1063 | 1063 | case Tchar: t = TYchar; break; |
| 1064 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 1064 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 1065 | 1065 | case Twchar: t = TYwchar_t; break; |
| 1066 | 1066 | case Tdchar: t = TYdchar; break; |
| 1067 | 1067 | #else |
| … |
… |
|
| 1151 | 1151 | |
| 1152 | 1152 | case LINKc: |
| 1153 | 1153 | tyf = TYnfunc; |
| 1154 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 1154 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 1155 | 1155 | if (retStyle() == RETstack) |
| 1156 | 1156 | tyf = TYhfunc; |
| 1157 | 1157 | #endif |
-
diff -r a61748274812 src/dmd/inifile.c
|
a
|
b
|
|
| 111 | 111 | filename = (char *)FileName::replaceName(argv0, inifile); |
| 112 | 112 | if (!FileName::exists(filename)) |
| 113 | 113 | { |
| 114 | | #if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 |
| 115 | | #if __GLIBC__ || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 // This fix by Thomas Kuehne |
| | 114 | #if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ |
| | 115 | #if __GLIBC__ || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ // This fix by Thomas Kuehne |
| 116 | 116 | /* argv0 might be a symbolic link, |
| 117 | 117 | * so try again looking past it to the real path |
| 118 | 118 | */ |
-
diff -r a61748274812 src/dmd/link.c
|
a
|
b
|
|
| 19 | 19 | #include <process.h> |
| 20 | 20 | #endif |
| 21 | 21 | |
| 22 | | #if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 |
| | 22 | #if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ |
| 23 | 23 | #include <sys/types.h> |
| 24 | 24 | #include <sys/wait.h> |
| 25 | 25 | #include <unistd.h> |
| … |
… |
|
| 198 | 198 | delete lnkfilename; |
| 199 | 199 | } |
| 200 | 200 | return status; |
| 201 | | #elif linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 |
| | 201 | #elif linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ |
| 202 | 202 | pid_t childpid; |
| 203 | 203 | int i; |
| 204 | 204 | int status; |
| … |
… |
|
| 486 | 486 | //printf("spawning '%s'\n",file); |
| 487 | 487 | #if _WIN32 |
| 488 | 488 | return spawnl(0,file,file,args,NULL); |
| 489 | | #elif linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 |
| | 489 | #elif linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ |
| 490 | 490 | char *full; |
| 491 | 491 | int cmdl = strlen(cmd); |
| 492 | 492 | |
| … |
… |
|
| 549 | 549 | else |
| 550 | 550 | ex = global.params.exefile; |
| 551 | 551 | return spawnv(0,ex,(char **)argv.data); |
| 552 | | #elif linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 |
| | 552 | #elif linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ |
| 553 | 553 | pid_t childpid; |
| 554 | 554 | int status; |
| 555 | 555 | |
-
diff -r a61748274812 src/dmd/mangle.c
|
a
|
b
|
|
| 24 | 24 | #include "id.h" |
| 25 | 25 | #include "module.h" |
| 26 | 26 | |
| 27 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 27 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 28 | 28 | char *cpp_mangle(Dsymbol *s); |
| 29 | 29 | #endif |
| 30 | 30 | |
| … |
… |
|
| 119 | 119 | return ident->toChars(); |
| 120 | 120 | |
| 121 | 121 | case LINKcpp: |
| 122 | | #if DMDV2 && (TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS) |
| | 122 | #if DMDV2 && (TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU) |
| 123 | 123 | return cpp_mangle(this); |
| 124 | 124 | #else |
| 125 | 125 | // Windows C++ mangling is done by C++ back end |
-
diff -r a61748274812 src/dmd/mars.c
|
a
|
b
|
|
| 14 | 14 | #include <assert.h> |
| 15 | 15 | #include <limits.h> |
| 16 | 16 | |
| 17 | | #if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 |
| | 17 | #if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ |
| 18 | 18 | #include <errno.h> |
| 19 | 19 | #endif |
| 20 | 20 | |
| … |
… |
|
| 59 | 59 | |
| 60 | 60 | #if TARGET_WINDOS |
| 61 | 61 | obj_ext = "obj"; |
| 62 | | #elif TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 62 | #elif TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 63 | 63 | obj_ext = "o"; |
| 64 | 64 | #elif TARGET_NET |
| 65 | 65 | #else |
| … |
… |
|
| 68 | 68 | |
| 69 | 69 | #if TARGET_WINDOS |
| 70 | 70 | lib_ext = "lib"; |
| 71 | | #elif TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 71 | #elif TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 72 | 72 | lib_ext = "a"; |
| 73 | 73 | #elif TARGET_NET |
| 74 | 74 | #else |
| … |
… |
|
| 77 | 77 | |
| 78 | 78 | #if TARGET_WINDOS |
| 79 | 79 | dll_ext = "dll"; |
| 80 | | #elif TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 80 | #elif TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 81 | 81 | dll_ext = "so"; |
| 82 | 82 | #elif TARGET_OSX |
| 83 | 83 | dll_ext = "dylib"; |
| … |
… |
|
| 354 | 354 | |
| 355 | 355 | #if TARGET_WINDOS |
| 356 | 356 | global.params.defaultlibname = "phobos"; |
| 357 | | #elif TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 357 | #elif TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 358 | 358 | global.params.defaultlibname = "phobos"; |
| 359 | 359 | #elif TARGET_NET |
| 360 | 360 | #else |
| … |
… |
|
| 375 | 375 | VersionCondition::addPredefinedGlobalIdent("Posix"); |
| 376 | 376 | VersionCondition::addPredefinedGlobalIdent("linux"); |
| 377 | 377 | global.params.isLinux = 1; |
| | 378 | #elif TARGET_HAIKU |
| | 379 | VersionCondition::addPredefinedGlobalIdent("Haiku"); |
| | 380 | VersionCondition::addPredefinedGlobalIdent("Haiku"); |
| | 381 | global.params.isHaiku = 1; |
| 378 | 382 | #elif TARGET_OSX |
| 379 | 383 | VersionCondition::addPredefinedGlobalIdent("Posix"); |
| 380 | 384 | VersionCondition::addPredefinedGlobalIdent("OSX"); |
| … |
… |
|
| 403 | 407 | |
| 404 | 408 | #if _WIN32 |
| 405 | 409 | inifilename = inifile(argv[0], "sc.ini"); |
| 406 | | #elif linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 |
| | 410 | #elif linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ |
| 407 | 411 | inifilename = inifile(argv[0], "dmd.conf"); |
| 408 | 412 | #else |
| 409 | 413 | #error "fix this" |
| … |
… |
|
| 428 | 432 | global.params.link = 0; |
| 429 | 433 | else if (strcmp(p + 1, "cov") == 0) |
| 430 | 434 | global.params.cov = 1; |
| 431 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 435 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 432 | 436 | else if (strcmp(p + 1, "fPIC") == 0) |
| 433 | 437 | global.params.pic = 1; |
| 434 | 438 | #endif |
-
diff -r a61748274812 src/dmd/mars.h
|
a
|
b
|
|
| 86 | 86 | #define MODULEINFO_IS_STRUCT DMDV2 // if ModuleInfo is a struct rather than a class |
| 87 | 87 | |
| 88 | 88 | // Set if C++ mangling is done by the front end |
| 89 | | #define CPP_MANGLE (DMDV2 && (TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS)) |
| | 89 | #define CPP_MANGLE (DMDV2 && (TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU)) |
| 90 | 90 | |
| 91 | 91 | /* Other targets are TARGET_LINUX, TARGET_OSX, TARGET_FREEBSD and |
| 92 | 92 | * TARGET_SOLARIS, which are |
| … |
… |
|
| 98 | 98 | #define OMFOBJ 1 |
| 99 | 99 | #endif |
| 100 | 100 | |
| 101 | | #if TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 101 | #if TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 102 | 102 | #ifndef ELFOBJ |
| 103 | 103 | #define ELFOBJ 1 |
| 104 | 104 | #endif |
| … |
… |
|
| 133 | 133 | char cpu; // target CPU |
| 134 | 134 | char isX86_64; // generate X86_64 bit code |
| 135 | 135 | char isLinux; // generate code for linux |
| | 136 | char isHaiku; // generate code for Haiku |
| 136 | 137 | char isOSX; // generate code for Mac OSX |
| 137 | 138 | char isWindows; // generate code for Windows |
| 138 | 139 | char isFreeBSD; // generate code for FreeBSD |
-
diff -r a61748274812 src/dmd/msc.c
|
a
|
b
|
|
| 81 | 81 | if (params->pic) |
| 82 | 82 | config.flags3 |= CFG3pic; |
| 83 | 83 | #endif |
| | 84 | #if TARGET_HAIKU |
| | 85 | config.exe = EX_HAIKU; |
| | 86 | config.flags |= CFGnoebp; |
| | 87 | config.flags |= CFGalwaysframe; |
| | 88 | if (params->pic) |
| | 89 | config.flags3 |= CFG3pic; |
| | 90 | #endif |
| 84 | 91 | #if TARGET_OSX |
| 85 | 92 | if (params->isX86_64) |
| 86 | 93 | config.exe = EX_OSX64; |
-
diff -r a61748274812 src/dmd/mtype.c
|
a
|
b
|
|
| 71 | 71 | int REALSIZE = 16; |
| 72 | 72 | int REALPAD = 6; |
| 73 | 73 | int REALALIGNSIZE = 16; |
| 74 | | #elif TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 74 | #elif TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 75 | 75 | int REALSIZE = 12; |
| 76 | 76 | int REALPAD = 2; |
| 77 | 77 | int REALALIGNSIZE = 4; |
| … |
… |
|
| 236 | 236 | if (global.params.isX86_64) |
| 237 | 237 | { |
| 238 | 238 | PTRSIZE = 8; |
| 239 | | if (global.params.isLinux || global.params.isFreeBSD || global.params.isSolaris) |
| | 239 | if (global.params.isLinux || global.params.isFreeBSD || global.params.isSolaris || global.params.isHaiku) |
| 240 | 240 | { |
| 241 | 241 | REALSIZE = 16; |
| 242 | 242 | REALPAD = 6; |
| … |
… |
|
| 251 | 251 | #if TARGET_OSX |
| 252 | 252 | REALSIZE = 16; |
| 253 | 253 | REALPAD = 6; |
| 254 | | #elif TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 254 | #elif TARGET_LINUX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 255 | 255 | REALSIZE = 12; |
| 256 | 256 | REALPAD = 2; |
| 257 | 257 | #else |
| … |
… |
|
| 1077 | 1077 | sz = REALALIGNSIZE; |
| 1078 | 1078 | break; |
| 1079 | 1079 | |
| 1080 | | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS |
| | 1080 | #if TARGET_LINUX || TARGET_OSX || TARGET_FREEBSD || TARGET_SOLARIS || TARGET_HAIKU |
| 1081 | 1081 | case Tint64: |
| 1082 | 1082 | case Tuns64: |
| 1083 | 1083 | case Tfloat64: |
-
diff -r a61748274812 src/dmd/root/man.c
|
a
|
b
|
|
| 26 | 26 | |
| 27 | 27 | #endif |
| 28 | 28 | |
| 29 | | #if linux || __FreeBSD__ || __sun&&__SVR4 |
| | 29 | #if linux || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ |
| 30 | 30 | |
| 31 | 31 | #include <sys/types.h> |
| 32 | 32 | #include <sys/wait.h> |
-
diff -r a61748274812 src/dmd/root/port.c
|
a
|
b
|
|
| 315 | 315 | |
| 316 | 316 | #endif |
| 317 | 317 | |
| 318 | | #if linux || __APPLE__ || __FreeBSD__ |
| | 318 | #if linux || __APPLE__ || __FreeBSD__ || __HAIKU__ |
| 319 | 319 | |
| 320 | 320 | #include <math.h> |
| 321 | 321 | #if linux |
| … |
… |
|
| 374 | 374 | #if __APPLE__ |
| 375 | 375 | return __inline_isnan(r); |
| 376 | 376 | #else |
| 377 | | return ::isnan(r); |
| | 377 | return ::__isnan(r); |
| 378 | 378 | #endif |
| 379 | 379 | } |
| 380 | 380 | |
| … |
… |
|
| 383 | 383 | #if __APPLE__ |
| 384 | 384 | return __inline_isnan(r); |
| 385 | 385 | #else |
| 386 | | return ::isnan(r); |
| | 386 | return ::__isnan(r); |
| 387 | 387 | #endif |
| 388 | 388 | } |
| 389 | 389 | |
| … |
… |
|
| 415 | 415 | #if __APPLE__ |
| 416 | 416 | return fpclassify(r) == FP_INFINITE; |
| 417 | 417 | #else |
| 418 | | return ::isinf(r); |
| | 418 | return ::__isinf(r); |
| 419 | 419 | #endif |
| 420 | 420 | } |
| 421 | 421 | |
-
diff -r a61748274812 src/dmd/root/response.c
|
a
|
b
|
|
| 19 | 19 | #include <io.h> |
| 20 | 20 | #endif |
| 21 | 21 | |
| 22 | | #if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 |
| | 22 | #if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ |
| 23 | 23 | #include <sys/stat.h> |
| 24 | 24 | #include <sys/types.h> |
| 25 | 25 | #include <fcntl.h> |
-
diff -r a61748274812 src/dmd/root/rmem.c
|
a
|
b
|
|
| 6 | 6 | #include <stdlib.h> |
| 7 | 7 | #include <string.h> |
| 8 | 8 | |
| 9 | | #if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 |
| | 9 | #if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ |
| 10 | 10 | #include "../root/rmem.h" |
| 11 | 11 | #else |
| 12 | 12 | #include "rmem.h" |
-
diff -r a61748274812 src/dmd/root/root.c
|
a
|
b
|
|
| 7 | 7 | // in artistic.txt, or the GNU General Public License in gnu.txt. |
| 8 | 8 | // See the included readme.txt for details. |
| 9 | 9 | |
| 10 | | #define POSIX (linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4) |
| | 10 | #define POSIX (linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__) |
| 11 | 11 | |
| 12 | 12 | #include <stdio.h> |
| 13 | 13 | #include <stdlib.h> |
-
diff -r a61748274812 src/dmd/tk/filespec.c
|
a
|
b
|
|
| 25 | 25 | #include <ctype.h> |
| 26 | 26 | #endif |
| 27 | 27 | |
| 28 | | #if M_UNIX || M_XENIX || linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 |
| | 28 | #if M_UNIX || M_XENIX || linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ |
| 29 | 29 | #include <stdlib.h> |
| 30 | 30 | #include <unistd.h> |
| 31 | 31 | #endif |
| … |
… |
|
| 87 | 87 | /**********************/ |
| 88 | 88 | char * filespecrootpath(char *filespec) |
| 89 | 89 | { |
| 90 | | #if SUN || M_UNIX || M_XENIX || linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 |
| | 90 | #if SUN || M_UNIX || M_XENIX || linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ |
| 91 | 91 | #define DIRCHAR '/' |
| 92 | 92 | #endif |
| 93 | 93 | #if MSDOS || __OS2__ || __NT__ || _WIN32 |
| … |
… |
|
| 112 | 112 | #endif |
| 113 | 113 | |
| 114 | 114 | /* get current working directory path */ |
| 115 | | #if SUN || M_UNIX || M_XENIX || linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 |
| | 115 | #if SUN || M_UNIX || M_XENIX || linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ |
| 116 | 116 | cwd_t = (char *)getcwd(NULL, 256); |
| 117 | 117 | #endif |
| 118 | 118 | #if MSDOS || __OS2__ || __NT__ || _WIN32 |
| … |
… |
|
| 133 | 133 | if (cwd[strlen(cwd) - 1] == DIRCHAR) |
| 134 | 134 | cwd[strlen(cwd) - 1] = '\0'; |
| 135 | 135 | #endif |
| 136 | | #if SUN || M_UNIX || M_XENIX || linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 |
| | 136 | #if SUN || M_UNIX || M_XENIX || linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ |
| 137 | 137 | free(cwd_t); |
| 138 | 138 | #endif |
| 139 | 139 | p = filespec; |
| … |
… |
|
| 150 | 150 | { |
| 151 | 151 | cwd_t = cwd; |
| 152 | 152 | cwd = (char *)mem_calloc(strlen(cwd_t) + 1 + strlen(p) + 1); |
| 153 | | #if SUN || M_UNIX || M_XENIX || linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 |
| | 153 | #if SUN || M_UNIX || M_XENIX || linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ |
| 154 | 154 | sprintf(cwd, "%s/%s", cwd_t, p); /* add relative directory */ |
| 155 | 155 | #endif |
| 156 | 156 | #if MSDOS || __OS2__ || __NT__ || _WIN32 |
| … |
… |
|
| 171 | 171 | { /* ... save remaining string */ |
| 172 | 172 | cwd_t = cwd; |
| 173 | 173 | cwd = (char *)mem_calloc(strlen(cwd_t) + 1 + strlen(p) + 1); |
| 174 | | #if SUN || M_UNIX || M_XENIX || linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 |
| | 174 | #if SUN || M_UNIX || M_XENIX || linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ |
| 175 | 175 | sprintf(cwd, "%s/%s", cwd_t, p); /* add relative directory */ |
| 176 | 176 | #endif |
| 177 | 177 | #if MSDOS || __OS2__ || __NT__ || _WIN32 |
| … |
… |
|
| 402 | 402 | #if MSDOS || __OS2__ || __NT__ || _WIN32 |
| 403 | 403 | return filespecforceext(filespec,"BAK"); |
| 404 | 404 | #endif |
| 405 | | #if BSDUNIX || linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 |
| | 405 | #if BSDUNIX || linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ |
| 406 | 406 | char *p,*f; |
| 407 | 407 | |
| 408 | 408 | /* Prepend .B to file name, if it isn't already there */ |
-
diff -r a61748274812 src/dmd/tk/mem.c
|
a
|
b
|
|
| 296 | 296 | 11111, |
| 297 | 297 | 0, |
| 298 | 298 | BEFOREVAL, |
| 299 | | #if !(linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4) |
| | 299 | #if !(linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__) |
| 300 | 300 | AFTERVAL |
| 301 | 301 | #endif |
| 302 | 302 | }; |
| … |
… |
|
| 804 | 804 | mem_numalloc = 0; |
| 805 | 805 | mem_maxalloc = 0; |
| 806 | 806 | mem_alloclist.Mnext = NULL; |
| 807 | | #if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 |
| | 807 | #if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ |
| 808 | 808 | *(long *) &(mem_alloclist.data[0]) = AFTERVAL; |
| 809 | 809 | #endif |
| 810 | 810 | #endif |
-
diff -r a61748274812 src/dmd/toir.c
|
a
|
b
|
|
| 676 | 676 | } |
| 677 | 677 | return RETstack; |
| 678 | 678 | } |
| 679 | | else if ((global.params.isLinux || global.params.isOSX || global.params.isFreeBSD || global.params.isSolaris) && |
| | 679 | else if ((global.params.isLinux || global.params.isOSX || global.params.isFreeBSD || global.params.isSolaris || global.params.isHaiku) && |
| 680 | 680 | linkage == LINKc && |
| 681 | 681 | tn->iscomplex()) |
| 682 | 682 | { |
-
diff -r a61748274812 src/dmd/util.c
|
a
|
b
|
|
| 131 | 131 | |
| 132 | 132 | #endif |
| 133 | 133 | |
| 134 | | #if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 |
| | 134 | #if linux || __APPLE__ || __FreeBSD__ || __sun&&__SVR4 || __HAIKU__ |
| 135 | 135 | void util_progress() |
| 136 | 136 | { |
| 137 | 137 | } |