// SPDX-License-Identifier: MIT #pragma once #include #include #include #include #include #include #include namespace FEXCore { class JITSymbols final { public: JITSymbols(); ~JITSymbols(); void InitFile(); void RegisterNamedRegion(const void* HostAddr, uint32_t CodeSize, std::string_view Name); void RegisterJITSpace(const void* HostAddr, uint32_t CodeSize); // Allocate JIT buffer. static fextl::unique_ptr AllocateBuffer() { return fextl::make_unique(); } void Register(Core::JITSymbolBuffer* Buffer, const void* HostAddr, uint64_t GuestAddr, uint32_t CodeSize); void Register(Core::JITSymbolBuffer* Buffer, const void* HostAddr, uint32_t CodeSize, std::string_view Name, uintptr_t Offset); void RegisterNamedRegion(Core::JITSymbolBuffer* Buffer, const void* HostAddr, uint32_t CodeSize, std::string_view Name); private: int fd {-1}; void WriteBuffer(Core::JITSymbolBuffer* Buffer, bool ForceWrite = false); }; } // namespace FEXCore