3#ifndef SYMS_MACH_PARSER_C
4#define SYMS_MACH_PARSER_C
124 for (
SYMS_U32 k = 0; k < sec_count; k += 1){
161 for (
SYMS_U32 k = 0; k < sec_count; k += 1){
265 void *base = data.
str;
339 void *base = data.
str;
435 for (;ptr < opl && *ptr != 0; ptr += 1);
601 SYMS_Import *
import = &import_array.imports[import_array.count++];
658 node->
children[child_idx] = syms_mach_parse_export_node(arena, base, range, name,
child_offset);
669 return syms_mach_parse_export_node(arena, base, range,
syms_str8_lit(
""), 0);
698 for (; stack != 0; ){
OODEFFUNC typedef const char * file
Definition oodle2.h:678
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
Definition syms_base.h:402
Definition syms_debug_info.h:31
SYMS_BinInfo * bin_info
Definition syms_debug_info.h:32
SYMS_U64 count
Definition syms_debug_info.h:33
Definition syms_debug_info.h:26
SYMS_Arch arch
Definition syms_debug_info.h:27
Definition syms_debug_info.h:69
SYMS_U64 count
Definition syms_debug_info.h:71
Definition syms_debug_info.h:59
struct SYMS_ExportNode * next
Definition syms_debug_info.h:60
Definition syms_debug_info.h:45
SYMS_String8 name
Definition syms_debug_info.h:46
Definition syms_debug_info.h:64
SYMS_U64 count
Definition syms_debug_info.h:66
Definition syms_debug_info.h:39
SYMS_String8 name
Definition syms_debug_info.h:40
Definition syms_mach_parser.h:40
SYMS_U32 dylib_count
Definition syms_mach_parser.h:61
SYMS_B32 is_swapped
Definition syms_mach_parser.h:45
SYMS_U32 load_command_count
Definition syms_mach_parser.h:47
SYMS_Arch arch
Definition syms_mach_parser.h:43
SYMS_MachSection64 * sections
Definition syms_mach_parser.h:55
SYMS_U64Range export_range
Definition syms_mach_parser.h:59
struct SYMS_MachParsedDylib * dylibs
Definition syms_mach_parser.h:62
SYMS_MachSegmentCommand64 * segments
Definition syms_mach_parser.h:52
SYMS_MachSymtabCommand symtab
Definition syms_mach_parser.h:50
SYMS_FileFormat format
Definition syms_mach_parser.h:41
SYMS_U64Range bind_ranges[SYMS_MachBindTable_COUNT]
Definition syms_mach_parser.h:58
SYMS_U64Range load_commands
Definition syms_mach_parser.h:48
SYMS_U32 section_count
Definition syms_mach_parser.h:56
SYMS_U32 segment_count
Definition syms_mach_parser.h:53
Definition syms_mach_parser.h:15
SYMS_FileFormat format
Definition syms_mach_parser.h:16
SYMS_MachFatArch * fats
Definition syms_mach_parser.h:17
SYMS_U32 count
Definition syms_mach_parser.h:18
Definition syms_mach_parser.h:109
Definition syms_mach_parser.h:103
SYMS_MachBind data
Definition syms_mach_parser.h:104
struct SYMS_MachBindNode * next
Definition syms_mach_parser.h:105
Definition syms_mach_parser.h:92
SYMS_U64 segment_offset
Definition syms_mach_parser.h:94
SYMS_U64 dylib
Definition syms_mach_parser.h:95
SYMS_String8 symbol_name
Definition syms_mach_parser.h:96
SYMS_U8 flags
Definition syms_mach_parser.h:97
SYMS_MachBindType type
Definition syms_mach_parser.h:98
SYMS_S64 addend
Definition syms_mach_parser.h:99
SYMS_U32 segment
Definition syms_mach_parser.h:93
Definition syms_meta_mach.h:434
Definition syms_meta_mach.h:429
SYMS_MachDylib dylib
Definition syms_meta_mach.h:432
Definition syms_mach_parser.h:82
Definition syms_mach_parser.h:76
SYMS_MachParsedDylib data
Definition syms_mach_parser.h:78
struct SYMS_MachDylibNode * next
Definition syms_mach_parser.h:77
Definition syms_meta_mach.h:423
SYMS_MachLCStr name
Definition syms_meta_mach.h:424
Definition syms_mach_parser.h:144
SYMS_MachExport * node
Definition syms_mach_parser.h:147
SYMS_U8 child_idx
Definition syms_mach_parser.h:146
struct SYMS_MachExportFrame * next
Definition syms_mach_parser.h:145
Definition syms_mach_parser.h:119
SYMS_U64 dylib_ordinal
Definition syms_mach_parser.h:130
SYMS_B32 is_export_info
Definition syms_mach_parser.h:123
SYMS_U8 child_count
Definition syms_mach_parser.h:121
SYMS_U64 address
Definition syms_mach_parser.h:127
SYMS_String8 name
Definition syms_mach_parser.h:125
SYMS_U64 flags
Definition syms_mach_parser.h:126
SYMS_String8 import_name
Definition syms_mach_parser.h:131
SYMS_U64 resolver
Definition syms_mach_parser.h:134
struct SYMS_MachExport ** children
Definition syms_mach_parser.h:120
Definition syms_meta_mach.h:456
Definition syms_mach_parser.h:9
SYMS_FileFormat format
Definition syms_mach_parser.h:10
SYMS_B32 is_swapped
Definition syms_mach_parser.h:11
SYMS_B32 is_fat
Definition syms_mach_parser.h:12
SYMS_U32 offset
Definition syms_meta_mach.h:416
Definition syms_meta_mach.h:448
Definition syms_mach_parser.h:69
SYMS_U64Range name
Definition syms_mach_parser.h:71
SYMS_MachDylib header
Definition syms_mach_parser.h:70
Definition syms_meta_mach.h:506
Definition syms_meta_mach.h:519
Definition syms_mach_parser.h:26
Definition syms_meta_mach.h:482
Definition syms_meta_mach.h:494
SYMS_U64 vmaddr
Definition syms_meta_mach.h:497
Definition syms_mach_parser.h:21
Definition syms_meta_mach.h:533
Definition syms_debug_info.h:21
SYMS_U64 count
Definition syms_debug_info.h:23
Definition syms_debug_info.h:15
SYMS_U64Range vrange
Definition syms_debug_info.h:17
SYMS_String8 name
Definition syms_debug_info.h:16
SYMS_U64Range frange
Definition syms_debug_info.h:18
Definition syms_base.h:306
Definition syms_base.h:296
SYMS_U8 * str
Definition syms_base.h:297
SYMS_U64 size
Definition syms_base.h:298
Definition syms_base.h:325
Definition syms_base.h:264
SYMS_API SYMS_U64 syms_u64_range_size(SYMS_U64Range range)
Definition syms_base.c:31
SYMS_API SYMS_String8 syms_string_list_join(SYMS_Arena *arena, SYMS_String8List *list, SYMS_StringJoin *join_ptr)
Definition syms_base.c:315
SYMS_API SYMS_String8 syms_str8_range(SYMS_U8 *first, SYMS_U8 *opl)
Definition syms_base.c:184
SYMS_API SYMS_ArenaTemp syms_get_scratch(SYMS_Arena **conflicts, SYMS_U64 conflict_count)
Definition syms_base.c:694
SYMS_API SYMS_U64Range syms_make_u64_range(SYMS_U64 min, SYMS_U64 max)
Definition syms_base.c:18
SYMS_API SYMS_U64 syms_based_range_read_sleb128(void *base, SYMS_U64Range range, SYMS_U64 offset, SYMS_S64 *out_value)
Definition syms_base.c:792
SYMS_API SYMS_String8 syms_based_range_read_string(void *base, SYMS_U64Range range, SYMS_U64 offset)
Definition syms_base.c:823
SYMS_API void syms_arena_temp_end(SYMS_ArenaTemp temp)
Definition syms_base.c:689
SYMS_API SYMS_U64Range syms_make_u64_inrange(SYMS_U64Range range, SYMS_U64 offset, SYMS_U64 size)
Definition syms_base.c:24
SYMS_API SYMS_String8 syms_str8(SYMS_U8 *str, SYMS_U64 size)
Definition syms_base.c:169
SYMS_API void syms_string_list_push_front(SYMS_Arena *arena, SYMS_String8List *list, SYMS_String8 string)
Definition syms_base.c:288
SYMS_API SYMS_U64 syms_based_range_read_uleb128(void *base, SYMS_U64Range range, SYMS_U64 offset, SYMS_U64 *out_value)
Definition syms_base.c:765
SYMS_API SYMS_String8 syms_push_string_copy(SYMS_Arena *arena, SYMS_String8 string)
Definition syms_base.c:353
SYMS_API SYMS_ArenaTemp syms_arena_temp_begin(SYMS_Arena *arena)
Definition syms_base.c:682
#define syms_true
Definition syms_base.h:105
#define SYMS_StackPush(f, n)
Definition syms_base.h:227
#define syms_based_range_read_struct(b, r, o, p)
Definition syms_base.h:593
#define syms_push_array(a, T, c)
Definition syms_base.h:561
#define syms_memzero_struct(s)
Definition syms_base.h:161
#define SYMS_AlignPow2(a, b)
Definition syms_base.h:187
#define syms_false
Definition syms_base.h:104
#define SYMS_API
Definition syms_base.h:29
#define SYMS_ARRAY_SIZE(x)
Definition syms_base.h:144
SYMS_S32 SYMS_B32
Definition syms_base.h:99
#define SYMS_StackPop(f)
Definition syms_base.h:228
#define syms_push_array_zero(a, T, c)
Definition syms_base.h:564
#define SYMS_ASSERT_PARANOID(x)
Definition syms_base.h:132
#define syms_str8_lit(s)
Definition syms_base.h:483
#define SYMS_QueuePush(f, l, n)
Definition syms_base.h:220
#define syms_release_scratch
Definition syms_base.h:567
#define syms_bswap_in_place(type, ptr)
Definition syms_base.h:463
uint32_t SYMS_U32
Definition syms_crt_overrides.h:38
uint64_t SYMS_U64
Definition syms_crt_overrides.h:39
#define syms_memmove
Definition syms_crt_overrides.h:65
uint8_t SYMS_U8
Definition syms_crt_overrides.h:36
SYMS_READ_ONLY SYMS_GLOBAL SYMS_FileFormat syms_format_nil
Definition syms_debug_info.h:398
#define SYMS_Arena
Definition syms_default_arena.h:61
SYMS_API void syms_mach_header64_from_header32(SYMS_MachHeader64 *dst, SYMS_MachHeader32 *header32)
Definition syms_mach.c:15
SYMS_API void syms_mach_segment64_from_segment32(SYMS_MachSegmentCommand64 *dst, SYMS_MachSegmentCommand32 *seg32)
Definition syms_mach.c:36
SYMS_API void syms_mach_section64_from_section32(SYMS_MachSection64 *dst, SYMS_MachSection32 *sect32)
Definition syms_mach.c:51
#define SYMS_MACH_FAT_MAGIC
Definition syms_mach.h:35
#define SYMS_MACH_FAT_CIGAM
Definition syms_mach.h:36
#define SYMS_MACH_MAGIC_64
Definition syms_mach.h:32
#define SYMS_MACH_CIGAM_32
Definition syms_mach.h:30
#define SYMS_MACH_MAGIC_32
Definition syms_mach.h:29
#define SYMS_MACH_CIGAM_64
Definition syms_mach.h:33
SYMS_API SYMS_U64 syms_mach_default_vbase_from_bin(SYMS_MachBinAccel *bin)
Definition syms_mach_parser.c:448
SYMS_API void syms_mach_dylib_list_push(SYMS_Arena *arena, SYMS_MachDylibList *list, SYMS_MachDylib *dylib, SYMS_U64Range name)
Definition syms_mach_parser.c:465
SYMS_API SYMS_MachBindList syms_mach_binds_from_base_range(SYMS_Arena *arena, void *base, SYMS_U64Range range, SYMS_U32 address_size, SYMS_MachBindTable bind_type)
Definition syms_mach_parser.c:477
SYMS_API SYMS_Arch syms_mach_arch_from_bin(SYMS_MachBinAccel *bin)
Definition syms_mach_parser.c:376
SYMS_API SYMS_MachFileAccel * syms_mach_file_accel_from_data(SYMS_Arena *arena, SYMS_String8 data)
Definition syms_mach_parser.c:264
SYMS_API SYMS_SecInfoArray syms_mach_sec_info_array_from_bin(SYMS_Arena *arena, SYMS_String8 data, SYMS_MachBinAccel *bin)
Definition syms_mach_parser.c:423
SYMS_API SYMS_BinInfoArray syms_mach_bin_info_array_from_bin_list(SYMS_Arena *arena, SYMS_MachBinListAccel *bin_list)
Definition syms_mach_parser.c:386
SYMS_API SYMS_MachBinAccel * syms_mach_bin_accel_from_bin_list_number(SYMS_Arena *arena, SYMS_String8 data, SYMS_MachBinListAccel *bin_list, SYMS_U64 n)
Definition syms_mach_parser.c:407
SYMS_API SYMS_MachExport * syms_build_mach_export_trie(SYMS_Arena *arena, void *base, SYMS_U64Range range)
Definition syms_mach_parser.c:667
SYMS_API SYMS_B32 syms_mach_file_is_bin_list(SYMS_MachFileAccel *file_accel)
Definition syms_mach_parser.c:329
SYMS_API SYMS_ExportArray syms_mach_exports_from_bin(SYMS_Arena *arena, SYMS_String8 data, SYMS_MachBinAccel *bin)
Definition syms_mach_parser.c:673
SYMS_API SYMS_MachBinAccel * syms_mach_bin_accel_from_file(SYMS_Arena *arena, SYMS_String8 data, SYMS_MachFileAccel *file)
Definition syms_mach_parser.c:319
SYMS_API SYMS_B32 syms_mach_file_is_bin(SYMS_MachFileAccel *file)
Definition syms_mach_parser.c:313
SYMS_API SYMS_MachBinAccel * syms_mach_bin_from_base_range(SYMS_Arena *arena, void *base, SYMS_U64Range range)
Definition syms_mach_parser.c:10
SYMS_API SYMS_MachBinListAccel * syms_mach_bin_list_accel_from_file(SYMS_Arena *arena, SYMS_String8 data, SYMS_MachFileAccel *file)
Definition syms_mach_parser.c:335
SYMS_API SYMS_ImportArray syms_mach_imports_from_bin(SYMS_Arena *arena, SYMS_String8 data, SYMS_MachBinAccel *bin)
Definition syms_mach_parser.c:575
@ SYMS_MachBindTable_REGULAR
Definition syms_mach_parser.h:33
@ SYMS_MachBindTable_LAZY
Definition syms_mach_parser.h:34
@ SYMS_MachBindTable_COUNT
Definition syms_mach_parser.h:36
@ SYMS_MachBindTable_WEAK
Definition syms_mach_parser.h:35
SYMS_U32 SYMS_MachBindTable
Definition syms_mach_parser.h:38