#include "tests/GuestUnwindModuleInfoFixture.hpp" #include #include __attribute__((section(".ehmeta"), used)) static volatile std::uint32_t ehMeta = 0; extern "C" IMAGE_DOS_HEADER __ImageBase; static UnwindFixture fixture; extern "C" __declspec(dllexport) UnwindFixture* GetUnwindFixture() { const auto base = reinterpret_cast(&__ImageBase); fixture.header.frames = static_cast(reinterpret_cast(&fixture.frames) - reinterpret_cast(&fixture.header.frames)); DWORD old = 0; if (!VirtualProtect(const_cast(&ehMeta), sizeof(ehMeta), PAGE_READWRITE, &old)) return nullptr; ehMeta = static_cast(reinterpret_cast(&fixture.header) - base); return &fixture; }