mirror of
https://github.com/RPCSX/rpcsx.git
synced 2025-12-06 07:12:14 +01:00
53 lines
699 B
C++
53 lines
699 B
C++
#pragma once
|
|
#include "Loader.h"
|
|
|
|
struct vfsStream;
|
|
|
|
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);
|
|
|
|
bool CheckMagic() const { return e_magic == 0x7F454C46; }
|
|
|
|
ElfClass GetClass() const
|
|
{
|
|
switch(e_class)
|
|
{
|
|
case 1: return CLASS_ELF32;
|
|
case 2: return CLASS_ELF64;
|
|
}
|
|
|
|
return CLASS_Unknown;
|
|
}
|
|
};
|
|
|
|
class ELFLoader : public LoaderBase
|
|
{
|
|
vfsStream& m_elf_file;
|
|
LoaderBase* m_loader;
|
|
|
|
public:
|
|
Elf_Ehdr ehdr;
|
|
|
|
ELFLoader(vfsStream& f);
|
|
virtual ~ELFLoader()
|
|
{
|
|
Close();
|
|
}
|
|
|
|
virtual bool LoadInfo();
|
|
virtual bool LoadData(u64 offset = 0);
|
|
virtual bool Close();
|
|
}; |