Changeset 2870 for trunk/kLdr/kLdrDyldMod.c
- Timestamp:
- Nov 12, 2006, 6:38:28 AM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/kLdr/kLdrDyldMod.c
r2869 r2870 83 83 if (rc) 84 84 return kldrDyldFailure(rc, "%s: %rc", kLdrRdrName(pRdr), rc); 85 86 /* 87 * Match the module aginst the load flags. 88 */ 89 switch (pRawMod->enmType) 90 { 91 case KLDRTYPE_EXECUTABLE_FIXED: 92 case KLDRTYPE_EXECUTABLE_RELOCATABLE: 93 case KLDRTYPE_EXECUTABLE_PIC: 94 if (!(fFlags & KLDRDYLD_LOAD_FLAGS_EXECUTABLE)) 95 { 96 kLdrModClose(pRawMod); 97 return KLDR_ERR_NOT_EXE; 98 } 99 break; 100 101 case KLDRTYPE_OBJECT: /* We can handle these as DLLs. */ 102 case KLDRTYPE_SHARED_LIBRARY_FIXED: 103 case KLDRTYPE_SHARED_LIBRARY_RELOCATABLE: 104 case KLDRTYPE_SHARED_LIBRARY_PIC: 105 case KLDRTYPE_FORWARDER_DLL: 106 if (fFlags & KLDRDYLD_LOAD_FLAGS_EXECUTABLE) 107 { 108 kLdrModClose(pRawMod); 109 return KLDR_ERR_NOT_DLL; 110 } 111 break; 112 113 default: 114 KLDRDYLDMOD_ASSERT(!"Bad enmType!"); 115 case KLDRTYPE_CORE: 116 return fFlags & KLDRDYLD_LOAD_FLAGS_EXECUTABLE ? KLDR_ERR_NOT_EXE : KLDR_ERR_NOT_DLL; 117 } 85 118 86 119 /* … … 128 161 kLdrDyldTail = pMod; 129 162 130 /* we're good. */ 163 /* deal with the remaining flags. */ 164 if (fFlags & KLDRYDLD_LOAD_FLAGS_SPECIFIC_MODULE) 165 kldrDyldModMarkSpecific(pMod); 166 else 167 kldrDyldModMarkGlobal(pMod); 168 169 if (fFlags & KLDRYDLD_LOAD_FLAGS_GLOBAL_SYMBOLS) 170 kldrDyldModSetBindable(pMod, 0 /* not deep binable */); 171 else 172 kldrDyldModClearBindable(pMod); 173 174 /* 175 * We're good. 176 */ 131 177 *ppMod = pMod; 132 178 rc = 0;
Note:
See TracChangeset
for help on using the changeset viewer.