• Home
  • Raw
  • Download

Lines Matching refs:fragToFix

153 static OSStatus ReadContainerBasics(FragToFixInfo *fragToFix)  in ReadContainerBasics()  argument
172 MoreAssertQ(fragToFix != nil); in ReadContainerBasics()
173 MoreAssertQ(fragToFix->locator.fileSpec != nil); in ReadContainerBasics()
174 MoreAssertQ(fragToFix->connID != nil); in ReadContainerBasics()
175 MoreAssertQ(fragToFix->loaderSection == nil); in ReadContainerBasics()
176 MoreAssertQ(fragToFix->sectionHeaders == nil); in ReadContainerBasics()
177 MoreAssertQ(fragToFix->fileRef == 0); in ReadContainerBasics()
179 fragToFix->disposeSectionPointers = true; in ReadContainerBasics()
186 err = FSpOpenDF(fragToFix->locator.fileSpec, fsRdPerm, &fragToFix->fileRef); in ReadContainerBasics()
188 err = FSReadAtOffset(fragToFix->fileRef, in ReadContainerBasics()
189 fragToFix->locator.offset, in ReadContainerBasics()
190 sizeof(fragToFix->containerHeader), in ReadContainerBasics()
191 &fragToFix->containerHeader); in ReadContainerBasics()
193 if ( fragToFix->containerHeader.tag1 != kPEFTag1 in ReadContainerBasics()
194 || fragToFix->containerHeader.tag2 != kPEFTag2 in ReadContainerBasics()
195 || fragToFix->containerHeader.architecture != kCompiledCFragArch in ReadContainerBasics()
196 || fragToFix->containerHeader.formatVersion != kPEFVersion) { in ReadContainerBasics()
201fragToFix->sectionHeaders = (PEFSectionHeader *) NewPtr(fragToFix->containerHeader.sectionCount * … in ReadContainerBasics()
205 err = FSReadAtOffset(fragToFix->fileRef, in ReadContainerBasics()
206fragToFix->locator.offset + sizeof(fragToFix->containerHeader), in ReadContainerBasics()
207fragToFix->containerHeader.sectionCount * sizeof(PEFSectionHeader), in ReadContainerBasics()
208 fragToFix->sectionHeaders); in ReadContainerBasics()
213 while ( sectionIndex < fragToFix->containerHeader.sectionCount && ! found ) { in ReadContainerBasics()
214 found = (fragToFix->sectionHeaders[sectionIndex].sectionKind == kPEFLoaderSection); in ReadContainerBasics()
227fragToFix->loaderSection = (PEFLoaderInfoHeader *) NewPtr(fragToFix->sectionHeaders[sectionIndex].… in ReadContainerBasics()
231 err = FSReadAtOffset(fragToFix->fileRef, in ReadContainerBasics()
232fragToFix->locator.offset + fragToFix->sectionHeaders[sectionIndex].containerOffset, in ReadContainerBasics()
233fragToFix->sectionHeaders[sectionIndex].containerLength, in ReadContainerBasics()
234 fragToFix->loaderSection); in ReadContainerBasics()
495 static OSStatus SetupSectionBaseAddresses(FragToFixInfo *fragToFix) in SetupSectionBaseAddresses() argument
530 relocatedExport = (TVector *) fragToFix->initRoutine; in SetupSectionBaseAddresses()
539 initSection = fragToFix->loaderSection->initSection; in SetupSectionBaseAddresses()
540 initOffset = fragToFix->loaderSection->initOffset; in SetupSectionBaseAddresses()
546 MoreAssertQ( initSection < fragToFix->containerHeader.sectionCount ); in SetupSectionBaseAddresses()
548 initSectionHeader = &fragToFix->sectionHeaders[initSection]; in SetupSectionBaseAddresses()
569 err = FSReadAtOffset( fragToFix->fileRef, in SetupSectionBaseAddresses()
570 fragToFix->locator.offset in SetupSectionBaseAddresses()
590 … MoreAssertQ(fragToFix->sectionHeaders[initSection].sectionKind == kPEFUnpackedDataSection); in SetupSectionBaseAddresses()
591 err = FSReadAtOffset(fragToFix->fileRef, in SetupSectionBaseAddresses()
592 fragToFix->locator.offset in SetupSectionBaseAddresses()
593 … + fragToFix->sectionHeaders[initSection].containerOffset in SetupSectionBaseAddresses()
606fragToFix->section0Base = ((char *) relocatedExport->codePtr) - (UInt32) originalOffsets.codePtr; in SetupSectionBaseAddresses()
607fragToFix->section1Base = ((char *) relocatedExport->tocPtr) - (UInt32) originalOffsets.tocPtr; in SetupSectionBaseAddresses()
623 static void *GetSectionBaseAddress(const FragToFixInfo *fragToFix, UInt16 sectionIndex) in GetSectionBaseAddress() argument
635 MoreAssertQ(fragToFix != nil); in GetSectionBaseAddress()
636 MoreAssertQ(fragToFix->containerHeader.tag1 == kPEFTag1); in GetSectionBaseAddress()
640 result = fragToFix->section0Base; in GetSectionBaseAddress()
643 result = fragToFix->section1Base; in GetSectionBaseAddress()
788 static OSStatus InitEngineState(const FragToFixInfo *fragToFix, in InitEngineState() argument
802 MoreAssertQ(fragToFix != nil); in InitEngineState()
819 …relocHeader = (PEFLoaderRelocationHeader *) (((char *) fragToFix->loaderSection) + fragToFix->load… in InitEngineState()
825 state->sectionBase = (UInt32 *) GetSectionBaseAddress(fragToFix, relocHeader->sectionIndex); in InitEngineState()
842 state->sectionC = GetSectionBaseAddress(fragToFix, 0); in InitEngineState()
845 if (fragToFix->sectionHeaders[0].defaultAddress != 0) { in InitEngineState()
849 (char *) state->sectionC -= fragToFix->sectionHeaders[0].defaultAddress; in InitEngineState()
851 state->sectionD = GetSectionBaseAddress(fragToFix, 1); in InitEngineState()
854 if (fragToFix->sectionHeaders[1].defaultAddress != 0) { in InitEngineState()
858 (char *) state->sectionD -= fragToFix->sectionHeaders[1].defaultAddress; in InitEngineState()
874 static OSStatus RunRelocationEngine(const FragToFixInfo *fragToFix, in RunRelocationEngine() argument
892 MoreAssertQ(fragToFix != nil); in RunRelocationEngine()
893 MoreAssertQ(fragToFix->containerHeader.tag1 == kPEFTag1); in RunRelocationEngine()
894 MoreAssertQ(fragToFix->sectionHeaders != nil); in RunRelocationEngine()
895 MoreAssertQ(fragToFix->loaderSection != nil); in RunRelocationEngine()
896 …MoreAssertQ(fragToFix->section0Base != nil); // Technically, having a nil for these two is … in RunRelocationEngine()
897 …MoreAssertQ(fragToFix->section1Base != nil); // but in practice it a wildly deviant case an… in RunRelocationEngine()
906 …totalRelocs = (fragToFix->loaderSection->loaderStringsOffset - fragToFix->loaderSection->relocInst… in RunRelocationEngine()
911 …relocInstrTable = (UInt16 *)((char *) fragToFix->loaderSection + fragToFix->loaderSection->relocIn… in RunRelocationEngine()
915 MoreAssertQ(fragToFix->loaderSection->relocSectionCount <= 0x0FFFF); in RunRelocationEngine()
916 sectionsLeftToRelocate = fragToFix->loaderSection->relocSectionCount; in RunRelocationEngine()
963 err = InitEngineState(fragToFix, sectionsLeftToRelocate, &state); in RunRelocationEngine()
1019 … err = LookupSymbol(lookup, refCon, fragToFix->loaderSection, state.importIndex, &symbolValue); in RunRelocationEngine()
1038 … err = LookupSymbol(lookup, refCon, fragToFix->loaderSection, index, &symbolValue); in RunRelocationEngine()
1053 state.sectionC = GetSectionBaseAddress(fragToFix, index); in RunRelocationEngine()
1062 state.sectionD = GetSectionBaseAddress(fragToFix, index); in RunRelocationEngine()
1118 … err = LookupSymbol(lookup, refCon, fragToFix->loaderSection, index, &symbolValue); in RunRelocationEngine()
1172 FragToFixInfo fragToFix; in CFMLateImportCore() local
1185 MoreBlockZero(&fragToFix, sizeof(fragToFix)); in CFMLateImportCore()
1186 fragToFix.locator = *fragToFixLocator; in CFMLateImportCore()
1187 fragToFix.connID = fragToFixConnID; in CFMLateImportCore()
1188 fragToFix.initRoutine = fragToFixInitRoutine; in CFMLateImportCore()
1199 err = ReadContainerBasics(&fragToFix); in CFMLateImportCore()
1207 err = SetupSectionBaseAddresses(&fragToFix); in CFMLateImportCore()
1215 … err = FindImportLibrary(fragToFix.loaderSection, weakLinkedLibraryNameCString, &importLibrary); in CFMLateImportCore()
1231 err = RunRelocationEngine(&fragToFix, importLibrary, lookup, refCon); in CFMLateImportCore()
1236 if (fragToFix.disposeSectionPointers) { in CFMLateImportCore()
1237 if (fragToFix.fileRef != 0) { in CFMLateImportCore()
1238 junk = FSClose(fragToFix.fileRef); in CFMLateImportCore()
1241 if (fragToFix.loaderSection != nil) { in CFMLateImportCore()
1242 DisposePtr( (Ptr) fragToFix.loaderSection); in CFMLateImportCore()
1245 if (fragToFix.sectionHeaders != nil) { in CFMLateImportCore()
1246 DisposePtr( (Ptr) fragToFix.sectionHeaders); in CFMLateImportCore()