Changeset 546
- Timestamp:
- Aug 8, 2003, 12:26:44 AM (22 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/emx/src/emxomf/weakld.c
-
Property cvs2svn:cvs-rev
changed from
1.19
to1.20
r545 r546 237 237 WLDSF_EXPORT = 0x1000, 238 238 239 /** Internal flag to say that we've already aliased this weak 239 /** Internal flag to say that we've already aliased this weak 240 240 * in the definition file. 241 241 */ … … 948 948 pWld->ppObjsAdd = &pMod->pNext; 949 949 950 rc = pass1ReadOMFMod(pWld, pMod, 0);950 rc = pass1ReadOMFMod(pWld, pMod, 1); 951 951 if (rc) 952 952 { … … 1397 1397 { 1398 1398 /* @todo: this isn't 100% correct when we're talking case in sensitivity. */ 1399 unsigned uHash = symHash(psz, cch); 1399 unsigned uHash = symHash(psz, cch); 1400 1400 for (pSym = pWld->Global.ap[uHash]; pSym; pSym = pSym->pHashNext) 1401 1401 { … … 2955 2955 "DGROUP", /* 9 */ 2956 2956 }; 2957 #endif 2957 #endif 2958 2958 2959 2959 /* THEADR */ … … 2981 2981 if (fwrite(&omf, omf.hdr.cb + sizeof(OMFREC), 1, phFile) != 1) 2982 2982 { 2983 wldErr(pWld, "Error occured while writing weak aliases. ( 4.1)");2983 wldErr(pWld, "Error occured while writing weak aliases. (5)"); 2984 2984 return -1; 2985 2985 } … … 2996 2996 if (fwrite(&omf, omf.hdr.cb + sizeof(OMFREC), 1, phFile) != 1) 2997 2997 { 2998 wldErr(pWld, "Error occured while writing weak aliases. ( 4.1)");2998 wldErr(pWld, "Error occured while writing weak aliases. (6)"); 2999 2999 return -1; 3000 3000 } … … 3013 3013 if (fwrite(&omf, omf.hdr.cb + sizeof(OMFREC), 1, phFile) != 1) 3014 3014 { 3015 wldErr(pWld, "Error occured while writing weak aliases. ( 5)");3015 wldErr(pWld, "Error occured while writing weak aliases. (7)"); 3016 3016 return -1; 3017 3017 } … … 3028 3028 if (fwrite(&omf, omf.hdr.cb + sizeof(OMFREC), 1, phFile) != 1) 3029 3029 { 3030 wldErr(pWld, "Error occured while writing weak aliases. ( 6)");3030 wldErr(pWld, "Error occured while writing weak aliases. (8)"); 3031 3031 return -1; 3032 3032 } … … 3043 3043 if (fwrite(&omf, omf.hdr.cb + sizeof(OMFREC), 1, phFile) != 1) 3044 3044 { 3045 wldErr(pWld, "Error occured while writing weak aliases. ( 6)");3045 wldErr(pWld, "Error occured while writing weak aliases. (9)"); 3046 3046 return -1; 3047 3047 } … … 3058 3058 if (fwrite(&omf, omf.hdr.cb + sizeof(OMFREC), 1, phFile) != 1) 3059 3059 { 3060 wldErr(pWld, "Error occured while writing weak aliases. ( 6)");3060 wldErr(pWld, "Error occured while writing weak aliases. (10)"); 3061 3061 return -1; 3062 3062 } … … 3069 3069 if (fwrite(&omf, omf.hdr.cb + sizeof(OMFREC), 1, phFile) != 1) 3070 3070 { 3071 wldErr(pWld, "Error occured while writing weak aliases. ( 6)");3071 wldErr(pWld, "Error occured while writing weak aliases. (11)"); 3072 3072 return -1; 3073 3073 } … … 3077 3077 omf.hdr.cb = 6; 3078 3078 omf.ach[0] = 9; /* "DGROUP" LNAME index */ 3079 omf.ach[1] = 0xff; 3079 omf.ach[1] = 0xff; 3080 3080 omf.ach[2] = 3; /* "BSS32" SEGDEF index */ 3081 omf.ach[3] = 0xff; 3081 omf.ach[3] = 0xff; 3082 3082 omf.ach[4] = 2; /* "DATA32" SEGDEF index */ 3083 3083 omf.ach[5] = 0; /* crc */ 3084 3084 if (fwrite(&omf, omf.hdr.cb + sizeof(OMFREC), 1, phFile) != 1) 3085 3085 { 3086 wldErr(pWld, "Error occured while writing weak aliases. ( 6)");3086 wldErr(pWld, "Error occured while writing weak aliases. (12)"); 3087 3087 return -1; 3088 3088 } 3089 #endif 3089 #endif 3090 3090 3091 3091 return 0; … … 3126 3126 return -1; 3127 3127 } 3128 #endif 3128 #endif 3129 3129 3130 3130 /* MODEND */ … … 3182 3182 { 3183 3183 OMFREC hdr; 3184 union 3184 union 3185 3185 { 3186 3186 char ach[640]; … … 3207 3207 3208 3208 /* end the current object? */ 3209 if ((pWld->fFlags & WLDC_LINKER_LINK386) && pParam->cAliases >= 1)//32)3209 if ((pWld->fFlags & WLDC_LINKER_LINK386) && pParam->cAliases >= 32) 3210 3210 { 3211 3211 int rc = wldObjEnd(pWld, pParam->phFile, 32); … … 3214 3214 pParam->cAliases = 0; 3215 3215 } 3216 3216 3217 3217 /* make new object ? */ 3218 3218 if (!pParam->cAliases) … … 3343 3343 if (fputs(szTmp, pParam->phNewFile) < 0) 3344 3344 return wldErr(pParam->pWld, "Write error."); 3345 3345 3346 3346 /* skip line */ 3347 3347 pParam->iLine++; … … 3520 3520 { 3521 3521 OMFREC hdr; 3522 union 3522 union 3523 3523 { 3524 3524 char ach[256]; … … 3532 3532 if (pWld->fFlags & WLDC_LINKER_LINK386) 3533 3533 { 3534 /* Write library file header. */ 3534 /* Write library file header. 3535 * Link386 have trouble with too many aliases in one object. So we 3536 * generate a library of objects. 3537 */ 3535 3538 memset(&omf, 0, sizeof(omf)); 3536 3539 omf.hdr.chType = LIBHDR; … … 3549 3552 if (!rc) 3550 3553 { 3551 /* 3552 * Make aliases 3554 /* 3555 * Make aliases 3553 3556 */ 3554 3557 offAlias = ftell(phFile); /* save this to see if anything is added. */ … … 3561 3564 if (!rc) 3562 3565 { 3563 /* Check if we need to fake a lot's of externals for working around an ILINK bug. */ 3566 /* Check if we need to fake a lot's of externals for working around an ILINK bug. 3567 * See defect #483 for details. Short summary: an array calculation in ilink is 3568 * assuming that library objects have less EXTDEFs than the object ones. So, for 3569 * pass2 an EXTDEF array may become too short. 3570 */ 3564 3571 if (pWld->cMaxObjExts < pWld->cMaxLibExts && !(pWld->fFlags & WLDC_LINKER_LINK386)) 3565 3572 { … … 3571 3578 } 3572 3579 3573 /* issue a shitloadof extdefs. */3580 /* issue a lot's of extdefs. */ 3574 3581 omf.hdr.chType = EXTDEF; 3575 omf.ach[0] = strlen("WEAK$ZERO"); 3576 memcmp(&omf.ach[1], "WEAK$ZERO", omf.ach[0]); 3577 omf.ach[omf.ach[0] + 2] = 0; 3578 omf.hdr.cb = omf.ach[0] + 3; 3579 for (i = 0; i < pWld->cMaxLibExts; i++) 3582 omf.hdr.cb = 0; 3583 for (i = 0; i < 10; i++) 3580 3584 { 3585 omf.ach[omf.hdr.cb] = 9; /* string length */ 3586 memcpy(&omf.ach[omf.hdr.cb + 1], "WEAK$ZERO", 9); /* external */ 3587 omf.ach[omf.hdr.cb + 9 + 1] = 0; /* typeidx */ 3588 omf.hdr.cb += 9 + 2; 3581 3589 } 3590 omf.ach[omf.hdr.cb++] = 0; /* crc */ 3591 for (i = pWld->cMaxLibExts + 3; i > 0; i -= 10) 3592 if (fwrite(&omf, omf.hdr.cb + sizeof(OMFREC), 1, phFile) != 1) 3593 { 3594 wldErr(pWld, "Failed to write to '%s'.", pszObjName); 3595 rc = -1; 3596 break; 3597 } 3582 3598 } 3583 3599 3600 /* Did we actually write anything to the file? */ 3584 3601 if (ftell(phFile) != offAlias) 3585 3602 { 3586 /* end the last object? */3603 /* Complete last object file? */ 3587 3604 if (pWld->fFlags & WLDC_LINKER_LINK386) 3588 3605 { -
Property cvs2svn:cvs-rev
changed from
Note:
See TracChangeset
for help on using the changeset viewer.