00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032 #include <pch.h>
00033 #include "Emu/Utility/System/Loader/ELF64.h"
00034 #include "SysDeps/Endian.h"
00035
00036 using namespace std;
00037 using namespace Onikiri;
00038
00039 void Onikiri::EndianSpecifiedToHostInPlace(EmulatorUtility::ELF64_HEADER& h, bool bigEndian)
00040 {
00041
00042 EndianSpecifiedToHostInPlace( h.e_type, bigEndian);
00043 EndianSpecifiedToHostInPlace( h.e_machine, bigEndian);
00044 EndianSpecifiedToHostInPlace( h.e_version, bigEndian);
00045 EndianSpecifiedToHostInPlace( h.e_entry, bigEndian);
00046 EndianSpecifiedToHostInPlace( h.e_phoff, bigEndian);
00047 EndianSpecifiedToHostInPlace( h.e_shoff, bigEndian);
00048 EndianSpecifiedToHostInPlace( h.e_flags, bigEndian);
00049 EndianSpecifiedToHostInPlace( h.e_ehsize, bigEndian);
00050 EndianSpecifiedToHostInPlace( h.e_phentsize, bigEndian);
00051 EndianSpecifiedToHostInPlace( h.e_phnum, bigEndian);
00052 EndianSpecifiedToHostInPlace( h.e_shentsize, bigEndian);
00053 EndianSpecifiedToHostInPlace( h.e_shnum, bigEndian);
00054 EndianSpecifiedToHostInPlace( h.e_shstrndx , bigEndian);
00055 }
00056
00057 void Onikiri::EndianSpecifiedToHostInPlace(EmulatorUtility::ELF64_SECTION& h, bool bigEndian)
00058 {
00059 EndianSpecifiedToHostInPlace( h.sh_name, bigEndian);
00060 EndianSpecifiedToHostInPlace( h.sh_type, bigEndian);
00061 EndianSpecifiedToHostInPlace( h.sh_flags, bigEndian);
00062 EndianSpecifiedToHostInPlace( h.sh_addr, bigEndian);
00063 EndianSpecifiedToHostInPlace( h.sh_offset, bigEndian);
00064 EndianSpecifiedToHostInPlace( h.sh_size, bigEndian);
00065 EndianSpecifiedToHostInPlace( h.sh_link, bigEndian);
00066 EndianSpecifiedToHostInPlace( h.sh_info, bigEndian);
00067 EndianSpecifiedToHostInPlace( h.sh_addralign, bigEndian);
00068 EndianSpecifiedToHostInPlace( h.sh_entsize, bigEndian);
00069 }
00070
00071 void Onikiri::EndianSpecifiedToHostInPlace(EmulatorUtility::ELF64_PROGRAM& h, bool bigEndian)
00072 {
00073 EndianSpecifiedToHostInPlace( h.p_type, bigEndian);
00074 EndianSpecifiedToHostInPlace( h.p_flags, bigEndian);
00075 EndianSpecifiedToHostInPlace( h.p_offset, bigEndian);
00076 EndianSpecifiedToHostInPlace( h.p_vaddr, bigEndian);
00077 EndianSpecifiedToHostInPlace( h.p_paddr, bigEndian);
00078 EndianSpecifiedToHostInPlace( h.p_filesz, bigEndian);
00079 EndianSpecifiedToHostInPlace( h.p_memsz, bigEndian);
00080 EndianSpecifiedToHostInPlace( h.p_align, bigEndian);
00081 }