Changeset 3573 for trunk/kStuff/kLdr/kLdrModLX.c
- Timestamp:
- Aug 31, 2007, 6:09:23 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/kStuff/kLdr/kLdrModLX.c
r3571 r3573 30 30 *******************************************************************************/ 31 31 #include <k/kLdr.h> 32 #include "kLdrHlp.h"33 32 #include "kLdrInternal.h" 34 33 #include <k/kLdrFmts/lx.h> … … 46 45 */ 47 46 #ifdef KLDRMODLX_STRICT 48 # define KLDRMODLX_ASSERT(expr) k ldrHlpAssert(expr)47 # define KLDRMODLX_ASSERT(expr) kHlpAssert(expr) 49 48 #else 50 49 # define KLDRMODLX_ASSERT(expr) do {} while (0) … … 162 161 return 0; 163 162 } 164 k ldrHlpFree(pModLX);163 kHlpFree(pModLX); 165 164 return rc; 166 165 } … … 267 266 * Calc the instance size, allocate and initialize it. 268 267 */ 269 cchFilename = k LdrHlpStrLen(kLdrRdrName(pRdr));268 cchFilename = kHlpStrLen(kLdrRdrName(pRdr)); 270 269 cb = K_ALIGN_Z(sizeof(KLDRMODLX), 8) 271 270 + K_ALIGN_Z(K_OFFSETOF(KLDRMOD, aSegments[Hdr.e32_objcnt + 1]), 8) 272 271 + K_ALIGN_Z(cchFilename + 1, 8) 273 272 + Hdr.e32_ldrsize + 2; /* +2 for two extra zeros. */ 274 pModLX = (PKLDRMODLX)k ldrHlpAlloc(cb);273 pModLX = (PKLDRMODLX)kHlpAlloc(cb); 275 274 if (!pModLX) 276 275 return KLDR_ERR_NO_MEMORY; … … 285 284 pMod->cchFilename = cchFilename; 286 285 pMod->pszFilename = (char *)K_ALIGN_P(&pMod->aSegments[pMod->cSegments], 8); 287 k LdrHlpMemCopy((char *)pMod->pszFilename, kLdrRdrName(pRdr), cchFilename + 1);286 kHlpMemCopy((char *)pMod->pszFilename, kLdrRdrName(pRdr), cchFilename + 1); 288 287 pMod->pszName = NULL; /* finalized further down */ 289 288 pMod->cchName = 0; … … 387 386 return KLDR_ERR_LX_NO_SONAME; 388 387 pMod->cchName = *(const KU8 *)pMod->pszName++; 389 if (pMod->cchName != k LdrHlpStrLen(pMod->pszName))388 if (pMod->cchName != kHlpStrLen(pMod->pszName)) 390 389 return KLDR_ERR_LX_BAD_SONAME; 391 390 … … 533 532 if (pModLX->pbNonResNameTab) 534 533 { 535 k ldrHlpFree(pModLX->pbNonResNameTab);534 kHlpFree(pModLX->pbNonResNameTab); 536 535 pModLX->pbNonResNameTab = NULL; 537 536 } 538 537 if (pModLX->pbFixupSection) 539 538 { 540 k ldrHlpFree(pModLX->pbFixupSection);539 kHlpFree(pModLX->pbFixupSection); 541 540 pModLX->pbFixupSection = NULL; 542 541 } 543 542 pMod->u32Magic = 0; 544 543 pMod->pOps = NULL; 545 k ldrHlpFree(pModLX);544 kHlpFree(pModLX); 546 545 return rc; 547 546 } … … 789 788 790 789 if ( cbName == cbSymbol8Bit 791 && !k LdrHlpMemComp(pbNameTable + 1, pchSymbol, cbName))790 && !kHlpMemComp(pbNameTable + 1, pchSymbol, cbName)) 792 791 return pbNameTable; 793 792 … … 937 936 void *pv; 938 937 939 pv = k ldrHlpAlloc(pModLX->Hdr.e32_fixupsize);938 pv = kHlpAlloc(pModLX->Hdr.e32_fixupsize); 940 939 if (!pv) 941 940 return KLDR_ERR_NO_MEMORY; … … 962 961 } 963 962 else 964 k ldrHlpFree(pv);963 kHlpFree(pv); 965 964 return rc; 966 965 } … … 1208 1207 if (*pb < cchName) 1209 1208 { 1210 k LdrHlpMemCopy(pszName, pb + 1, *pb);1209 kHlpMemCopy(pszName, pb + 1, *pb); 1211 1210 pszName[*pb] = '\0'; 1212 1211 rc = 0; … … 1214 1213 else 1215 1214 { 1216 k LdrHlpMemCopy(pszName, pb + 1, cchName);1215 kHlpMemCopy(pszName, pb + 1, cchName); 1217 1216 if (cchName) 1218 1217 pszName[cchName - 1] = '\0'; … … 1345 1344 return KLDR_ERR_ADDRESS_OVERFLOW; 1346 1345 } 1347 rc = k ldrHlpPageAlloc(&pvBase, pModLX->cbMapped, KPROT_EXECUTE_READWRITE, fFixed);1346 rc = kHlpPageAlloc(&pvBase, pModLX->cbMapped, KPROT_EXECUTE_READWRITE, fFixed); 1348 1347 if (rc) 1349 1348 return rc; … … 1366 1365 } 1367 1366 else 1368 k ldrHlpPageFree(pvBase, pModLX->cbMapped);1367 kHlpPageFree(pvBase, pModLX->cbMapped); 1369 1368 return rc; 1370 1369 } … … 1413 1412 rc = kLdrRdrRead(pRdr, pbPage, pMap->o32_pagesize, 1414 1413 pModLX->Hdr.e32_datapage + (pMap->o32_pagedataoffset << pModLX->Hdr.e32_pageshift)); 1415 k LdrHlpMemSet(pbPage + pMap->o32_pagesize, 0, OBJPAGELEN - pMap->o32_pagesize);1414 kHlpMemSet(pbPage + pMap->o32_pagesize, 0, OBJPAGELEN - pMap->o32_pagesize); 1416 1415 } 1417 1416 else … … 1424 1423 if (!pbTmpPage) 1425 1424 { 1426 pbTmpPage = k ldrHlpAlloc(OBJPAGELEN + 256);1425 pbTmpPage = kHlpAlloc(OBJPAGELEN + 256); 1427 1426 if (!pbTmpPage) 1428 1427 break; … … 1440 1439 if (rc) 1441 1440 break; 1442 k LdrHlpMemSet(pbTmpPage + pMap->o32_pagesize, 0, 4);1441 kHlpMemSet(pbTmpPage + pMap->o32_pagesize, 0, 4); 1443 1442 1444 1443 /* unpack it into the image page. */ … … 1451 1450 case INVALID: /* we're probably not dealing correctly with INVALID pages... */ 1452 1451 case ZEROED: 1453 k LdrHlpMemSet(pbPage, 0, OBJPAGELEN);1452 kHlpMemSet(pbPage, 0, OBJPAGELEN); 1454 1453 break; 1455 1454 … … 1468 1467 */ 1469 1468 if (iPage < cPages) 1470 k LdrHlpMemSet(pbPage, 0, (cPages - iPage) * OBJPAGELEN);1469 kHlpMemSet(pbPage, 0, (cPages - iPage) * OBJPAGELEN); 1471 1470 } 1472 1471 1473 1472 if (pbTmpPage) 1474 k ldrHlpFree(pbTmpPage);1473 kHlpFree(pbTmpPage); 1475 1474 return rc; 1476 1475 } … … 1513 1512 return KLDR_ERR_LX_BAD_ITERDATA; 1514 1513 1515 k LdrHlpMemSet(pbDst, pIter->LX_Iterdata, pIter->LX_nIter);1514 kHlpMemSet(pbDst, pIter->LX_Iterdata, pIter->LX_nIter); 1516 1515 pbDst += pIter->LX_nIter; 1517 1516 pIter++; … … 1533 1532 1534 1533 for (i = pIter->LX_nIter; i > 0; i--, pbDst += pIter->LX_nBytes) 1535 k LdrHlpMemCopy(pbDst, &pIter->LX_Iterdata, pIter->LX_nBytes);1534 kHlpMemCopy(pbDst, &pIter->LX_Iterdata, pIter->LX_nBytes); 1536 1535 pIter = (struct LX_Iter *)((char*)pIter + 4 + pIter->LX_nBytes); 1537 1536 } … … 1542 1541 */ 1543 1542 if (cbDst > 0) 1544 k LdrHlpMemSet(pbDst, 0, cbDst);1543 kHlpMemSet(pbDst, 0, cbDst); 1545 1544 1546 1545 return 0; … … 1599 1598 if (cbSrc < 0) 1600 1599 return KLDR_ERR_LX_BAD_ITERDATA2; 1601 k LdrHlpMemCopy(pbDst, ++pbSrc, cb);1600 kHlpMemCopy(pbDst, ++pbSrc, cb); 1602 1601 pbDst += cb; 1603 1602 pbSrc += cb; … … 1616 1615 if (cbSrc < 0) 1617 1616 return KLDR_ERR_LX_BAD_ITERDATA2; 1618 k LdrHlpMemSet(pbDst, pbSrc[2], cb);1617 kHlpMemSet(pbDst, pbSrc[2], cb); 1619 1618 pbDst += cb; 1620 1619 pbSrc += 3; … … 1652 1651 if (cbDst < 0) 1653 1652 return KLDR_ERR_LX_BAD_ITERDATA2; 1654 k LdrHlpMemCopy(pbDst, pbSrc, cb1);1653 kHlpMemCopy(pbDst, pbSrc, cb1); 1655 1654 pbDst += cb1; 1656 1655 pbSrc += cb1; … … 1661 1660 if (cbDst < 0) 1662 1661 return KLDR_ERR_LX_BAD_ITERDATA2; 1663 k LdrHlpMemMove(pbDst, pbDst - off, cb2);1662 kHlpMemMove(pbDst, pbDst - off, cb2); 1664 1663 pbDst += cb2; 1665 1664 } … … 1733 1732 if (cbDst < 0) 1734 1733 return KLDR_ERR_LX_BAD_ITERDATA2; 1735 k LdrHlpMemCopy(pbDst, pbSrc, cb1);1734 kHlpMemCopy(pbDst, pbSrc, cb1); 1736 1735 pbDst += cb1; 1737 1736 pbSrc += cb1; … … 1757 1756 */ 1758 1757 if (cbDst > 0) 1759 k LdrHlpMemSet(pbDst, 0, cbDst);1758 kHlpMemSet(pbDst, 0, cbDst); 1760 1759 1761 1760 return 0; … … 1867 1866 pv = (KU8 *)pvBits + pMod->aSegments[i].RVA; 1868 1867 1869 rc = k ldrHlpPageProtect(pv, pMod->aSegments[i].cbMapped, enmProt);1868 rc = kHlpPageProtect(pv, pMod->aSegments[i].cbMapped, enmProt); 1870 1869 if (rc) 1871 1870 break; … … 1894 1893 * Free the mapping and update the segments. 1895 1894 */ 1896 rc = k ldrHlpPageFree((void *)pModLX->pvMapping, pModLX->cbMapped);1895 rc = kHlpPageFree((void *)pModLX->pvMapping, pModLX->cbMapped); 1897 1896 KLDRMODLX_ASSERT(!rc); 1898 1897 pModLX->pvMapping = NULL;
Note:
See TracChangeset
for help on using the changeset viewer.