Changeset 25 for trunk/kLdr/kLdrModLX.c


Ignore:
Timestamp:
Feb 19, 2009, 1:56:15 AM (16 years ago)
Author:
bird
Message:

A blind shot at FAT Mach-O images.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/kLdr/kLdrModLX.c

    r24 r25  
    147147 * @param   pOps            Pointer to the registered method table.
    148148 * @param   pRdr            The file provider instance to use.
     149 * @param   fFlags          Flags, MBZ.
     150 * @param   enmCpuArch      The desired CPU architecture. KCPUARCH_UNKNOWN means
     151 *                          anything goes, but with a preference for the current
     152 *                          host architecture.
    149153 * @param   offNewHdr       The offset of the new header in MZ files. -1 if not found.
    150154 * @param   ppMod           Where to store the module instance pointer.
    151155 */
    152 static int kldrModLXCreate(PCKLDRMODOPS pOps, PKRDR pRdr, KLDRFOFF offNewHdr, PPKLDRMOD ppMod)
     156static int kldrModLXCreate(PCKLDRMODOPS pOps, PKRDR pRdr, KU32 fFlags, KCPUARCH enmCpuArch, KLDRFOFF offNewHdr, PPKLDRMOD ppMod)
    153157{
    154158    PKLDRMODLX pModLX;
     
    161165    if (!rc)
    162166    {
    163         pModLX->pMod->pOps = pOps;
    164         pModLX->pMod->u32Magic = KLDRMOD_MAGIC;
    165         *ppMod = pModLX->pMod;
    166         return 0;
     167        /*
     168         * Match up against the requested CPU architecture.
     169         */
     170        if (    enmCpuArch == KCPUARCH_UNKNOWN
     171            ||  pModLX->pMod->enmArch == enmCpuArch)
     172        {
     173            pModLX->pMod->pOps = pOps;
     174            pModLX->pMod->u32Magic = KLDRMOD_MAGIC;
     175            *ppMod = pModLX->pMod;
     176            return 0;
     177        }
     178        rc = KLDR_ERR_CPU_ARCH_MISMATCH;
    167179    }
    168180    kHlpFree(pModLX);
Note: See TracChangeset for help on using the changeset viewer.