rpcsx/rpcs3/Loader/SELF.cpp
DH fb57bb9c4e - Implemented MTCRF instruction.
- Implemented sys_spu_thread_set_argument syscall.
- Improved Debugger.
2013-07-08 16:24:46 +03:00

47 lines
817 B
C++

#include "stdafx.h"
#include "SELF.h"
#include "ELF64.h"
SELFLoader::SELFLoader(vfsStream& f)
: self_f(f)
, LoaderBase()
{
}
bool SELFLoader::LoadInfo()
{
if(!self_f.IsOpened()) return false;
self_f.Seek(0);
sce_hdr.Load(self_f);
self_hdr.Load(self_f);
if(!sce_hdr.CheckMagic()) return false;
return true;
}
bool SELFLoader::LoadData(u64 offset)
{
if(!self_f.IsOpened()) return false;
sce_hdr.Show();
self_hdr.Show();
ELF64Loader l(self_f);
if( !l.LoadEhdrInfo(self_hdr.se_elfoff) ||
!l.LoadPhdrInfo(self_hdr.se_phdroff) ||
!l.LoadShdrInfo(self_hdr.se_shdroff) ||
!l.LoadData(self_hdr.se_appinfooff) )
{
ConLog.Error("Broken SELF file.");
return false;
}
machine = l.GetMachine();
entry = l.GetEntry();
return true;
ConLog.Error("Boot SELF not supported yet!");
return false;
}