graph LR
Platform_Memory_Manager["Platform Memory Manager"]
Platform_System_Utilities["Platform System Utilities"]
Architecture_Specific_Context_Manager["Architecture-Specific Context Manager"]
Platform_Memory_Manager -- "utilizes" --> Platform_System_Utilities
Architecture_Specific_Context_Manager -- "relies on" --> Platform_System_Utilities
Architecture_Specific_Context_Manager -- "interact with" --> Platform_Memory_Manager
One paragraph explaining the functionality which is represented by this graph. What the main flow is and what is its purpose.
This component provides a consistent interface for managing memory operations, abstracting away the complexities of OS-specific memory allocation, deallocation, protection (read, write, execute), and mapping. It ensures that QBDI can reliably allocate and manipulate memory regions for instrumentation, trampolines, and other internal data structures regardless of the underlying operating system.
Related Classes/Methods:
include/QBDI/Memory.hsrc/Utility/Memory.cppsrc/Utility/Memory_android.cppsrc/Utility/Memory_linux.cppsrc/Utility/Memory_osx.cppsrc/Utility/Memory_windows.cpp
This component encapsulates generic, platform-dependent system functionalities that are not directly related to memory or stack management. This includes functionalities like signal handling, querying system properties (e.g., page size), and other low-level OS interactions that ensure QBDI's robust operation across different environments.
Related Classes/Methods:
src/Utility/System.hsrc/Utility/System_generic.cppsrc/Utility/AARCH64/System_OSX.cppsrc/Utility/AARCH64/System_darwin.cppsrc/Utility/AARCH64/System_iOS.cppsrc/Utility/ARM/System_darwin.cppsrc/Utility/ARM/System_iOS.cpp
This component is responsible for managing and manipulating CPU architecture-specific states, including the representation of register sets and the mechanics of stack switching. It provides the necessary abstractions to save, restore, and modify the execution context of a thread, which is crucial for redirecting control flow during instrumentation and for handling callbacks.
Related Classes/Methods:
src/Utility/StackSwitch.cppsrc/Utility/StackSwitch.hsrc/Patch/Register.cppsrc/Patch/Register.hsrc/Patch/AARCH64/Register_AARCH64.cppsrc/Patch/ARM/Register_ARM.cppsrc/Patch/X86_64/Register_X86_64.cpp