MCPcopy Index your code
hub / github.com/qilingframework/qiling / map

Method map

qiling/os/memory.py:622–642  ·  view source on GitHub ↗

Map a new memory range. Args: addr: memory range base address size: memory range size (in bytes) perms: requested permissions mask info: range label string ptr: pointer to use (if any) Raises: QlMemoryMappedErr

(self, addr: int, size: int, perms: int = UC_PROT_ALL, info: Optional[str] = None)

Source from the content-addressed store, hash-verified

620 self.change_mapinfo(aligned_address, aligned_address + aligned_size, new_perms=perms)
621
622 def map(self, addr: int, size: int, perms: int = UC_PROT_ALL, info: Optional[str] = None):
623 """Map a new memory range.
624
625 Args:
626 addr: memory range base address
627 size: memory range size (in bytes)
628 perms: requested permissions mask
629 info: range label string
630 ptr: pointer to use (if any)
631
632 Raises:
633 QlMemoryMappedError: in case requested memory range is not fully available
634 """
635
636 assert perms & ~UC_PROT_ALL == 0, f'unexpected permissions mask {perms}'
637
638 if not self.is_available(addr, size):
639 raise QlMemoryMappedError('Requested memory is unavailable')
640
641 self.ql.uc.mem_map(addr, size, perms)
642 self.add_mapinfo(addr, addr + size, perms, info or '[mapped]', None)
643
644 def map_mmio(self, addr: int, size: int, handler: QlMmioHandler, info: str = '[mmio]'):
645 # TODO: mmio memory overlap with ram? Is that possible?

Callers 15

restoreMethod · 0.95
map_anywhereMethod · 0.95
_init_stop_guardMethod · 0.80
init_linux_trapsFunction · 0.80
__init__Method · 0.80
restoreMethod · 0.80
allocMethod · 0.80
runMethod · 0.80
__setup_gdtMethod · 0.80
init_stackMethod · 0.80
__init__Method · 0.80
hook_SmmAllocatePagesFunction · 0.80

Calls 3

is_availableMethod · 0.95
add_mapinfoMethod · 0.95
QlMemoryMappedErrorClass · 0.85

Tested by 6

setUpMethod · 0.64
run_checksum_emuMethod · 0.64
test_elf_linux_x8664Method · 0.64
test_memory_searchMethod · 0.64