rpcsx/rpcs3/Loader/ELF.h
DH 5753edf6ef - Improved sc function binder.
- Improved GLGSRender.
2013-06-30 11:46:29 +03:00

56 lines
755 B
C++

#pragma once
#include "ELF64.h"
#include "ELF32.h"
#include "Emu/FS/vfsStream.h"
enum ElfClass
{
CLASS_Unknown,
CLASS_ELF32,
CLASS_ELF64,
};
struct Elf_Ehdr
{
u32 e_magic;
u8 e_class;
virtual void Show()
{
}
virtual void Load(vfsStream& f)
{
e_magic = Read32(f);
e_class = Read8(f);
}
bool CheckMagic() const { return e_magic == 0x7F454C46; }
ElfClass GetClass()
{
switch(e_class)
{
case 1: return CLASS_ELF32;
case 2: return CLASS_ELF64;
}
return CLASS_Unknown;
}
};
class ELFLoader : public LoaderBase
{
vfsStream& elf_f;
LoaderBase* loader;
public:
Elf_Ehdr ehdr;
ELFLoader(vfsStream& f);
~ELFLoader() {Close();}
virtual bool LoadInfo();
virtual bool LoadData(u64 offset = 0);
virtual bool Close();
};