Ticket #280: dmd164.2.patch
| File dmd164.2.patch, 67.3 KB (added by haikubot, 5 years ago) |
|---|
-
src/dmd/backend/cc.h
diff -r a70a7cead6f1 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 -
src/dmd/backend/cdef.h
diff -r a70a7cead6f1 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 files250 #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, -
src/dmd/backend/cg87.c
diff -r a70a7cead6f1 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 -
src/dmd/backend/cgcod.c
diff -r a70a7cead6f1 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; -
src/dmd/backend/cgelem.c
diff -r a70a7cead6f1 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 -
src/dmd/backend/cod1.c
diff -r a70a7cead6f1 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@ -
src/dmd/backend/cod2.c
diff -r a70a7cead6f1 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) -
src/dmd/backend/cod3.c
diff -r a70a7cead6f1 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) && -
src/dmd/backend/cod4.c
diff -r a70a7cead6f1 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; -
src/dmd/backend/code.h
diff -r a70a7cead6f1 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; -
src/dmd/backend/debug.c
diff -r a70a7cead6f1 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 -
src/dmd/backend/dwarf.c
diff -r a70a7cead6f1 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)); -
src/dmd/backend/el.c
diff -r a70a7cead6f1 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 -
src/dmd/backend/elfobj.c
diff -r a70a7cead6f1 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) && -
src/dmd/backend/evalu8.c
diff -r a70a7cead6f1 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 -
src/dmd/backend/global.h
diff -r a70a7cead6f1 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(); -
src/dmd/backend/machobj.c
diff -r a70a7cead6f1 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) && -
src/dmd/backend/nteh.c
diff -r a70a7cead6f1 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; -
src/dmd/backend/optabgen.c
diff -r a70a7cead6f1 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 -
src/dmd/backend/os.c
diff -r a70a7cead6f1 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); -
src/dmd/backend/out.c
diff -r a70a7cead6f1 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 -
src/dmd/backend/parser.h
diff -r a70a7cead6f1 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 -
src/dmd/backend/strtold.c
diff -r a70a7cead6f1 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, -
src/dmd/backend/token.h
diff -r a70a7cead6f1 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 -
src/dmd/backend/ty.h
diff -r a70a7cead6f1 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 -
src/dmd/backend/type.h
diff -r a70a7cead6f1 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 -
src/dmd/backend/var.c
diff -r a70a7cead6f1 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, -
src/dmd/cond.c
diff -r a70a7cead6f1 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", -
src/dmd/e2ir.c
diff -r a70a7cead6f1 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); -
src/dmd/eh.c
diff -r a70a7cead6f1 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; -
src/dmd/expression.c
diff -r a70a7cead6f1 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 -
src/dmd/glue.c
diff -r a70a7cead6f1 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 -
new file src/dmd/haiku.mak
diff -r a70a7cead6f1 src/dmd/haiku.mak
- + 1 2 C=backend 3 TK=tk 4 ROOT=root 5 6 MODEL=-m32 7 8 CC=g++ $(MODEL) 9 10 #OPT=-g -g3 11 #OPT=-O2 12 13 #COV=-fprofile-arcs -ftest-coverage 14 15 WARNINGS=-Wno-deprecated -Wstrict-aliasing 16 17 #GFLAGS = $(WARNINGS) -D__near= -D__pascal= -fno-exceptions -g -DDEBUG=1 $(COV) 18 GFLAGS = $(WARNINGS) -D__near= -D__pascal= -fno-exceptions -O2 19 20 CFLAGS = $(GFLAGS) -I$(ROOT) -D__I86__=1 -DMARS=1 -DTARGET_HAIKU=1 -D_DH 21 MFLAGS = $(GFLAGS) -I$C -I$(TK) -D__I86__=1 -DMARS=1 -DTARGET_HAIKU=1 -D_DH 22 23 CH= $C/cc.h $C/global.h $C/parser.h $C/oper.h $C/code.h $C/type.h \ 24 $C/dt.h $C/cgcv.h $C/el.h $C/iasm.h 25 TOTALH= 26 27 DMD_OBJS = \ 28 access.o array.o attrib.o bcomplex.o bit.o blockopt.o \ 29 cast.o code.o cg.o cg87.o cgcod.o cgcs.o cgelem.o cgen.o \ 30 cgreg.o cgsched.o class.o cod1.o cod2.o cod3.o cod4.o cod5.o \ 31 constfold.o irstate.o dchar.o cond.o debug.o \ 32 declaration.o dsymbol.o dt.o dump.o e2ir.o ee.o eh.o el.o \ 33 dwarf.o enum.o evalu8.o expression.o func.o gdag.o gflow.o \ 34 glocal.o gloop.o glue.o gnuc.o go.o gother.o html.o iasm.o id.o \ 35 identifier.o impcnvtab.o import.o inifile.o init.o inline.o \ 36 lexer.o link.o lstring.o mangle.o mars.o rmem.o module.o msc.o mtype.o \ 37 nteh.o cppmangle.o opover.o optimize.o os.o out.o outbuf.o \ 38 parse.o ph.o ptrntab.o root.o rtlsym.o s2ir.o scope.o statement.o \ 39 stringtable.o struct.o csymbol.o template.o tk.o tocsym.o todt.o \ 40 type.o typinf.o util.o var.o version.o strtold.o utf.o staticassert.o \ 41 unialpha.o toobj.o toctype.o toelfdebug.o entity.o doc.o macro.o \ 42 hdrgen.o delegatize.o aa.o ti_achar.o toir.o interpret.o traits.o \ 43 builtin.o clone.o aliasthis.o \ 44 man.o arrayop.o port.o response.o async.o json.o speller.o aav.o unittests.o \ 45 imphint.o \ 46 libelf.o elfobj.o 47 48 SRC = win32.mak linux.mak osx.mak freebsd.mak solaris.mak haiku.mak \ 49 mars.c enum.c struct.c dsymbol.c import.c idgen.c impcnvgen.c \ 50 identifier.c mtype.c expression.c optimize.c template.h \ 51 template.c lexer.c declaration.c cast.c cond.h cond.c link.c \ 52 aggregate.h parse.c statement.c constfold.c version.h version.c \ 53 inifile.c iasm.c module.c scope.c dump.c init.h init.c attrib.h \ 54 attrib.c opover.c class.c mangle.c bit.c tocsym.c func.c inline.c \ 55 access.c complex_t.h irstate.h irstate.c glue.c msc.c ph.c tk.c \ 56 s2ir.c todt.c e2ir.c util.c identifier.h parse.h \ 57 scope.h enum.h import.h mars.h module.h mtype.h dsymbol.h \ 58 declaration.h lexer.h expression.h irstate.h statement.h eh.c \ 59 utf.h utf.c staticassert.h staticassert.c unialpha.c \ 60 typinf.c toobj.c toctype.c tocvdebug.c toelfdebug.c entity.c \ 61 doc.h doc.c macro.h macro.c hdrgen.h hdrgen.c arraytypes.h \ 62 delegatize.c toir.h toir.c interpret.c traits.c cppmangle.c \ 63 builtin.c clone.c lib.h libomf.c libelf.c libmach.c arrayop.c \ 64 aliasthis.h aliasthis.c json.h json.c unittests.c imphint.c \ 65 $C/cdef.h $C/cc.h $C/oper.h $C/ty.h $C/optabgen.c \ 66 $C/global.h $C/parser.h $C/code.h $C/type.h $C/dt.h $C/cgcv.h \ 67 $C/el.h $C/iasm.h $C/rtlsym.h $C/html.h \ 68 $C/bcomplex.c $C/blockopt.c $C/cg.c $C/cg87.c \ 69 $C/cgcod.c $C/cgcs.c $C/cgcv.c $C/cgelem.c $C/cgen.c $C/cgobj.c \ 70 $C/cgreg.c $C/var.c $C/strtold.c \ 71 $C/cgsched.c $C/cod1.c $C/cod2.c $C/cod3.c $C/cod4.c $C/cod5.c \ 72 $C/code.c $C/symbol.c $C/debug.c $C/dt.c $C/ee.c $C/el.c \ 73 $C/evalu8.c $C/go.c $C/gflow.c $C/gdag.c \ 74 $C/gother.c $C/glocal.c $C/gloop.c $C/html.c $C/newman.c \ 75 $C/nteh.c $C/os.c $C/out.c $C/outbuf.c $C/ptrntab.c $C/rtlsym.c \ 76 $C/type.c $C/melf.h $C/mach.h $C/bcomplex.h \ 77 $C/cdeflnx.h $C/outbuf.h $C/token.h $C/tassert.h \ 78 $C/elfobj.c $C/cv4.h $C/dwarf2.h $C/cpp.h $C/exh.h $C/go.h \ 79 $C/dwarf.c $C/dwarf.h $C/aa.h $C/aa.c $C/tinfo.h $C/ti_achar.c \ 80 $C/machobj.c \ 81 $(TK)/filespec.h $(TK)/mem.h $(TK)/list.h $(TK)/vec.h \ 82 $(TK)/filespec.c $(TK)/mem.c $(TK)/vec.c $(TK)/list.c \ 83 $(ROOT)/dchar.h $(ROOT)/dchar.c $(ROOT)/lstring.h \ 84 $(ROOT)/lstring.c $(ROOT)/root.h $(ROOT)/root.c $(ROOT)/array.c \ 85 $(ROOT)/rmem.h $(ROOT)/rmem.c $(ROOT)/port.h $(ROOT)/port.c \ 86 $(ROOT)/gnuc.h $(ROOT)/gnuc.c $(ROOT)/man.c \ 87 $(ROOT)/stringtable.h $(ROOT)/stringtable.c \ 88 $(ROOT)/response.c $(ROOT)/async.h $(ROOT)/async.c \ 89 $(ROOT)/aav.h $(ROOT)/aav.c \ 90 $(ROOT)/speller.h $(ROOT)/speller.c 91 92 93 all: dmd 94 95 dmd: $(DMD_OBJS) 96 gcc $(MODEL) -lstdc++ -lroot $(COV) $(DMD_OBJS) -o dmd 97 98 clean: 99 rm -f $(DMD_OBJS) dmd optab.o id.o impcnvgen idgen id.c id.h \ 100 impcnvtab.c optabgen debtab.c optab.c cdxxx.c elxxx.c fltables.c \ 101 tytab.c core \ 102 *.cov *.gcda *.gcno 103 104 ######## optabgen generates some source 105 106 optabgen: $C/optabgen.c $C/cc.h $C/oper.h 107 $(CC) $(MFLAGS) $< -o optabgen 108 ./optabgen 109 110 optabgen_output = debtab.c optab.c cdxxx.c elxxx.c fltables.c tytab.c 111 $(optabgen_output) : optabgen 112 113 ######## idgen generates some source 114 115 idgen_output = id.h id.c 116 $(idgen_output) : idgen 117 118 idgen : idgen.c 119 $(CC) idgen.c -o idgen 120 ./idgen 121 122 ######### impcnvgen generates some source 123 124 impcnvtab_output = impcnvtab.c 125 $(impcnvtab_output) : impcnvgen 126 127 impcnvgen : mtype.h impcnvgen.c 128 $(CC) $(CFLAGS) impcnvgen.c -o impcnvgen 129 ./impcnvgen 130 131 ######### 132 133 $(DMD_OBJS) : $(idgen_output) $(optabgen_output) $(impcnvgen_output) 134 135 aa.o: $C/aa.h $C/tinfo.h $C/aa.c 136 $(CC) -c $(MFLAGS) -I. $C/aa.c 137 138 aav.o: $(ROOT)/aav.c 139 $(CC) -c $(GFLAGS) -I$(ROOT) $< 140 141 access.o: access.c 142 $(CC) -c $(CFLAGS) $< 143 144 aliasthis.o: aliasthis.c 145 $(CC) -c $(CFLAGS) $< 146 147 array.o: $(ROOT)/array.c 148 $(CC) -c $(GFLAGS) -I$(ROOT) $< 149 150 arrayop.o: arrayop.c 151 $(CC) -c $(CFLAGS) $< 152 153 async.o: $(ROOT)/async.c 154 $(CC) -c $(GFLAGS) -I$(ROOT) $< 155 156 attrib.o: attrib.c 157 $(CC) -c $(CFLAGS) $< 158 159 bcomplex.o: $C/bcomplex.c 160 $(CC) -c $(MFLAGS) $< 161 162 bit.o: expression.h bit.c 163 $(CC) -c -I$(ROOT) $(MFLAGS) bit.c 164 165 blockopt.o: $C/blockopt.c 166 $(CC) -c $(MFLAGS) $C/blockopt.c 167 168 builtin.o: builtin.c 169 $(CC) -c $(CFLAGS) $< 170 171 cast.o: cast.c 172 $(CC) -c $(CFLAGS) $< 173 174 cg.o: fltables.c $C/cg.c 175 $(CC) -c $(MFLAGS) -I. $C/cg.c 176 177 cg87.o: $C/cg87.c 178 $(CC) -c $(MFLAGS) $< 179 180 cgcod.o: $C/cgcod.c 181 $(CC) -c $(MFLAGS) -I. $< 182 183 cgcs.o: $C/cgcs.c 184 $(CC) -c $(MFLAGS) $< 185 186 cgcv.o: $C/cgcv.c 187 $(CC) -c $(MFLAGS) $< 188 189 cgelem.o: $C/rtlsym.h $C/cgelem.c 190 $(CC) -c $(MFLAGS) -I. $C/cgelem.c 191 192 cgen.o: $C/rtlsym.h $C/cgen.c 193 $(CC) -c $(MFLAGS) $C/cgen.c 194 195 cgobj.o: $C/cgobj.c 196 $(CC) -c $(MFLAGS) $< 197 198 cgreg.o: $C/cgreg.c 199 $(CC) -c $(MFLAGS) $< 200 201 cgsched.o: $C/rtlsym.h $C/cgsched.c 202 $(CC) -c $(MFLAGS) $C/cgsched.c 203 204 class.o: class.c 205 $(CC) -c $(CFLAGS) $< 206 207 clone.o: clone.c 208 $(CC) -c $(CFLAGS) $< 209 210 cod1.o: $C/rtlsym.h $C/cod1.c 211 $(CC) -c $(MFLAGS) $C/cod1.c 212 213 cod2.o: $C/rtlsym.h $C/cod2.c 214 $(CC) -c $(MFLAGS) $C/cod2.c 215 216 cod3.o: $C/rtlsym.h $C/cod3.c 217 $(CC) -c $(MFLAGS) $C/cod3.c 218 219 cod4.o: $C/cod4.c 220 $(CC) -c $(MFLAGS) $< 221 222 cod5.o: $C/cod5.c 223 $(CC) -c $(MFLAGS) $< 224 225 code.o: $C/code.c 226 $(CC) -c $(MFLAGS) $< 227 228 constfold.o: constfold.c 229 $(CC) -c $(CFLAGS) $< 230 231 irstate.o: irstate.h irstate.c 232 $(CC) -c $(MFLAGS) -I$(ROOT) irstate.c 233 234 csymbol.o : $C/symbol.c 235 $(CC) -c $(MFLAGS) $C/symbol.c -o csymbol.o 236 237 dchar.o: $(ROOT)/dchar.c 238 $(CC) -c $(GFLAGS) -I$(ROOT) $< 239 240 cond.o: cond.c 241 $(CC) -c $(CFLAGS) $< 242 243 cppmangle.o: cppmangle.c 244 $(CC) -c $(CFLAGS) $< 245 246 debug.o: $C/debug.c 247 $(CC) -c $(MFLAGS) -I. $< 248 249 declaration.o: declaration.c 250 $(CC) -c $(CFLAGS) $< 251 252 delegatize.o: delegatize.c 253 $(CC) -c $(CFLAGS) $< 254 255 doc.o: doc.c 256 $(CC) -c $(CFLAGS) $< 257 258 dsymbol.o: dsymbol.c 259 $(CC) -c $(CFLAGS) $< 260 261 dt.o: $C/dt.h $C/dt.c 262 $(CC) -c $(MFLAGS) $C/dt.c 263 264 dump.o: dump.c 265 $(CC) -c $(CFLAGS) $< 266 267 dwarf.o: $C/dwarf.h $C/dwarf.c 268 $(CC) -c $(MFLAGS) -I. $C/dwarf.c 269 270 e2ir.o: $C/rtlsym.h expression.h toir.h e2ir.c 271 $(CC) -c -I$(ROOT) $(MFLAGS) e2ir.c 272 273 ee.o: $C/ee.c 274 $(CC) -c $(MFLAGS) $< 275 276 eh.o : $C/cc.h $C/code.h $C/type.h $C/dt.h eh.c 277 $(CC) -c $(MFLAGS) eh.c 278 279 el.o: $C/rtlsym.h $C/el.h $C/el.c 280 $(CC) -c $(MFLAGS) $C/el.c 281 282 elfobj.o: $C/elfobj.c 283 $(CC) -c $(MFLAGS) $< 284 285 entity.o: entity.c 286 $(CC) -c $(CFLAGS) $< 287 288 enum.o: enum.c 289 $(CC) -c $(CFLAGS) $< 290 291 evalu8.o: $C/evalu8.c 292 $(CC) -c $(MFLAGS) $< 293 294 expression.o: expression.c 295 $(CC) -c $(CFLAGS) $< 296 297 func.o: func.c 298 $(CC) -c $(CFLAGS) $< 299 300 gdag.o: $C/gdag.c 301 $(CC) -c $(MFLAGS) $< 302 303 gflow.o: $C/gflow.c 304 $(CC) -c $(MFLAGS) $< 305 306 #globals.o: globals.c 307 # $(CC) -c $(CFLAGS) $< 308 309 glocal.o: $C/rtlsym.h $C/glocal.c 310 $(CC) -c $(MFLAGS) $C/glocal.c 311 312 gloop.o: $C/gloop.c 313 $(CC) -c $(MFLAGS) $< 314 315 glue.o: $(CH) $(TOTALH) $C/rtlsym.h mars.h module.h glue.c 316 $(CC) -c $(MFLAGS) -I$(ROOT) glue.c 317 318 gnuc.o: $(ROOT)/gnuc.h $(ROOT)/gnuc.c 319 $(CC) -c $(GFLAGS) $(ROOT)/gnuc.c 320 321 go.o: $C/go.c 322 $(CC) -c $(MFLAGS) $< 323 324 gother.o: $C/gother.c 325 $(CC) -c $(MFLAGS) $< 326 327 hdrgen.o: hdrgen.c 328 $(CC) -c $(CFLAGS) $< 329 330 html.o: $(CH) $(TOTALH) $C/html.h $C/html.c 331 $(CC) -c -I$(ROOT) $(MFLAGS) $C/html.c 332 333 iasm.o : $(CH) $(TOTALH) $C/iasm.h iasm.c 334 $(CC) -c $(MFLAGS) -I$(ROOT) iasm.c 335 336 id.o : id.h id.c 337 $(CC) -c $(CFLAGS) id.c 338 339 identifier.o: identifier.c 340 $(CC) -c $(CFLAGS) $< 341 342 impcnvtab.o: mtype.h impcnvtab.c 343 $(CC) -c $(CFLAGS) -I$(ROOT) impcnvtab.c 344 345 imphint.o: imphint.c 346 $(CC) -c $(CFLAGS) $< 347 348 import.o: import.c 349 $(CC) -c $(CFLAGS) $< 350 351 inifile.o: inifile.c 352 $(CC) -c $(CFLAGS) $< 353 354 init.o: init.c 355 $(CC) -c $(CFLAGS) $< 356 357 inline.o: inline.c 358 $(CC) -c $(CFLAGS) $< 359 360 interpret.o: interpret.c 361 $(CC) -c $(CFLAGS) $< 362 363 json.o: json.c 364 $(CC) -c $(CFLAGS) $< 365 366 lexer.o: lexer.c 367 $(CC) -c $(CFLAGS) $< 368 369 libelf.o: libelf.c $C/melf.h 370 $(CC) -c $(CFLAGS) -I$C $< 371 372 libmach.o: libmach.c $C/mach.h 373 $(CC) -c $(CFLAGS) -I$C $< 374 375 link.o: link.c 376 $(CC) -c $(CFLAGS) $< 377 378 lstring.o: $(ROOT)/lstring.c 379 $(CC) -c $(GFLAGS) -I$(ROOT) $< 380 381 machobj.o: $C/machobj.c 382 $(CC) -c $(MFLAGS) $< 383 384 macro.o: macro.c 385 $(CC) -c $(CFLAGS) $< 386 387 man.o: $(ROOT)/man.c 388 $(CC) -c $(GFLAGS) -I$(ROOT) $< 389 390 mangle.o: mangle.c 391 $(CC) -c $(CFLAGS) $< 392 393 mars.o: mars.c 394 $(CC) -c $(CFLAGS) $< 395 396 rmem.o: $(ROOT)/rmem.c 397 $(CC) -c $(GFLAGS) -I$(ROOT) $(ROOT)/rmem.c 398 399 module.o: $(TOTALH) $C/html.h module.c 400 $(CC) -c $(CFLAGS) -I$C module.c 401 402 msc.o: $(CH) mars.h msc.c 403 $(CC) -c $(MFLAGS) msc.c 404 405 mtype.o: mtype.c 406 $(CC) -c $(CFLAGS) $< 407 408 nteh.o: $C/rtlsym.h $C/nteh.c 409 $(CC) -c $(MFLAGS) $C/nteh.c 410 411 opover.o: opover.c 412 $(CC) -c $(CFLAGS) $< 413 414 optimize.o: optimize.c 415 $(CC) -c $(CFLAGS) $< 416 417 os.o: $C/os.c 418 $(CC) -c $(MFLAGS) $< 419 420 out.o: $C/out.c 421 $(CC) -c $(MFLAGS) $< 422 423 outbuf.o : $C/outbuf.h $C/outbuf.c 424 $(CC) -c $(MFLAGS) $C/outbuf.c 425 426 parse.o: parse.c 427 $(CC) -c $(CFLAGS) $< 428 429 ph.o: ph.c 430 $(CC) -c $(MFLAGS) $< 431 432 port.o: $(ROOT)/port.c 433 $(CC) -c $(GFLAGS) -I$(ROOT) $< 434 435 ptrntab.o: $C/iasm.h $C/ptrntab.c 436 $(CC) -c $(MFLAGS) $C/ptrntab.c 437 438 response.o: $(ROOT)/response.c 439 $(CC) -c $(GFLAGS) -I$(ROOT) $< 440 441 root.o: $(ROOT)/root.c 442 $(CC) -c $(GFLAGS) -I$(ROOT) $< 443 444 rtlsym.o: $C/rtlsym.h $C/rtlsym.c 445 $(CC) -c $(MFLAGS) $C/rtlsym.c 446 447 s2ir.o : $C/rtlsym.h statement.h s2ir.c 448 $(CC) -c -I$(ROOT) $(MFLAGS) s2ir.c 449 450 scope.o: scope.c 451 $(CC) -c $(CFLAGS) $< 452 453 speller.o: $(ROOT)/speller.c 454 $(CC) -c $(GFLAGS) -I$(ROOT) $< 455 456 statement.o: statement.c 457 $(CC) -c $(CFLAGS) $< 458 459 staticassert.o: staticassert.h staticassert.c 460 $(CC) -c $(CFLAGS) staticassert.c 461 462 stringtable.o: $(ROOT)/stringtable.c 463 $(CC) -c $(GFLAGS) -I$(ROOT) $< 464 465 strtold.o: $C/strtold.c 466 gcc $(MODEL) -c $C/strtold.c 467 468 struct.o: struct.c 469 $(CC) -c $(CFLAGS) $< 470 471 template.o: template.c 472 $(CC) -c $(CFLAGS) $< 473 474 ti_achar.o: $C/tinfo.h $C/ti_achar.c 475 $(CC) -c $(MFLAGS) -I. $C/ti_achar.c 476 477 tk.o: tk.c 478 $(CC) -c $(MFLAGS) tk.c 479 480 tocsym.o: $(CH) $(TOTALH) mars.h module.h tocsym.c 481 $(CC) -c $(MFLAGS) -I$(ROOT) tocsym.c 482 483 toctype.o: $(CH) $(TOTALH) $C/rtlsym.h mars.h module.h toctype.c 484 $(CC) -c $(MFLAGS) -I$(ROOT) toctype.c 485 486 todt.o : mtype.h expression.h $C/dt.h todt.c 487 $(CC) -c -I$(ROOT) $(MFLAGS) todt.c 488 489 toelfdebug.o: $(CH) $(TOTALH) mars.h toelfdebug.c 490 $(CC) -c $(MFLAGS) -I$(ROOT) toelfdebug.c 491 492 toir.o: $C/rtlsym.h expression.h toir.h toir.c 493 $(CC) -c -I$(ROOT) $(MFLAGS) toir.c 494 495 toobj.o: $(CH) $(TOTALH) mars.h module.h toobj.c 496 $(CC) -c $(MFLAGS) -I$(ROOT) toobj.c 497 498 traits.o: $(TOTALH) traits.c 499 $(CC) -c $(CFLAGS) $< 500 501 type.o: $C/type.c 502 $(CC) -c $(MFLAGS) $C/type.c 503 504 typinf.o: $(CH) $(TOTALH) mars.h module.h mtype.h typinf.c 505 $(CC) -c $(MFLAGS) -I$(ROOT) typinf.c 506 507 util.o: util.c 508 $(CC) -c $(MFLAGS) $< 509 510 utf.o: utf.h utf.c 511 $(CC) -c $(CFLAGS) utf.c 512 513 unialpha.o: unialpha.c 514 $(CC) -c $(CFLAGS) $< 515 516 unittests.o: unittests.c 517 $(CC) -c $(CFLAGS) $< 518 519 var.o: $C/var.c optab.c 520 $(CC) -c $(MFLAGS) -I. $C/var.c 521 522 version.o: version.c 523 $(CC) -c $(CFLAGS) $< 524 525 ###################################################### 526 527 gcov: 528 gcov access.c 529 gcov aliasthis.c 530 gcov arrayop.c 531 gcov attrib.c 532 gcov bit.c 533 gcov builtin.c 534 gcov cast.c 535 gcov class.c 536 gcov clone.c 537 gcov cond.c 538 gcov constfold.c 539 gcov declaration.c 540 gcov delegatize.c 541 gcov doc.c 542 gcov dsymbol.c 543 gcov dump.c 544 gcov e2ir.c 545 gcov eh.c 546 gcov entity.c 547 gcov enum.c 548 gcov expression.c 549 gcov func.c 550 gcov glue.c 551 gcov iasm.c 552 gcov identifier.c 553 gcov imphint.c 554 gcov import.c 555 gcov inifile.c 556 gcov init.c 557 gcov inline.c 558 gcov interpret.c 559 gcov irstate.c 560 gcov json.c 561 gcov lexer.c 562 gcov libelf.c 563 gcov link.c 564 gcov macro.c 565 gcov mangle.c 566 gcov mars.c 567 gcov module.c 568 gcov msc.c 569 gcov mtype.c 570 gcov opover.c 571 gcov optimize.c 572 gcov parse.c 573 gcov ph.c 574 gcov scope.c 575 gcov statement.c 576 gcov staticassert.c 577 gcov s2ir.c 578 gcov struct.c 579 gcov template.c 580 gcov tk.c 581 gcov tocsym.c 582 gcov todt.c 583 gcov toobj.c 584 gcov toctype.c 585 gcov toelfdebug.c 586 gcov typinf.c 587 gcov unialpha.c 588 gcov utf.c 589 gcov util.c 590 gcov version.c 591 592 # gcov hdrgen.c 593 # gcov tocvdebug.c 594 595 ###################################################### 596 597 zip: 598 -rm -f dmdsrc.zip 599 zip dmdsrc $(SRC) -
src/dmd/inifile.c
diff -r a70a7cead6f1 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 Kuehne114 #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 */ -
src/dmd/link.c
diff -r a70a7cead6f1 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 -
src/dmd/mangle.c
diff -r a70a7cead6f1 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 -
src/dmd/mars.c
diff -r a70a7cead6f1 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 -
src/dmd/mars.h
diff -r a70a7cead6f1 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 -
src/dmd/msc.c
diff -r a70a7cead6f1 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; -
src/dmd/mtype.c
diff -r a70a7cead6f1 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: -
src/dmd/root/man.c
diff -r a70a7cead6f1 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> -
src/dmd/root/port.c
diff -r a70a7cead6f1 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 -
src/dmd/root/response.c
diff -r a70a7cead6f1 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> -
src/dmd/root/rmem.c
diff -r a70a7cead6f1 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" -
src/dmd/root/root.c
diff -r a70a7cead6f1 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> -
src/dmd/tk/filespec.c
diff -r a70a7cead6f1 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 */ -
src/dmd/tk/mem.c
diff -r a70a7cead6f1 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 -
src/dmd/toir.c
diff -r a70a7cead6f1 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 { -
src/dmd/util.c
diff -r a70a7cead6f1 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 }
