// Copyright 2018 yuzu emulator team // Licensed under GPLv2 or any later version // Refer to the license.txt file included. #pragma once #include #include #include "common/common_types.h" namespace Loader { class Linker { protected: struct Symbol { Symbol(std::string&& name, u64 value) : name(std::move(name)), value(value) {} std::string name; u64 value; }; struct Import { VAddr ea; s64 addend; }; void WriteRelocations(std::vector& program_image, const std::vector& symbols, u64 relocation_offset, u64 size, bool is_jump_relocation, VAddr load_base); void Relocate(std::vector& program_image, u32 dynamic_section_offset, VAddr load_base); void ResolveImports(); std::map imports; std::map exports; }; } // namespace Loader