Unify symbol table format and implement for Elf and Mach-O
This commit is contained in:
@@ -46,6 +46,19 @@ namespace Il2CppInspector
|
||||
// SHNs
|
||||
SHN_UNDEF = 0,
|
||||
|
||||
// STTs
|
||||
STT_NOTYPE = 0,
|
||||
STT_OBJECT = 1,
|
||||
STT_FUNC = 2,
|
||||
STT_SECTION = 3,
|
||||
STT_FILE = 4,
|
||||
STT_COMMON = 5,
|
||||
STT_LOOS = 10,
|
||||
STT_HIOS = 12,
|
||||
STT_LOPROC = 13,
|
||||
STT_SPARC_REGISTER = 13,
|
||||
STT_HIPROC = 15,
|
||||
|
||||
// dynamic sections
|
||||
DT_STRTAB = 5,
|
||||
DT_SYMTAB = 6,
|
||||
@@ -192,6 +205,8 @@ namespace Il2CppInspector
|
||||
uint st_name { get; }
|
||||
TWord st_value { get; }
|
||||
ushort st_shndx { get; }
|
||||
Elf st_info { get; }
|
||||
Elf type { get; }
|
||||
}
|
||||
|
||||
internal class elf_32_sym : Ielf_sym<uint>
|
||||
@@ -199,11 +214,13 @@ namespace Il2CppInspector
|
||||
public uint st_name => f_st_name;
|
||||
public uint st_value => f_st_value;
|
||||
public ushort st_shndx => f_st_shndx;
|
||||
public Elf st_info => (Elf) f_st_info;
|
||||
public Elf type => (Elf) (f_st_info & 0xf);
|
||||
|
||||
public uint f_st_name;
|
||||
public uint f_st_value;
|
||||
public uint st_size;
|
||||
public byte st_info;
|
||||
public byte f_st_info;
|
||||
public byte st_other;
|
||||
public ushort f_st_shndx;
|
||||
}
|
||||
@@ -213,9 +230,11 @@ namespace Il2CppInspector
|
||||
public uint st_name => f_st_name;
|
||||
public ulong st_value => f_st_value;
|
||||
public ushort st_shndx => f_st_shndx;
|
||||
public Elf st_info => (Elf) f_st_info;
|
||||
public Elf type => (Elf) (f_st_info & 0xf);
|
||||
|
||||
public uint f_st_name;
|
||||
public byte st_info;
|
||||
public byte f_st_info;
|
||||
public byte st_other;
|
||||
public ushort f_st_shndx;
|
||||
public ulong f_st_value;
|
||||
|
||||
@@ -4,6 +4,7 @@
|
||||
All rights reserved.
|
||||
*/
|
||||
|
||||
using System;
|
||||
using NoisyCowStudios.Bin2Object;
|
||||
|
||||
namespace Il2CppInspector
|
||||
@@ -33,7 +34,34 @@ namespace Il2CppInspector
|
||||
CPU_TYPE_X86 = 7,
|
||||
CPU_TYPE_X86_64 = 0x01000000 + CPU_TYPE_X86,
|
||||
CPU_TYPE_ARM = 12,
|
||||
CPU_TYPE_ARM64 = 0x01000000 + CPU_TYPE_ARM
|
||||
CPU_TYPE_ARM64 = 0x01000000 + CPU_TYPE_ARM,
|
||||
}
|
||||
|
||||
[Flags]
|
||||
public enum MachO_NType : byte
|
||||
{
|
||||
// n_type masks
|
||||
N_STAB = 0xe0,
|
||||
N_PEXT = 0x10,
|
||||
N_TYPE = 0x0e,
|
||||
N_EXT = 0x01,
|
||||
|
||||
// n_stab bits
|
||||
N_UNDF = 0x00,
|
||||
N_ABS = 0x02,
|
||||
N_SECT = 0x0e,
|
||||
N_PBUD = 0x0c,
|
||||
N_INDR = 0x0a,
|
||||
|
||||
// n_type bits when N_STAB has some bits set
|
||||
N_GSYM = 0x20,
|
||||
N_FNAME = 0x22,
|
||||
N_FUN = 0x24,
|
||||
N_STSYM = 0x26,
|
||||
N_BNSYM = 0x2E,
|
||||
N_ENSYM = 0x4E,
|
||||
N_SO = 0x64,
|
||||
N_OSO = 0x66,
|
||||
}
|
||||
|
||||
internal class MachOHeader<TWord> where TWord : struct
|
||||
@@ -124,8 +152,9 @@ namespace Il2CppInspector
|
||||
|
||||
internal class MachO_nlist<TWord> where TWord : struct
|
||||
{
|
||||
public MachO_NType n_type => (MachO_NType) f_n_type;
|
||||
public uint n_strx;
|
||||
public byte n_type;
|
||||
public byte f_n_type;
|
||||
public byte n_sect;
|
||||
public ushort n_desc;
|
||||
public TWord n_value;
|
||||
|
||||
Reference in New Issue
Block a user