mirror of
https://github.com/RPCSX/rpcsx.git
synced 2026-04-05 14:37:08 +00:00
This commit is contained in:
parent
de070bf485
commit
a90b5cf37a
1998 changed files with 1034301 additions and 0 deletions
50
rpcs3/Loader/ELF.cpp
Normal file
50
rpcs3/Loader/ELF.cpp
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
#include "stdafx.h"
|
||||
#include "Loader.h"
|
||||
#include "ELF.h"
|
||||
|
||||
ELFLoader::ELFLoader(wxFile& f)
|
||||
: elf_f(f)
|
||||
, LoaderBase()
|
||||
, loader(NULL)
|
||||
{
|
||||
}
|
||||
|
||||
ELFLoader::ELFLoader(const wxString& path)
|
||||
: elf_f(*new wxFile(path))
|
||||
, LoaderBase()
|
||||
, loader(NULL)
|
||||
{
|
||||
}
|
||||
|
||||
bool ELFLoader::LoadInfo()
|
||||
{
|
||||
if(!elf_f.IsOpened()) return false;
|
||||
|
||||
elf_f.Seek(0);
|
||||
ehdr.Load(elf_f);
|
||||
if(!ehdr.CheckMagic()) return false;
|
||||
|
||||
switch(ehdr.GetClass())
|
||||
{
|
||||
case CLASS_ELF32: loader = new ELF32Loader(elf_f); break;
|
||||
case CLASS_ELF64: loader = new ELF64Loader(elf_f); break;
|
||||
}
|
||||
|
||||
if(!loader || !loader->LoadInfo()) return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ELFLoader::LoadData()
|
||||
{
|
||||
if(!loader || !loader->LoadData()) return false;
|
||||
entry = loader->GetEntry();
|
||||
machine = loader->GetMachine();
|
||||
return true;
|
||||
}
|
||||
|
||||
bool ELFLoader::Close()
|
||||
{
|
||||
safe_delete(loader);
|
||||
return elf_f.Close();
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue