/* Copyright 2017 Wolfgang Thaller. This file is part of Retro68. Retro68 is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Retro68 is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Retro68. If not, see . */ #ifndef RELOC_H #define RELOC_H #include #include #include #include enum class RelocBase { code = 0, data, bss, jumptable, code1 }; class Reloc : public GElf_Rela { public: RelocBase relocBase; Reloc(); Reloc(const GElf_Rela& rela); }; class RuntimeReloc { public: RelocBase base; uint32_t offset; RuntimeReloc() : base(RelocBase::code), offset(0) {} RuntimeReloc(RelocBase b, uint32_t o) : base(b), offset(o) {} }; std::string SerializeRelocsUncompressed(std::vector relocs); std::string SerializeRelocs(std::vector relocs); #endif // RELOC_H