• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.10.1/dyld-353.2.1/src/

Lines Matching defs:mappings

3096 static int __attribute__((noinline)) _shared_region_map_and_slide_np(int fd, uint32_t count, const shared_file_mapping_np mappings[],
3103 siginfo.fs_blob_start = (void*)mappings[codeSignatureMappingIndex].sfm_file_offset;
3104 siginfo.fs_blob_size = mappings[codeSignatureMappingIndex].sfm_size;
3112 return syscall(438, fd, count, mappings, slide, slideInfo, slideInfoSize);
3122 const shared_file_mapping_np* const start = mappings;
3123 const shared_file_mapping_np* const end = &mappings[count];
3153 const uintptr_t dataPagesStart = mappings[1].sfm_address;
3214 static void getCacheBounds(uint32_t mappingsCount, const shared_file_mapping_np mappings[], uint64_t& lowAddress, uint64_t& highAddress)
3220 lowAddress = mappings[i].sfm_address;
3221 highAddress = mappings[i].sfm_address + mappings[i].sfm_size;
3224 if ( mappings[i].sfm_address < lowAddress )
3225 lowAddress = mappings[i].sfm_address;
3226 if ( (mappings[i].sfm_address + mappings[i].sfm_size) > highAddress )
3227 highAddress = mappings[i].sfm_address + mappings[i].sfm_size;
3232 static long pickCacheSlide(uint32_t mappingsCount, shared_file_mapping_np mappings[])
3240 if ( (mappingsCount >= 3) && (mappings[1].sfm_init_prot == (VM_PROT_READ|VM_PROT_WRITE)) && (mappings[1].sfm_address == 0x00007FFF70000000) ) {
3241 const uint64_t rwSize = mappings[1].sfm_size;
3243 const uint64_t roSize = (mappings[2].sfm_address + mappings[2].sfm_size) - mappings[0].sfm_address;
3252 // update mappings
3254 mappings[i].sfm_address += slide;
3264 getCacheBounds(mappingsCount, mappings, lowAddress, highAddress);
3274 // update mappings
3276 mappings[i].sfm_address += slide;
3306 const dyld_cache_mapping_info* const mappings = (dyld_cache_mapping_info*)(loadedAddress+header->mappingOffset);
3307 const uint8_t* preferedLoadAddress = (uint8_t*)(long)(mappings[0].address);
3360 shared_file_mapping_np mappings[header->mappingCount+1]; // add room for code-sig
3372 mappings[i].sfm_address = p->address;
3373 mappings[i].sfm_size = p->size;
3374 mappings[i].sfm_file_offset = p->fileOffset;
3375 mappings[i].sfm_max_prot = p->maxProt;
3376 mappings[i].sfm_init_prot = p->initProt;
3383 if ( (mappings[i].sfm_init_prot & (VM_PROT_READ|VM_PROT_WRITE)) == (VM_PROT_READ|VM_PROT_WRITE) ) {
3386 if ( mappings[i].sfm_init_prot == VM_PROT_READ ) {
3398 mappings[codeSignatureMappingIndex].sfm_address = mappings[linkeditMapping].sfm_address + mappings[linkeditMapping].sfm_size;
3400 mappings[codeSignatureMappingIndex].sfm_size = (signatureSize+16383) & (-16384);
3402 mappings[codeSignatureMappingIndex].sfm_size = (signatureSize+4095) & (-4096);
3404 mappings[codeSignatureMappingIndex].sfm_file_offset = header->codeSignatureOffset;
3405 mappings[codeSignatureMappingIndex].sfm_max_prot = VM_PROT_READ;
3406 mappings[codeSignatureMappingIndex].sfm_init_prot = VM_PROT_READ;
3434 getCacheBounds(mappingCount, mappings, lowAddress, highAddress);
3459 cacheSlide = pickCacheSlide(mappingCount, mappings);
3460 slideInfo = (void*)(long)(mappings[readOnlyMappingIndex].sfm_address + (header->slideInfoOffset - mappings[readOnlyMappingIndex].sfm_file_offset));
3463 mappings[readWriteMappingIndex].sfm_max_prot |= VM_PROT_SLIDE;
3464 mappings[readWriteMappingIndex].sfm_init_prot |= VM_PROT_SLIDE;
3470 dyld::log(" address=0x%08llX, size=0x%08llX, fileOffset=0x%08llX\n", mappings[i].sfm_address, mappings[i].sfm_size, mappings[i].sfm_file_offset);
3473 if (_shared_region_map_and_slide_np(fd, mappingCount, mappings, codeSignatureMappingIndex, cacheSlide, slideInfo, slideInfoSize) == 0) {
3475 sSharedCache = (dyld_cache_header*)mappings[0].sfm_address;