This page hosts a formal specification of Executable and Linkable Format using Kaitai Struct. This specification can be automatically translated into a variety of programming languages to get a parsing library.
digraph {
rankdir=LR;
node [shape=plaintext];
subgraph cluster__elf {
label="Elf";
graph[style=dotted];
elf__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="magic_pos">0</TD><TD PORT="magic_size">4</TD><TD>7F 45 4C 46</TD><TD PORT="magic_type">magic</TD></TR>
<TR><TD PORT="bits_pos">4</TD><TD PORT="bits_size">1</TD><TD>u1→Bits</TD><TD PORT="bits_type">bits</TD></TR>
<TR><TD PORT="endian_pos">5</TD><TD PORT="endian_size">1</TD><TD>u1→Endian</TD><TD PORT="endian_type">endian</TD></TR>
<TR><TD PORT="ei_version_pos">6</TD><TD PORT="ei_version_size">1</TD><TD>u1</TD><TD PORT="ei_version_type">ei_version</TD></TR>
<TR><TD COLSPAN="4" PORT="ei_version__valid">must be equal to 1</TD></TR>
<TR><TD PORT="abi_pos">7</TD><TD PORT="abi_size">1</TD><TD>u1→OsAbi</TD><TD PORT="abi_type">abi</TD></TR>
<TR><TD PORT="abi_version_pos">8</TD><TD PORT="abi_version_size">1</TD><TD>u1</TD><TD PORT="abi_version_type">abi_version</TD></TR>
<TR><TD PORT="pad_pos">9</TD><TD PORT="pad_size">7</TD><TD>00 00 00 00 00 00 00</TD><TD PORT="pad_type">pad</TD></TR>
<TR><TD PORT="header_pos">16</TD><TD PORT="header_size">...</TD><TD>EndianElf</TD><TD PORT="header_type">header</TD></TR>
</TABLE>>];
elf__inst__sh_idx_hi_os [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>sh_idx_hi_os</TD><TD>65343</TD></TR>
</TABLE>>];
elf__inst__sh_idx_hi_proc [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>sh_idx_hi_proc</TD><TD>65311</TD></TR>
</TABLE>>];
elf__inst__sh_idx_hi_reserved [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>sh_idx_hi_reserved</TD><TD>65535</TD></TR>
</TABLE>>];
elf__inst__sh_idx_lo_os [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>sh_idx_lo_os</TD><TD>65312</TD></TR>
</TABLE>>];
elf__inst__sh_idx_lo_proc [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>sh_idx_lo_proc</TD><TD>65280</TD></TR>
</TABLE>>];
elf__inst__sh_idx_lo_reserved [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>sh_idx_lo_reserved</TD><TD>65280</TD></TR>
</TABLE>>];
subgraph cluster__dt_flag_1_values {
label="Elf::DtFlag1Values";
graph[style=dotted];
dt_flag_1_values__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
</TABLE>>];
dt_flag_1_values__inst__conf_alt [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>conf_alt</TD><TD>value & 8192 != 0</TD></TR>
</TABLE>>];
dt_flag_1_values__inst__direct [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>direct</TD><TD>value & 256 != 0</TD></TR>
</TABLE>>];
dt_flag_1_values__inst__disp_rel_dne [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>disp_rel_dne</TD><TD>value & 32768 != 0</TD></TR>
</TABLE>>];
dt_flag_1_values__inst__disp_rel_pnd [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>disp_rel_pnd</TD><TD>value & 65536 != 0</TD></TR>
</TABLE>>];
dt_flag_1_values__inst__edited [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>edited</TD><TD>value & 2097152 != 0</TD></TR>
</TABLE>>];
dt_flag_1_values__inst__end_filtee [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>end_filtee</TD><TD>value & 16384 != 0</TD></TR>
</TABLE>>];
dt_flag_1_values__inst__glob_audit [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>glob_audit</TD><TD>value & 16777216 != 0</TD></TR>
</TABLE>>];
dt_flag_1_values__inst__group [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>group</TD><TD>value & 4 != 0</TD></TR>
</TABLE>>];
dt_flag_1_values__inst__ign_mul_def [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>ign_mul_def</TD><TD>value & 262144 != 0</TD></TR>
</TABLE>>];
dt_flag_1_values__inst__init_first [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>init_first</TD><TD>value & 32 != 0</TD></TR>
</TABLE>>];
dt_flag_1_values__inst__interpose [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>interpose</TD><TD>value & 1024 != 0</TD></TR>
</TABLE>>];
dt_flag_1_values__inst__kmod [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>kmod</TD><TD>value & 268435456 != 0</TD></TR>
</TABLE>>];
dt_flag_1_values__inst__load_fltr [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>load_fltr</TD><TD>value & 16 != 0</TD></TR>
</TABLE>>];
dt_flag_1_values__inst__no_common [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>no_common</TD><TD>value & 1073741824 != 0</TD></TR>
</TABLE>>];
dt_flag_1_values__inst__no_def_lib [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>no_def_lib</TD><TD>value & 2048 != 0</TD></TR>
</TABLE>>];
dt_flag_1_values__inst__no_delete [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>no_delete</TD><TD>value & 8 != 0</TD></TR>
</TABLE>>];
dt_flag_1_values__inst__no_direct [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>no_direct</TD><TD>value & 131072 != 0</TD></TR>
</TABLE>>];
dt_flag_1_values__inst__no_dump [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>no_dump</TD><TD>value & 4096 != 0</TD></TR>
</TABLE>>];
dt_flag_1_values__inst__no_hdr [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>no_hdr</TD><TD>value & 1048576 != 0</TD></TR>
</TABLE>>];
dt_flag_1_values__inst__no_ksyms [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>no_ksyms</TD><TD>value & 524288 != 0</TD></TR>
</TABLE>>];
dt_flag_1_values__inst__no_open [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>no_open</TD><TD>value & 64 != 0</TD></TR>
</TABLE>>];
dt_flag_1_values__inst__no_reloc [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>no_reloc</TD><TD>value & 4194304 != 0</TD></TR>
</TABLE>>];
dt_flag_1_values__inst__now [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>now</TD><TD>value & 1 != 0</TD></TR>
</TABLE>>];
dt_flag_1_values__inst__origin [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>origin</TD><TD>value & 128 != 0</TD></TR>
</TABLE>>];
dt_flag_1_values__inst__pie [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>pie</TD><TD>value & 134217728 != 0</TD></TR>
</TABLE>>];
dt_flag_1_values__inst__rtld_global [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>rtld_global</TD><TD>value & 2 != 0</TD></TR>
</TABLE>>];
dt_flag_1_values__inst__singleton [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>singleton</TD><TD>value & 33554432 != 0</TD></TR>
</TABLE>>];
dt_flag_1_values__inst__stub [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>stub</TD><TD>value & 67108864 != 0</TD></TR>
</TABLE>>];
dt_flag_1_values__inst__sym_intpose [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>sym_intpose</TD><TD>value & 8388608 != 0</TD></TR>
</TABLE>>];
dt_flag_1_values__inst__trans [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>trans</TD><TD>value & 512 != 0</TD></TR>
</TABLE>>];
dt_flag_1_values__inst__weak_filter [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>weak_filter</TD><TD>value & 536870912 != 0</TD></TR>
</TABLE>>];
}
subgraph cluster__dt_flag_values {
label="Elf::DtFlagValues";
graph[style=dotted];
dt_flag_values__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
</TABLE>>];
dt_flag_values__inst__bind_now [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>bind_now</TD><TD>value & 8 != 0</TD></TR>
</TABLE>>];
dt_flag_values__inst__origin [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>origin</TD><TD>value & 1 != 0</TD></TR>
</TABLE>>];
dt_flag_values__inst__static_tls [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>static_tls</TD><TD>value & 16 != 0</TD></TR>
</TABLE>>];
dt_flag_values__inst__symbolic [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>symbolic</TD><TD>value & 2 != 0</TD></TR>
</TABLE>>];
dt_flag_values__inst__textrel [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>textrel</TD><TD>value & 4 != 0</TD></TR>
</TABLE>>];
}
subgraph cluster__endian_elf {
label="Elf::EndianElf";
graph[style=dotted];
endian_elf__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="e_type_pos">0</TD><TD PORT="e_type_size">2</TD><TD>u2→ObjType</TD><TD PORT="e_type_type">e_type</TD></TR>
<TR><TD PORT="machine_pos">2</TD><TD PORT="machine_size">2</TD><TD>u2→Machine</TD><TD PORT="machine_type">machine</TD></TR>
<TR><TD COLSPAN="4" PORT="machine__valid">must be defined in the enum</TD></TR>
<TR><TD PORT="e_version_pos">4</TD><TD PORT="e_version_size">4</TD><TD>u4</TD><TD PORT="e_version_type">e_version</TD></TR>
<TR><TD PORT="entry_point_pos">8</TD><TD PORT="entry_point_size">...</TD><TD>switch (_root.bits)</TD><TD PORT="entry_point_type">entry_point</TD></TR>
<TR><TD PORT="ofs_program_headers_pos">...</TD><TD PORT="ofs_program_headers_size">...</TD><TD>switch (_root.bits)</TD><TD PORT="ofs_program_headers_type">ofs_program_headers</TD></TR>
<TR><TD PORT="ofs_section_headers_pos">...</TD><TD PORT="ofs_section_headers_size">...</TD><TD>switch (_root.bits)</TD><TD PORT="ofs_section_headers_type">ofs_section_headers</TD></TR>
<TR><TD PORT="flags_pos">...</TD><TD PORT="flags_size">4</TD><TD></TD><TD PORT="flags_type">flags</TD></TR>
<TR><TD PORT="e_ehsize_pos">...</TD><TD PORT="e_ehsize_size">2</TD><TD>u2</TD><TD PORT="e_ehsize_type">e_ehsize</TD></TR>
<TR><TD PORT="program_header_size_pos">...</TD><TD PORT="program_header_size_size">2</TD><TD>u2</TD><TD PORT="program_header_size_type">program_header_size</TD></TR>
<TR><TD PORT="num_program_headers_pos">...</TD><TD PORT="num_program_headers_size">2</TD><TD>u2</TD><TD PORT="num_program_headers_type">num_program_headers</TD></TR>
<TR><TD PORT="section_header_size_pos">...</TD><TD PORT="section_header_size_size">2</TD><TD>u2</TD><TD PORT="section_header_size_type">section_header_size</TD></TR>
<TR><TD PORT="num_section_headers_pos">...</TD><TD PORT="num_section_headers_size">2</TD><TD>u2</TD><TD PORT="num_section_headers_type">num_section_headers</TD></TR>
<TR><TD PORT="section_names_idx_pos">...</TD><TD PORT="section_names_idx_size">2</TD><TD>u2</TD><TD PORT="section_names_idx_type">section_names_idx</TD></TR>
</TABLE>>];
endian_elf__inst__program_headers [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="program_headers_pos">ofs_program_headers</TD><TD PORT="program_headers_size">program_header_size</TD><TD>ProgramHeader</TD><TD PORT="program_headers_type">program_headers</TD></TR>
<TR><TD COLSPAN="4" PORT="program_headers__repeat">repeat num_program_headers times</TD></TR>
</TABLE>>];
endian_elf__inst__section_headers [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="section_headers_pos">ofs_section_headers</TD><TD PORT="section_headers_size">section_header_size</TD><TD>SectionHeader</TD><TD PORT="section_headers_type">section_headers</TD></TR>
<TR><TD COLSPAN="4" PORT="section_headers__repeat">repeat num_section_headers times</TD></TR>
</TABLE>>];
endian_elf__inst__section_names [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="section_names_pos">section_headers[section_names_idx].ofs_body</TD><TD PORT="section_names_size">section_headers[section_names_idx].len_body</TD><TD>StringsStruct</TD><TD PORT="section_names_type">section_names</TD></TR>
<TR><TD COLSPAN="4" PORT="section_names__if">if ((section_names_idx != (Elf::I__SECTION_HEADER_IDX_SPECIAL[:section_header_idx_special_undefined] || :section_header_idx_special_undefined)) && (section_names_idx < _root.header.num_section_headers)) </TD></TR>
</TABLE>>];
endian_elf__seq_entry_point_switch [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#F0F2E4">case</TD><TD BGCOLOR="#F0F2E4">type</TD></TR>
</TABLE>>];
endian_elf__seq_ofs_program_headers_switch [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#F0F2E4">case</TD><TD BGCOLOR="#F0F2E4">type</TD></TR>
</TABLE>>];
endian_elf__seq_ofs_section_headers_switch [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#F0F2E4">case</TD><TD BGCOLOR="#F0F2E4">type</TD></TR>
</TABLE>>];
subgraph cluster__dynsym_section {
label="Elf::EndianElf::DynsymSection";
graph[style=dotted];
dynsym_section__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="entries_pos">0</TD><TD PORT="entries_size">32</TD><TD>DynsymSectionEntry</TD><TD PORT="entries_type">entries</TD></TR>
<TR><TD COLSPAN="4" PORT="entries__repeat">repeat to end of stream</TD></TR>
</TABLE>>];
dynsym_section__inst__is_string_table_linked [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>is_string_table_linked</TD><TD>_parent.linked_section.type == :sh_type_strtab</TD></TR>
</TABLE>>];
}
subgraph cluster__dynsym_section_entry {
label="Elf::EndianElf::DynsymSectionEntry";
graph[style=dotted];
dynsym_section_entry__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="ofs_name_pos">0</TD><TD PORT="ofs_name_size">4</TD><TD>u4</TD><TD PORT="ofs_name_type">ofs_name</TD></TR>
<TR><TD PORT="value_b32_pos">4</TD><TD PORT="value_b32_size">4</TD><TD>u4</TD><TD PORT="value_b32_type">value_b32</TD></TR>
<TR><TD COLSPAN="4" PORT="value_b32__if">if _root.bits == :bits_b32</TD></TR>
<TR><TD PORT="size_b32_pos">8</TD><TD PORT="size_b32_size">4</TD><TD>u4</TD><TD PORT="size_b32_type">size_b32</TD></TR>
<TR><TD COLSPAN="4" PORT="size_b32__if">if _root.bits == :bits_b32</TD></TR>
<TR><TD PORT="bind_pos">12</TD><TD PORT="bind_size">4b</TD><TD>b4be→SymbolBinding</TD><TD PORT="bind_type">bind</TD></TR>
<TR><TD PORT="type_pos">12:4</TD><TD PORT="type_size">4b</TD><TD>b4be→SymbolType</TD><TD PORT="type_type">type</TD></TR>
<TR><TD PORT="other_pos">13</TD><TD PORT="other_size">1</TD><TD>u1</TD><TD PORT="other_type">other</TD></TR>
<TR><TD PORT="sh_idx_pos">14</TD><TD PORT="sh_idx_size">2</TD><TD>u2</TD><TD PORT="sh_idx_type">sh_idx</TD></TR>
<TR><TD PORT="value_b64_pos">16</TD><TD PORT="value_b64_size">8</TD><TD>u8</TD><TD PORT="value_b64_type">value_b64</TD></TR>
<TR><TD COLSPAN="4" PORT="value_b64__if">if _root.bits == :bits_b64</TD></TR>
<TR><TD PORT="size_b64_pos">24</TD><TD PORT="size_b64_size">8</TD><TD>u8</TD><TD PORT="size_b64_type">size_b64</TD></TR>
<TR><TD COLSPAN="4" PORT="size_b64__if">if _root.bits == :bits_b64</TD></TR>
</TABLE>>];
dynsym_section_entry__inst__is_sh_idx_os [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>is_sh_idx_os</TD><TD> ((sh_idx >= _root.sh_idx_lo_os) && (sh_idx <= _root.sh_idx_hi_os)) </TD></TR>
</TABLE>>];
dynsym_section_entry__inst__is_sh_idx_proc [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>is_sh_idx_proc</TD><TD> ((sh_idx >= _root.sh_idx_lo_proc) && (sh_idx <= _root.sh_idx_hi_proc)) </TD></TR>
</TABLE>>];
dynsym_section_entry__inst__is_sh_idx_reserved [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>is_sh_idx_reserved</TD><TD> ((sh_idx >= _root.sh_idx_lo_reserved) && (sh_idx <= _root.sh_idx_hi_reserved)) </TD></TR>
</TABLE>>];
dynsym_section_entry__inst__name [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="name_pos">ofs_name</TD><TD PORT="name_size">...</TD><TD>str(term=0, UTF-8)</TD><TD PORT="name_type">name</TD></TR>
<TR><TD COLSPAN="4" PORT="name__if">if ((ofs_name != 0) && (_parent.is_string_table_linked)) </TD></TR>
</TABLE>>];
dynsym_section_entry__inst__sh_idx_special [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>sh_idx_special</TD><TD>Kaitai::Struct::Stream::resolve_enum(Elf::SECTION_HEADER_IDX_SPECIAL, sh_idx)</TD></TR>
</TABLE>>];
dynsym_section_entry__inst__size [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>size</TD><TD>(_root.bits == :bits_b32 ? size_b32 : (_root.bits == :bits_b64 ? size_b64 : 0))</TD></TR>
</TABLE>>];
dynsym_section_entry__inst__value [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>value</TD><TD>(_root.bits == :bits_b32 ? value_b32 : (_root.bits == :bits_b64 ? value_b64 : 0))</TD></TR>
</TABLE>>];
dynsym_section_entry__inst__visibility [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>visibility</TD><TD>Kaitai::Struct::Stream::resolve_enum(Elf::SYMBOL_VISIBILITY, other & 7)</TD></TR>
</TABLE>>];
}
subgraph cluster__note_section {
label="Elf::EndianElf::NoteSection";
graph[style=dotted];
note_section__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="entries_pos">0</TD><TD PORT="entries_size">...</TD><TD>NoteSectionEntry</TD><TD PORT="entries_type">entries</TD></TR>
<TR><TD COLSPAN="4" PORT="entries__repeat">repeat to end of stream</TD></TR>
</TABLE>>];
}
subgraph cluster__note_section_entry {
label="Elf::EndianElf::NoteSectionEntry";
graph[style=dotted];
note_section_entry__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="len_name_pos">0</TD><TD PORT="len_name_size">4</TD><TD>u4</TD><TD PORT="len_name_type">len_name</TD></TR>
<TR><TD PORT="len_descriptor_pos">4</TD><TD PORT="len_descriptor_size">4</TD><TD>u4</TD><TD PORT="len_descriptor_type">len_descriptor</TD></TR>
<TR><TD PORT="type_pos">8</TD><TD PORT="type_size">4</TD><TD>u4</TD><TD PORT="type_type">type</TD></TR>
<TR><TD PORT="name_pos">12</TD><TD PORT="name_size">len_name</TD><TD></TD><TD PORT="name_type">name</TD></TR>
<TR><TD PORT="name_padding_pos">...</TD><TD PORT="name_padding_size">-(len_name) % 4</TD><TD></TD><TD PORT="name_padding_type">name_padding</TD></TR>
<TR><TD PORT="descriptor_pos">...</TD><TD PORT="descriptor_size">len_descriptor</TD><TD></TD><TD PORT="descriptor_type">descriptor</TD></TR>
<TR><TD PORT="descriptor_padding_pos">...</TD><TD PORT="descriptor_padding_size">-(len_descriptor) % 4</TD><TD></TD><TD PORT="descriptor_padding_type">descriptor_padding</TD></TR>
</TABLE>>];
}
subgraph cluster__ph_dynamic_section {
label="Elf::EndianElf::PhDynamicSection";
graph[style=dotted];
ph_dynamic_section__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="entries_pos">0</TD><TD PORT="entries_size">...</TD><TD>PhDynamicSectionEntry</TD><TD PORT="entries_type">entries</TD></TR>
<TR><TD COLSPAN="4" PORT="entries__repeat">repeat until _.tag_enum == :dynamic_array_tags_null</TD></TR>
</TABLE>>];
}
subgraph cluster__ph_dynamic_section_entry {
label="Elf::EndianElf::PhDynamicSectionEntry";
graph[style=dotted];
ph_dynamic_section_entry__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="tag_pos">0</TD><TD PORT="tag_size">...</TD><TD>switch (_root.bits)</TD><TD PORT="tag_type">tag</TD></TR>
<TR><TD PORT="value_or_ptr_pos">...</TD><TD PORT="value_or_ptr_size">...</TD><TD>switch (_root.bits)</TD><TD PORT="value_or_ptr_type">value_or_ptr</TD></TR>
</TABLE>>];
ph_dynamic_section_entry__inst__flag_1_values [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="flag_1_values_pos">...</TD><TD PORT="flag_1_values_size">0</TD><TD>DtFlag1Values</TD><TD PORT="flag_1_values_type">flag_1_values</TD></TR>
<TR><TD COLSPAN="4" PORT="flag_1_values__if">if tag_enum == :dynamic_array_tags_flags_1</TD></TR>
</TABLE>>];
ph_dynamic_section_entry__inst__flag_values [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="flag_values_pos">...</TD><TD PORT="flag_values_size">0</TD><TD>DtFlagValues</TD><TD PORT="flag_values_type">flag_values</TD></TR>
<TR><TD COLSPAN="4" PORT="flag_values__if">if tag_enum == :dynamic_array_tags_flags</TD></TR>
</TABLE>>];
ph_dynamic_section_entry__inst__is_value_str [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>is_value_str</TD><TD> ((value_or_ptr != 0) && ( ((tag_enum == :dynamic_array_tags_needed) || (tag_enum == :dynamic_array_tags_soname) || (tag_enum == :dynamic_array_tags_rpath) || (tag_enum == :dynamic_array_tags_runpath) || (tag_enum == :dynamic_array_tags_sunw_auxiliary) || (tag_enum == :dynamic_array_tags_sunw_filter) || (tag_enum == :dynamic_array_tags_auxiliary) || (tag_enum == :dynamic_array_tags_filter) || (tag_enum == :dynamic_array_tags_config) || (tag_enum == :dynamic_array_tags_depaudit) || (tag_enum == :dynamic_array_tags_audit)) )) </TD></TR>
</TABLE>>];
ph_dynamic_section_entry__inst__tag_enum [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>tag_enum</TD><TD>Kaitai::Struct::Stream::resolve_enum(Elf::DYNAMIC_ARRAY_TAGS, tag)</TD></TR>
</TABLE>>];
ph_dynamic_section_entry__seq_tag_switch [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#F0F2E4">case</TD><TD BGCOLOR="#F0F2E4">type</TD></TR>
</TABLE>>];
ph_dynamic_section_entry__seq_value_or_ptr_switch [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#F0F2E4">case</TD><TD BGCOLOR="#F0F2E4">type</TD></TR>
</TABLE>>];
}
subgraph cluster__program_header {
label="Elf::EndianElf::ProgramHeader";
graph[style=dotted];
program_header__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="type_pos">0</TD><TD PORT="type_size">4</TD><TD>u4→PhType</TD><TD PORT="type_type">type</TD></TR>
<TR><TD PORT="flags64_pos">4</TD><TD PORT="flags64_size">4</TD><TD>u4</TD><TD PORT="flags64_type">flags64</TD></TR>
<TR><TD COLSPAN="4" PORT="flags64__if">if _root.bits == :bits_b64</TD></TR>
<TR><TD PORT="ofs_body_pos">8</TD><TD PORT="ofs_body_size">...</TD><TD>switch (_root.bits)</TD><TD PORT="ofs_body_type">ofs_body</TD></TR>
<TR><TD PORT="virt_addr_pos">...</TD><TD PORT="virt_addr_size">...</TD><TD>switch (_root.bits)</TD><TD PORT="virt_addr_type">virt_addr</TD></TR>
<TR><TD PORT="phys_addr_pos">...</TD><TD PORT="phys_addr_size">...</TD><TD>switch (_root.bits)</TD><TD PORT="phys_addr_type">phys_addr</TD></TR>
<TR><TD PORT="len_body_pos">...</TD><TD PORT="len_body_size">...</TD><TD>switch (_root.bits)</TD><TD PORT="len_body_type">len_body</TD></TR>
<TR><TD PORT="memory_size_pos">...</TD><TD PORT="memory_size_size">...</TD><TD>switch (_root.bits)</TD><TD PORT="memory_size_type">memory_size</TD></TR>
<TR><TD PORT="flags32_pos">...</TD><TD PORT="flags32_size">4</TD><TD>u4</TD><TD PORT="flags32_type">flags32</TD></TR>
<TR><TD COLSPAN="4" PORT="flags32__if">if _root.bits == :bits_b32</TD></TR>
<TR><TD PORT="align_pos">...</TD><TD PORT="align_size">...</TD><TD>switch (_root.bits)</TD><TD PORT="align_type">align</TD></TR>
</TABLE>>];
program_header__inst__body [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="body_pos">ofs_body</TD><TD PORT="body_size">...</TD><TD>switch (type)</TD><TD PORT="body_type">body</TD></TR>
<TR><TD COLSPAN="4" PORT="body__if">if len_body != 0</TD></TR>
</TABLE>>];
program_header__inst__flags_obj [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="flags_obj_pos">...</TD><TD PORT="flags_obj_size">...</TD><TD>switch (_root.bits)</TD><TD PORT="flags_obj_type">flags_obj</TD></TR>
</TABLE>>];
program_header__seq_ofs_body_switch [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#F0F2E4">case</TD><TD BGCOLOR="#F0F2E4">type</TD></TR>
</TABLE>>];
program_header__seq_virt_addr_switch [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#F0F2E4">case</TD><TD BGCOLOR="#F0F2E4">type</TD></TR>
</TABLE>>];
program_header__seq_phys_addr_switch [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#F0F2E4">case</TD><TD BGCOLOR="#F0F2E4">type</TD></TR>
</TABLE>>];
program_header__seq_len_body_switch [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#F0F2E4">case</TD><TD BGCOLOR="#F0F2E4">type</TD></TR>
</TABLE>>];
program_header__seq_memory_size_switch [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#F0F2E4">case</TD><TD BGCOLOR="#F0F2E4">type</TD></TR>
</TABLE>>];
program_header__seq_align_switch [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#F0F2E4">case</TD><TD BGCOLOR="#F0F2E4">type</TD></TR>
</TABLE>>];
program_header__inst__body_body_switch [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#F0F2E4">case</TD><TD BGCOLOR="#F0F2E4">type</TD></TR>
<TR><TD>:ph_type_dynamic</TD><TD PORT="case0">PhDynamicSection</TD></TR>
<TR><TD>:ph_type_interp</TD><TD PORT="case1">PhInterpreter</TD></TR>
<TR><TD>:ph_type_note</TD><TD PORT="case2">NoteSection</TD></TR>
</TABLE>>];
program_header__inst__flags_obj_flags_obj_switch [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#F0F2E4">case</TD><TD BGCOLOR="#F0F2E4">type</TD></TR>
<TR><TD>:bits_b32</TD><TD PORT="case0">PhdrTypeFlags</TD></TR>
<TR><TD>:bits_b64</TD><TD PORT="case1">PhdrTypeFlags</TD></TR>
</TABLE>>];
subgraph cluster__ph_interpreter {
label="Elf::EndianElf::ProgramHeader::PhInterpreter";
graph[style=dotted];
ph_interpreter__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="path_name_pos">0</TD><TD PORT="path_name_size">...</TD><TD>str(term=0, ASCII)</TD><TD PORT="path_name_type">path_name</TD></TR>
</TABLE>>];
}
}
subgraph cluster__relocation_section {
label="Elf::EndianElf::RelocationSection";
graph[style=dotted];
relocation_section__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="entries_pos">0</TD><TD PORT="entries_size">...</TD><TD>RelocationSectionEntry</TD><TD PORT="entries_type">entries</TD></TR>
<TR><TD COLSPAN="4" PORT="entries__repeat">repeat to end of stream</TD></TR>
</TABLE>>];
}
subgraph cluster__relocation_section_entry {
label="Elf::EndianElf::RelocationSectionEntry";
graph[style=dotted];
relocation_section_entry__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="offset_pos">0</TD><TD PORT="offset_size">...</TD><TD>switch (_root.bits)</TD><TD PORT="offset_type">offset</TD></TR>
<TR><TD PORT="info_pos">...</TD><TD PORT="info_size">...</TD><TD>switch (_root.bits)</TD><TD PORT="info_type">info</TD></TR>
<TR><TD PORT="addend_pos">...</TD><TD PORT="addend_size">...</TD><TD>switch (_root.bits)</TD><TD PORT="addend_type">addend</TD></TR>
<TR><TD COLSPAN="4" PORT="addend__if">if _parent.has_addend</TD></TR>
</TABLE>>];
relocation_section_entry__seq_offset_switch [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#F0F2E4">case</TD><TD BGCOLOR="#F0F2E4">type</TD></TR>
</TABLE>>];
relocation_section_entry__seq_info_switch [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#F0F2E4">case</TD><TD BGCOLOR="#F0F2E4">type</TD></TR>
</TABLE>>];
relocation_section_entry__seq_addend_switch [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#F0F2E4">case</TD><TD BGCOLOR="#F0F2E4">type</TD></TR>
</TABLE>>];
}
subgraph cluster__section_header {
label="Elf::EndianElf::SectionHeader";
graph[style=dotted];
section_header__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="ofs_name_pos">0</TD><TD PORT="ofs_name_size">4</TD><TD>u4</TD><TD PORT="ofs_name_type">ofs_name</TD></TR>
<TR><TD PORT="type_pos">4</TD><TD PORT="type_size">4</TD><TD>u4→ShType</TD><TD PORT="type_type">type</TD></TR>
<TR><TD PORT="flags_pos">8</TD><TD PORT="flags_size">...</TD><TD>switch (_root.bits)</TD><TD PORT="flags_type">flags</TD></TR>
<TR><TD PORT="addr_pos">...</TD><TD PORT="addr_size">...</TD><TD>switch (_root.bits)</TD><TD PORT="addr_type">addr</TD></TR>
<TR><TD PORT="ofs_body_pos">...</TD><TD PORT="ofs_body_size">...</TD><TD>switch (_root.bits)</TD><TD PORT="ofs_body_type">ofs_body</TD></TR>
<TR><TD PORT="len_body_pos">...</TD><TD PORT="len_body_size">...</TD><TD>switch (_root.bits)</TD><TD PORT="len_body_type">len_body</TD></TR>
<TR><TD PORT="linked_section_idx_pos">...</TD><TD PORT="linked_section_idx_size">4</TD><TD>u4</TD><TD PORT="linked_section_idx_type">linked_section_idx</TD></TR>
<TR><TD PORT="info_pos">...</TD><TD PORT="info_size">4</TD><TD>u4</TD><TD PORT="info_type">info</TD></TR>
<TR><TD PORT="align_pos">...</TD><TD PORT="align_size">...</TD><TD>switch (_root.bits)</TD><TD PORT="align_type">align</TD></TR>
<TR><TD PORT="entry_size_pos">...</TD><TD PORT="entry_size_size">...</TD><TD>switch (_root.bits)</TD><TD PORT="entry_size_type">entry_size</TD></TR>
</TABLE>>];
section_header__inst__body [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="body_pos">ofs_body</TD><TD PORT="body_size">...</TD><TD>switch (type)</TD><TD PORT="body_type">body</TD></TR>
<TR><TD COLSPAN="4" PORT="body__if">if type != :sh_type_nobits</TD></TR>
</TABLE>>];
section_header__inst__flags_obj [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="flags_obj_pos">...</TD><TD PORT="flags_obj_size">0</TD><TD>SectionHeaderFlags</TD><TD PORT="flags_obj_type">flags_obj</TD></TR>
</TABLE>>];
section_header__inst__linked_section [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>linked_section</TD><TD>_root.header.section_headers[linked_section_idx]</TD></TR>
</TABLE>>];
section_header__inst__name [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="name_pos">ofs_name</TD><TD PORT="name_size">...</TD><TD>str(term=0, ASCII)</TD><TD PORT="name_type">name</TD></TR>
</TABLE>>];
section_header__seq_flags_switch [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#F0F2E4">case</TD><TD BGCOLOR="#F0F2E4">type</TD></TR>
</TABLE>>];
section_header__seq_addr_switch [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#F0F2E4">case</TD><TD BGCOLOR="#F0F2E4">type</TD></TR>
</TABLE>>];
section_header__seq_ofs_body_switch [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#F0F2E4">case</TD><TD BGCOLOR="#F0F2E4">type</TD></TR>
</TABLE>>];
section_header__seq_len_body_switch [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#F0F2E4">case</TD><TD BGCOLOR="#F0F2E4">type</TD></TR>
</TABLE>>];
section_header__seq_align_switch [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#F0F2E4">case</TD><TD BGCOLOR="#F0F2E4">type</TD></TR>
</TABLE>>];
section_header__seq_entry_size_switch [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#F0F2E4">case</TD><TD BGCOLOR="#F0F2E4">type</TD></TR>
</TABLE>>];
section_header__inst__body_body_switch [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#F0F2E4">case</TD><TD BGCOLOR="#F0F2E4">type</TD></TR>
<TR><TD>:sh_type_dynamic</TD><TD PORT="case0">ShDynamicSection</TD></TR>
<TR><TD>:sh_type_dynsym</TD><TD PORT="case1">DynsymSection</TD></TR>
<TR><TD>:sh_type_gnu_verdef</TD><TD PORT="case2">VerdefSection</TD></TR>
<TR><TD>:sh_type_gnu_verneed</TD><TD PORT="case3">VerneedSection</TD></TR>
<TR><TD>:sh_type_gnu_versym</TD><TD PORT="case4">VersymSection</TD></TR>
<TR><TD>:sh_type_note</TD><TD PORT="case5">NoteSection</TD></TR>
<TR><TD>:sh_type_rel</TD><TD PORT="case6">RelocationSection</TD></TR>
<TR><TD>:sh_type_rela</TD><TD PORT="case7">RelocationSection</TD></TR>
<TR><TD>:sh_type_strtab</TD><TD PORT="case8">StringsStruct</TD></TR>
<TR><TD>:sh_type_symtab</TD><TD PORT="case9">DynsymSection</TD></TR>
</TABLE>>];
}
subgraph cluster__sh_dynamic_section {
label="Elf::EndianElf::ShDynamicSection";
graph[style=dotted];
sh_dynamic_section__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="entries_pos">0</TD><TD PORT="entries_size">...</TD><TD>ShDynamicSectionEntry</TD><TD PORT="entries_type">entries</TD></TR>
<TR><TD COLSPAN="4" PORT="entries__repeat">repeat until _.tag_enum == :dynamic_array_tags_null</TD></TR>
</TABLE>>];
sh_dynamic_section__inst__is_string_table_linked [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>is_string_table_linked</TD><TD>_parent.linked_section.type == :sh_type_strtab</TD></TR>
</TABLE>>];
}
subgraph cluster__sh_dynamic_section_entry {
label="Elf::EndianElf::ShDynamicSectionEntry";
graph[style=dotted];
sh_dynamic_section_entry__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="tag_pos">0</TD><TD PORT="tag_size">...</TD><TD>switch (_root.bits)</TD><TD PORT="tag_type">tag</TD></TR>
<TR><TD PORT="value_or_ptr_pos">...</TD><TD PORT="value_or_ptr_size">...</TD><TD>switch (_root.bits)</TD><TD PORT="value_or_ptr_type">value_or_ptr</TD></TR>
</TABLE>>];
sh_dynamic_section_entry__inst__flag_1_values [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="flag_1_values_pos">...</TD><TD PORT="flag_1_values_size">0</TD><TD>DtFlag1Values</TD><TD PORT="flag_1_values_type">flag_1_values</TD></TR>
<TR><TD COLSPAN="4" PORT="flag_1_values__if">if tag_enum == :dynamic_array_tags_flags_1</TD></TR>
</TABLE>>];
sh_dynamic_section_entry__inst__flag_values [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="flag_values_pos">...</TD><TD PORT="flag_values_size">0</TD><TD>DtFlagValues</TD><TD PORT="flag_values_type">flag_values</TD></TR>
<TR><TD COLSPAN="4" PORT="flag_values__if">if tag_enum == :dynamic_array_tags_flags</TD></TR>
</TABLE>>];
sh_dynamic_section_entry__inst__is_value_str [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>is_value_str</TD><TD> ((value_or_ptr != 0) && ( ((tag_enum == :dynamic_array_tags_needed) || (tag_enum == :dynamic_array_tags_soname) || (tag_enum == :dynamic_array_tags_rpath) || (tag_enum == :dynamic_array_tags_runpath) || (tag_enum == :dynamic_array_tags_sunw_auxiliary) || (tag_enum == :dynamic_array_tags_sunw_filter) || (tag_enum == :dynamic_array_tags_auxiliary) || (tag_enum == :dynamic_array_tags_filter) || (tag_enum == :dynamic_array_tags_config) || (tag_enum == :dynamic_array_tags_depaudit) || (tag_enum == :dynamic_array_tags_audit)) )) </TD></TR>
</TABLE>>];
sh_dynamic_section_entry__inst__tag_enum [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>tag_enum</TD><TD>Kaitai::Struct::Stream::resolve_enum(Elf::DYNAMIC_ARRAY_TAGS, tag)</TD></TR>
</TABLE>>];
sh_dynamic_section_entry__inst__value_str [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="value_str_pos">value_or_ptr</TD><TD PORT="value_str_size">...</TD><TD>str(term=0, ASCII)</TD><TD PORT="value_str_type">value_str</TD></TR>
<TR><TD COLSPAN="4" PORT="value_str__if">if ((is_value_str) && (_parent.is_string_table_linked)) </TD></TR>
</TABLE>>];
sh_dynamic_section_entry__seq_tag_switch [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#F0F2E4">case</TD><TD BGCOLOR="#F0F2E4">type</TD></TR>
</TABLE>>];
sh_dynamic_section_entry__seq_value_or_ptr_switch [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#F0F2E4">case</TD><TD BGCOLOR="#F0F2E4">type</TD></TR>
</TABLE>>];
}
subgraph cluster__strings_struct {
label="Elf::EndianElf::StringsStruct";
graph[style=dotted];
strings_struct__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="entries_pos">0</TD><TD PORT="entries_size">...</TD><TD>str(term=0, UTF-8)</TD><TD PORT="entries_type">entries</TD></TR>
<TR><TD COLSPAN="4" PORT="entries__repeat">repeat to end of stream</TD></TR>
</TABLE>>];
}
subgraph cluster__verdaux_entry {
label="Elf::EndianElf::VerdauxEntry";
graph[style=dotted];
verdaux_entry__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="_unnamed0_pos">0</TD><TD PORT="_unnamed0_size">0</TD><TD></TD><TD PORT="_unnamed0_type">_unnamed0</TD></TR>
<TR><TD COLSPAN="4" PORT="_unnamed0__if">if ofs_start < 0</TD></TR>
<TR><TD PORT="ofs_name_pos">0</TD><TD PORT="ofs_name_size">4</TD><TD>u4</TD><TD PORT="ofs_name_type">ofs_name</TD></TR>
<TR><TD PORT="ofs_next_pos">4</TD><TD PORT="ofs_next_size">4</TD><TD>u4</TD><TD PORT="ofs_next_type">ofs_next</TD></TR>
<TR><TD COLSPAN="4" PORT="ofs_next__valid">must satisfy ((_ == 0) || (_ >= 8)) </TD></TR>
</TABLE>>];
verdaux_entry__inst__name [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="name_pos">ofs_name</TD><TD PORT="name_size">...</TD><TD>str(term=0, UTF-8)</TD><TD PORT="name_type">name</TD></TR>
<TR><TD COLSPAN="4" PORT="name__if">if _parent.is_string_table_linked</TD></TR>
</TABLE>>];
verdaux_entry__inst__next [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="next_pos">ofs_start + ofs_next</TD><TD PORT="next_size">8</TD><TD>VerdauxEntry</TD><TD PORT="next_type">next</TD></TR>
<TR><TD COLSPAN="4" PORT="next__if">if ofs_next != 0</TD></TR>
</TABLE>>];
verdaux_entry__inst__ofs_start [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>ofs_start</TD><TD>_io.pos</TD></TR>
</TABLE>>];
}
subgraph cluster__verdef_section {
label="Elf::EndianElf::VerdefSection";
graph[style=dotted];
verdef_section__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="first_entry_pos">0</TD><TD PORT="first_entry_size">20</TD><TD>VerdefSectionEntry</TD><TD PORT="first_entry_type">first_entry</TD></TR>
</TABLE>>];
verdef_section__inst__is_string_table_linked [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>is_string_table_linked</TD><TD>_parent.linked_section.type == :sh_type_strtab</TD></TR>
</TABLE>>];
verdef_section__inst__num_entries [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>num_entries</TD><TD>_parent.info</TD></TR>
</TABLE>>];
}
subgraph cluster__verdef_section_entry {
label="Elf::EndianElf::VerdefSectionEntry";
graph[style=dotted];
verdef_section_entry__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="_unnamed0_pos">0</TD><TD PORT="_unnamed0_size">0</TD><TD></TD><TD PORT="_unnamed0_type">_unnamed0</TD></TR>
<TR><TD COLSPAN="4" PORT="_unnamed0__if">if ofs_start < 0</TD></TR>
<TR><TD PORT="version_pos">0</TD><TD PORT="version_size">2</TD><TD>u2</TD><TD PORT="version_type">version</TD></TR>
<TR><TD COLSPAN="4" PORT="version__valid">must be equal to 1</TD></TR>
<TR><TD PORT="flags_pos">2</TD><TD PORT="flags_size">2</TD><TD>u2</TD><TD PORT="flags_type">flags</TD></TR>
<TR><TD PORT="version_index_pos">4</TD><TD PORT="version_index_size">2</TD><TD>u2</TD><TD PORT="version_index_type">version_index</TD></TR>
<TR><TD COLSPAN="4" PORT="version_index__valid">must satisfy _ & 32768 == 0</TD></TR>
<TR><TD PORT="num_aux_entries_pos">6</TD><TD PORT="num_aux_entries_size">2</TD><TD>u2</TD><TD PORT="num_aux_entries_type">num_aux_entries</TD></TR>
<TR><TD COLSPAN="4" PORT="num_aux_entries__valid">must be at least 1</TD></TR>
<TR><TD PORT="hash_pos">8</TD><TD PORT="hash_size">4</TD><TD>u4</TD><TD PORT="hash_type">hash</TD></TR>
<TR><TD PORT="ofs_first_aux_pos">12</TD><TD PORT="ofs_first_aux_size">4</TD><TD>u4</TD><TD PORT="ofs_first_aux_type">ofs_first_aux</TD></TR>
<TR><TD COLSPAN="4" PORT="ofs_first_aux__valid">must be at least 20</TD></TR>
<TR><TD PORT="ofs_next_pos">16</TD><TD PORT="ofs_next_size">4</TD><TD>u4</TD><TD PORT="ofs_next_type">ofs_next</TD></TR>
<TR><TD COLSPAN="4" PORT="ofs_next__valid">must satisfy ((_ == 0) || (_ >= 20)) </TD></TR>
</TABLE>>];
verdef_section_entry__inst__first_aux [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="first_aux_pos">ofs_start + ofs_first_aux</TD><TD PORT="first_aux_size">8</TD><TD>VerdauxEntry</TD><TD PORT="first_aux_type">first_aux</TD></TR>
</TABLE>>];
verdef_section_entry__inst__flags_obj [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="flags_obj_pos">...</TD><TD PORT="flags_obj_size">0</TD><TD>VersionFlags</TD><TD PORT="flags_obj_type">flags_obj</TD></TR>
</TABLE>>];
verdef_section_entry__inst__next [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="next_pos">ofs_start + ofs_next</TD><TD PORT="next_size">20</TD><TD>VerdefSectionEntry</TD><TD PORT="next_type">next</TD></TR>
<TR><TD COLSPAN="4" PORT="next__if">if ofs_next != 0</TD></TR>
</TABLE>>];
verdef_section_entry__inst__ofs_start [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>ofs_start</TD><TD>_io.pos</TD></TR>
</TABLE>>];
verdef_section_entry__inst__version_index_special [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>version_index_special</TD><TD>Kaitai::Struct::Stream::resolve_enum(Elf::VERSION_INDEX_SPECIAL, version_index)</TD></TR>
</TABLE>>];
}
subgraph cluster__vernaux_entry {
label="Elf::EndianElf::VernauxEntry";
graph[style=dotted];
vernaux_entry__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="_unnamed0_pos">0</TD><TD PORT="_unnamed0_size">0</TD><TD></TD><TD PORT="_unnamed0_type">_unnamed0</TD></TR>
<TR><TD COLSPAN="4" PORT="_unnamed0__if">if ofs_start < 0</TD></TR>
<TR><TD PORT="hash_pos">0</TD><TD PORT="hash_size">4</TD><TD>u4</TD><TD PORT="hash_type">hash</TD></TR>
<TR><TD PORT="flags_pos">4</TD><TD PORT="flags_size">2</TD><TD>u2</TD><TD PORT="flags_type">flags</TD></TR>
<TR><TD PORT="version_index_pos">6</TD><TD PORT="version_index_size">2</TD><TD>VersionIndex</TD><TD PORT="version_index_type">version_index</TD></TR>
<TR><TD PORT="ofs_name_pos">8</TD><TD PORT="ofs_name_size">4</TD><TD>u4</TD><TD PORT="ofs_name_type">ofs_name</TD></TR>
<TR><TD PORT="ofs_next_pos">12</TD><TD PORT="ofs_next_size">4</TD><TD>u4</TD><TD PORT="ofs_next_type">ofs_next</TD></TR>
<TR><TD COLSPAN="4" PORT="ofs_next__valid">must satisfy ((_ == 0) || (_ >= 16)) </TD></TR>
</TABLE>>];
vernaux_entry__inst__flags_obj [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="flags_obj_pos">...</TD><TD PORT="flags_obj_size">0</TD><TD>VersionFlags</TD><TD PORT="flags_obj_type">flags_obj</TD></TR>
</TABLE>>];
vernaux_entry__inst__name [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="name_pos">ofs_name</TD><TD PORT="name_size">...</TD><TD>str(term=0, UTF-8)</TD><TD PORT="name_type">name</TD></TR>
<TR><TD COLSPAN="4" PORT="name__if">if _parent.is_string_table_linked</TD></TR>
</TABLE>>];
vernaux_entry__inst__next [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="next_pos">ofs_start + ofs_next</TD><TD PORT="next_size">16</TD><TD>VernauxEntry</TD><TD PORT="next_type">next</TD></TR>
<TR><TD COLSPAN="4" PORT="next__if">if ofs_next != 0</TD></TR>
</TABLE>>];
vernaux_entry__inst__ofs_start [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>ofs_start</TD><TD>_io.pos</TD></TR>
</TABLE>>];
}
subgraph cluster__verneed_section {
label="Elf::EndianElf::VerneedSection";
graph[style=dotted];
verneed_section__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="first_entry_pos">0</TD><TD PORT="first_entry_size">16</TD><TD>VerneedSectionEntry</TD><TD PORT="first_entry_type">first_entry</TD></TR>
</TABLE>>];
verneed_section__inst__is_string_table_linked [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>is_string_table_linked</TD><TD>_parent.linked_section.type == :sh_type_strtab</TD></TR>
</TABLE>>];
verneed_section__inst__num_entries [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>num_entries</TD><TD>_parent.info</TD></TR>
</TABLE>>];
}
subgraph cluster__verneed_section_entry {
label="Elf::EndianElf::VerneedSectionEntry";
graph[style=dotted];
verneed_section_entry__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="_unnamed0_pos">0</TD><TD PORT="_unnamed0_size">0</TD><TD></TD><TD PORT="_unnamed0_type">_unnamed0</TD></TR>
<TR><TD COLSPAN="4" PORT="_unnamed0__if">if ofs_start < 0</TD></TR>
<TR><TD PORT="version_pos">0</TD><TD PORT="version_size">2</TD><TD>u2</TD><TD PORT="version_type">version</TD></TR>
<TR><TD COLSPAN="4" PORT="version__valid">must be equal to 1</TD></TR>
<TR><TD PORT="num_aux_entries_pos">2</TD><TD PORT="num_aux_entries_size">2</TD><TD>u2</TD><TD PORT="num_aux_entries_type">num_aux_entries</TD></TR>
<TR><TD COLSPAN="4" PORT="num_aux_entries__valid">must be at least 1</TD></TR>
<TR><TD PORT="ofs_file_name_pos">4</TD><TD PORT="ofs_file_name_size">4</TD><TD>u4</TD><TD PORT="ofs_file_name_type">ofs_file_name</TD></TR>
<TR><TD PORT="ofs_first_aux_pos">8</TD><TD PORT="ofs_first_aux_size">4</TD><TD>u4</TD><TD PORT="ofs_first_aux_type">ofs_first_aux</TD></TR>
<TR><TD COLSPAN="4" PORT="ofs_first_aux__valid">must be at least 16</TD></TR>
<TR><TD PORT="ofs_next_pos">12</TD><TD PORT="ofs_next_size">4</TD><TD>u4</TD><TD PORT="ofs_next_type">ofs_next</TD></TR>
<TR><TD COLSPAN="4" PORT="ofs_next__valid">must satisfy ((_ == 0) || (_ >= 16)) </TD></TR>
</TABLE>>];
verneed_section_entry__inst__file_name [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="file_name_pos">ofs_file_name</TD><TD PORT="file_name_size">...</TD><TD>str(term=0, UTF-8)</TD><TD PORT="file_name_type">file_name</TD></TR>
<TR><TD COLSPAN="4" PORT="file_name__if">if _parent.is_string_table_linked</TD></TR>
</TABLE>>];
verneed_section_entry__inst__first_aux [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="first_aux_pos">ofs_start + ofs_first_aux</TD><TD PORT="first_aux_size">16</TD><TD>VernauxEntry</TD><TD PORT="first_aux_type">first_aux</TD></TR>
</TABLE>>];
verneed_section_entry__inst__next [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="next_pos">ofs_start + ofs_next</TD><TD PORT="next_size">16</TD><TD>VerneedSectionEntry</TD><TD PORT="next_type">next</TD></TR>
<TR><TD COLSPAN="4" PORT="next__if">if ofs_next != 0</TD></TR>
</TABLE>>];
verneed_section_entry__inst__ofs_start [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>ofs_start</TD><TD>_io.pos</TD></TR>
</TABLE>>];
}
subgraph cluster__version_flags {
label="Elf::EndianElf::VersionFlags";
graph[style=dotted];
version_flags__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
</TABLE>>];
version_flags__inst__base [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>base</TD><TD>value & 1 != 0</TD></TR>
</TABLE>>];
version_flags__inst__info [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>info</TD><TD>value & 4 != 0</TD></TR>
</TABLE>>];
version_flags__inst__weak [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>weak</TD><TD>value & 2 != 0</TD></TR>
</TABLE>>];
}
subgraph cluster__version_index {
label="Elf::EndianElf::VersionIndex";
graph[style=dotted];
version_index__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="raw_pos">0</TD><TD PORT="raw_size">2</TD><TD>u2</TD><TD PORT="raw_type">raw</TD></TR>
</TABLE>>];
version_index__inst__is_hidden [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>is_hidden</TD><TD>raw & 32768 != 0</TD></TR>
</TABLE>>];
version_index__inst__value [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>value</TD><TD>raw & 32767</TD></TR>
</TABLE>>];
version_index__inst__version_index_special [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>version_index_special</TD><TD>Kaitai::Struct::Stream::resolve_enum(Elf::VERSION_INDEX_SPECIAL, raw)</TD></TR>
</TABLE>>];
}
subgraph cluster__versym_section {
label="Elf::EndianElf::VersymSection";
graph[style=dotted];
versym_section__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
<TR><TD PORT="entries_pos">0</TD><TD PORT="entries_size">2</TD><TD>VersionIndex</TD><TD PORT="entries_type">entries</TD></TR>
<TR><TD COLSPAN="4" PORT="entries__repeat">repeat to end of stream</TD></TR>
</TABLE>>];
}
}
subgraph cluster__phdr_type_flags {
label="Elf::PhdrTypeFlags";
graph[style=dotted];
phdr_type_flags__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
</TABLE>>];
phdr_type_flags__inst__execute [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>execute</TD><TD>value & 1 != 0</TD></TR>
</TABLE>>];
phdr_type_flags__inst__mask_proc [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>mask_proc</TD><TD>value & 4026531840 != 0</TD></TR>
</TABLE>>];
phdr_type_flags__inst__read [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>read</TD><TD>value & 4 != 0</TD></TR>
</TABLE>>];
phdr_type_flags__inst__write [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>write</TD><TD>value & 2 != 0</TD></TR>
</TABLE>>];
}
subgraph cluster__section_header_flags {
label="Elf::SectionHeaderFlags";
graph[style=dotted];
section_header_flags__seq [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">pos</TD><TD BGCOLOR="#E0FFE0">size</TD><TD BGCOLOR="#E0FFE0">type</TD><TD BGCOLOR="#E0FFE0">id</TD></TR>
</TABLE>>];
section_header_flags__inst__alloc [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>alloc</TD><TD>value & 2 != 0</TD></TR>
</TABLE>>];
section_header_flags__inst__compressed [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>compressed</TD><TD>value & 2048 != 0</TD></TR>
</TABLE>>];
section_header_flags__inst__exclude [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>exclude</TD><TD>value & 2147483648 != 0</TD></TR>
</TABLE>>];
section_header_flags__inst__exec_instr [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>exec_instr</TD><TD>value & 4 != 0</TD></TR>
</TABLE>>];
section_header_flags__inst__gnu_mbind [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>gnu_mbind</TD><TD>value & 16777216 != 0</TD></TR>
</TABLE>>];
section_header_flags__inst__group [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>group</TD><TD>value & 512 != 0</TD></TR>
</TABLE>>];
section_header_flags__inst__info_link [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>info_link</TD><TD>value & 64 != 0</TD></TR>
</TABLE>>];
section_header_flags__inst__link_order [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>link_order</TD><TD>value & 128 != 0</TD></TR>
</TABLE>>];
section_header_flags__inst__mask_os [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>mask_os</TD><TD>value & 267386880 != 0</TD></TR>
</TABLE>>];
section_header_flags__inst__mask_proc [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>mask_proc</TD><TD>value & 4026531840 != 0</TD></TR>
</TABLE>>];
section_header_flags__inst__merge [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>merge</TD><TD>value & 16 != 0</TD></TR>
</TABLE>>];
section_header_flags__inst__ordered [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>ordered</TD><TD>value & 1073741824 != 0</TD></TR>
</TABLE>>];
section_header_flags__inst__os_nonconforming [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>os_nonconforming</TD><TD>value & 256 != 0</TD></TR>
</TABLE>>];
section_header_flags__inst__retain [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>retain</TD><TD>value & 2097152 != 0</TD></TR>
</TABLE>>];
section_header_flags__inst__strings [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>strings</TD><TD>value & 32 != 0</TD></TR>
</TABLE>>];
section_header_flags__inst__tls [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>tls</TD><TD>value & 1024 != 0</TD></TR>
</TABLE>>];
section_header_flags__inst__write [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
<TR><TD>write</TD><TD>value & 1 != 0</TD></TR>
</TABLE>>];
}
}
elf__seq:header_type -> endian_elf__seq [style=bold];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__conf_alt [color="#404040"];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__direct [color="#404040"];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__disp_rel_dne [color="#404040"];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__disp_rel_pnd [color="#404040"];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__edited [color="#404040"];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__end_filtee [color="#404040"];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__glob_audit [color="#404040"];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__group [color="#404040"];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__ign_mul_def [color="#404040"];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__init_first [color="#404040"];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__interpose [color="#404040"];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__kmod [color="#404040"];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__load_fltr [color="#404040"];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__no_common [color="#404040"];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__no_def_lib [color="#404040"];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__no_delete [color="#404040"];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__no_direct [color="#404040"];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__no_dump [color="#404040"];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__no_hdr [color="#404040"];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__no_ksyms [color="#404040"];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__no_open [color="#404040"];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__no_reloc [color="#404040"];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__now [color="#404040"];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__origin [color="#404040"];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__pie [color="#404040"];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__rtld_global [color="#404040"];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__singleton [color="#404040"];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__stub [color="#404040"];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__sym_intpose [color="#404040"];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__trans [color="#404040"];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__weak_filter [color="#404040"];
dt_flag_values__params:value_type -> dt_flag_values__inst__bind_now [color="#404040"];
dt_flag_values__params:value_type -> dt_flag_values__inst__origin [color="#404040"];
dt_flag_values__params:value_type -> dt_flag_values__inst__static_tls [color="#404040"];
dt_flag_values__params:value_type -> dt_flag_values__inst__symbolic [color="#404040"];
dt_flag_values__params:value_type -> dt_flag_values__inst__textrel [color="#404040"];
endian_elf__seq:entry_point_type -> endian_elf__seq_entry_point_switch [style=bold];
elf__seq:bits_type -> endian_elf__seq:entry_point_type [color="#404040"];
endian_elf__seq:ofs_program_headers_type -> endian_elf__seq_ofs_program_headers_switch [style=bold];
elf__seq:bits_type -> endian_elf__seq:ofs_program_headers_type [color="#404040"];
endian_elf__seq:ofs_section_headers_type -> endian_elf__seq_ofs_section_headers_switch [style=bold];
elf__seq:bits_type -> endian_elf__seq:ofs_section_headers_type [color="#404040"];
endian_elf__seq:ofs_program_headers_type -> endian_elf__inst__program_headers:program_headers_pos [color="#404040"];
endian_elf__seq:program_header_size_type -> endian_elf__inst__program_headers:program_headers_size [color="#404040"];
endian_elf__inst__program_headers:program_headers_type -> program_header__seq [style=bold];
endian_elf__seq:num_program_headers_type -> endian_elf__inst__program_headers:program_headers__repeat [color="#404040"];
endian_elf__seq:ofs_section_headers_type -> endian_elf__inst__section_headers:section_headers_pos [color="#404040"];
endian_elf__seq:section_header_size_type -> endian_elf__inst__section_headers:section_headers_size [color="#404040"];
endian_elf__inst__section_headers:section_headers_type -> section_header__seq [style=bold];
endian_elf__seq:num_section_headers_type -> endian_elf__inst__section_headers:section_headers__repeat [color="#404040"];
section_header__seq:ofs_body_type -> endian_elf__inst__section_names:section_names_pos [color="#404040"];
section_header__seq:len_body_type -> endian_elf__inst__section_names:section_names_size [color="#404040"];
endian_elf__inst__section_names:section_names_type -> strings_struct__seq [style=bold];
endian_elf__seq:section_names_idx_type -> endian_elf__inst__section_names:section_names__if [color="#404040"];
endian_elf__seq:num_section_headers_type -> endian_elf__inst__section_names:section_names__if [color="#404040"];
dynsym_section__seq:entries_type -> dynsym_section_entry__seq [style=bold];
section_header__seq:type_type -> dynsym_section__inst__is_string_table_linked [color="#404040"];
elf__seq:bits_type -> dynsym_section_entry__seq:value_b32__if [color="#404040"];
elf__seq:bits_type -> dynsym_section_entry__seq:size_b32__if [color="#404040"];
elf__seq:bits_type -> dynsym_section_entry__seq:value_b64__if [color="#404040"];
elf__seq:bits_type -> dynsym_section_entry__seq:size_b64__if [color="#404040"];
dynsym_section_entry__seq:sh_idx_type -> dynsym_section_entry__inst__is_sh_idx_os [color="#404040"];
elf__inst__sh_idx_lo_os:sh_idx_lo_os_type -> dynsym_section_entry__inst__is_sh_idx_os [color="#404040"];
elf__inst__sh_idx_hi_os:sh_idx_hi_os_type -> dynsym_section_entry__inst__is_sh_idx_os [color="#404040"];
dynsym_section_entry__seq:sh_idx_type -> dynsym_section_entry__inst__is_sh_idx_proc [color="#404040"];
elf__inst__sh_idx_lo_proc:sh_idx_lo_proc_type -> dynsym_section_entry__inst__is_sh_idx_proc [color="#404040"];
elf__inst__sh_idx_hi_proc:sh_idx_hi_proc_type -> dynsym_section_entry__inst__is_sh_idx_proc [color="#404040"];
dynsym_section_entry__seq:sh_idx_type -> dynsym_section_entry__inst__is_sh_idx_reserved [color="#404040"];
elf__inst__sh_idx_lo_reserved:sh_idx_lo_reserved_type -> dynsym_section_entry__inst__is_sh_idx_reserved [color="#404040"];
elf__inst__sh_idx_hi_reserved:sh_idx_hi_reserved_type -> dynsym_section_entry__inst__is_sh_idx_reserved [color="#404040"];
dynsym_section_entry__seq:ofs_name_type -> dynsym_section_entry__inst__name:name_pos [color="#404040"];
dynsym_section_entry__seq:ofs_name_type -> dynsym_section_entry__inst__name:name__if [color="#404040"];
dynsym_section__inst__is_string_table_linked:is_string_table_linked_type -> dynsym_section_entry__inst__name:name__if [color="#404040"];
dynsym_section_entry__seq:sh_idx_type -> dynsym_section_entry__inst__sh_idx_special [color="#404040"];
elf__seq:bits_type -> dynsym_section_entry__inst__size [color="#404040"];
dynsym_section_entry__seq:size_b32_type -> dynsym_section_entry__inst__size [color="#404040"];
dynsym_section_entry__seq:size_b64_type -> dynsym_section_entry__inst__size [color="#404040"];
elf__seq:bits_type -> dynsym_section_entry__inst__value [color="#404040"];
dynsym_section_entry__seq:value_b32_type -> dynsym_section_entry__inst__value [color="#404040"];
dynsym_section_entry__seq:value_b64_type -> dynsym_section_entry__inst__value [color="#404040"];
dynsym_section_entry__seq:other_type -> dynsym_section_entry__inst__visibility [color="#404040"];
note_section__seq:entries_type -> note_section_entry__seq [style=bold];
note_section_entry__seq:len_name_type -> note_section_entry__seq:name_size [color="#404040"];
note_section_entry__seq:len_name_type -> note_section_entry__seq:name_padding_size [color="#404040"];
note_section_entry__seq:len_descriptor_type -> note_section_entry__seq:descriptor_size [color="#404040"];
note_section_entry__seq:len_descriptor_type -> note_section_entry__seq:descriptor_padding_size [color="#404040"];
ph_dynamic_section__seq:entries_type -> ph_dynamic_section_entry__seq [style=bold];
ph_dynamic_section_entry__inst__tag_enum:tag_enum_type -> ph_dynamic_section__seq:entries__repeat [color="#404040"];
ph_dynamic_section_entry__seq:tag_type -> ph_dynamic_section_entry__seq_tag_switch [style=bold];
elf__seq:bits_type -> ph_dynamic_section_entry__seq:tag_type [color="#404040"];
ph_dynamic_section_entry__seq:value_or_ptr_type -> ph_dynamic_section_entry__seq_value_or_ptr_switch [style=bold];
elf__seq:bits_type -> ph_dynamic_section_entry__seq:value_or_ptr_type [color="#404040"];
ph_dynamic_section_entry__inst__flag_1_values:flag_1_values_type -> dt_flag_1_values__seq [style=bold];
ph_dynamic_section_entry__inst__tag_enum:tag_enum_type -> ph_dynamic_section_entry__inst__flag_1_values:flag_1_values__if [color="#404040"];
ph_dynamic_section_entry__inst__flag_values:flag_values_type -> dt_flag_values__seq [style=bold];
ph_dynamic_section_entry__inst__tag_enum:tag_enum_type -> ph_dynamic_section_entry__inst__flag_values:flag_values__if [color="#404040"];
ph_dynamic_section_entry__seq:value_or_ptr_type -> ph_dynamic_section_entry__inst__is_value_str [color="#404040"];
ph_dynamic_section_entry__inst__tag_enum:tag_enum_type -> ph_dynamic_section_entry__inst__is_value_str [color="#404040"];
ph_dynamic_section_entry__seq:tag_type -> ph_dynamic_section_entry__inst__tag_enum [color="#404040"];
elf__seq:bits_type -> program_header__seq:flags64__if [color="#404040"];
program_header__seq:ofs_body_type -> program_header__seq_ofs_body_switch [style=bold];
elf__seq:bits_type -> program_header__seq:ofs_body_type [color="#404040"];
program_header__seq:virt_addr_type -> program_header__seq_virt_addr_switch [style=bold];
elf__seq:bits_type -> program_header__seq:virt_addr_type [color="#404040"];
program_header__seq:phys_addr_type -> program_header__seq_phys_addr_switch [style=bold];
elf__seq:bits_type -> program_header__seq:phys_addr_type [color="#404040"];
program_header__seq:len_body_type -> program_header__seq_len_body_switch [style=bold];
elf__seq:bits_type -> program_header__seq:len_body_type [color="#404040"];
program_header__seq:memory_size_type -> program_header__seq_memory_size_switch [style=bold];
elf__seq:bits_type -> program_header__seq:memory_size_type [color="#404040"];
elf__seq:bits_type -> program_header__seq:flags32__if [color="#404040"];
program_header__seq:align_type -> program_header__seq_align_switch [style=bold];
elf__seq:bits_type -> program_header__seq:align_type [color="#404040"];
program_header__seq:ofs_body_type -> program_header__inst__body:body_pos [color="#404040"];
program_header__inst__body:body_type -> program_header__inst__body_body_switch [style=bold];
program_header__inst__body_body_switch:case0 -> ph_dynamic_section__seq [style=bold];
program_header__inst__body_body_switch:case1 -> ph_interpreter__seq [style=bold];
program_header__inst__body_body_switch:case2 -> note_section__seq [style=bold];
program_header__seq:type_type -> program_header__inst__body:body_type [color="#404040"];
program_header__seq:len_body_type -> program_header__inst__body:body__if [color="#404040"];
program_header__inst__flags_obj:flags_obj_type -> program_header__inst__flags_obj_flags_obj_switch [style=bold];
program_header__inst__flags_obj_flags_obj_switch:case0 -> phdr_type_flags__seq [style=bold];
program_header__inst__flags_obj_flags_obj_switch:case1 -> phdr_type_flags__seq [style=bold];
elf__seq:bits_type -> program_header__inst__flags_obj:flags_obj_type [color="#404040"];
relocation_section__seq:entries_type -> relocation_section_entry__seq [style=bold];
relocation_section_entry__seq:offset_type -> relocation_section_entry__seq_offset_switch [style=bold];
elf__seq:bits_type -> relocation_section_entry__seq:offset_type [color="#404040"];
relocation_section_entry__seq:info_type -> relocation_section_entry__seq_info_switch [style=bold];
elf__seq:bits_type -> relocation_section_entry__seq:info_type [color="#404040"];
relocation_section_entry__seq:addend_type -> relocation_section_entry__seq_addend_switch [style=bold];
elf__seq:bits_type -> relocation_section_entry__seq:addend_type [color="#404040"];
relocation_section__params:has_addend_type -> relocation_section_entry__seq:addend__if [color="#404040"];
section_header__seq:flags_type -> section_header__seq_flags_switch [style=bold];
elf__seq:bits_type -> section_header__seq:flags_type [color="#404040"];
section_header__seq:addr_type -> section_header__seq_addr_switch [style=bold];
elf__seq:bits_type -> section_header__seq:addr_type [color="#404040"];
section_header__seq:ofs_body_type -> section_header__seq_ofs_body_switch [style=bold];
elf__seq:bits_type -> section_header__seq:ofs_body_type [color="#404040"];
section_header__seq:len_body_type -> section_header__seq_len_body_switch [style=bold];
elf__seq:bits_type -> section_header__seq:len_body_type [color="#404040"];
section_header__seq:align_type -> section_header__seq_align_switch [style=bold];
elf__seq:bits_type -> section_header__seq:align_type [color="#404040"];
section_header__seq:entry_size_type -> section_header__seq_entry_size_switch [style=bold];
elf__seq:bits_type -> section_header__seq:entry_size_type [color="#404040"];
section_header__seq:ofs_body_type -> section_header__inst__body:body_pos [color="#404040"];
section_header__inst__body:body_type -> section_header__inst__body_body_switch [style=bold];
section_header__inst__body_body_switch:case0 -> sh_dynamic_section__seq [style=bold];
section_header__inst__body_body_switch:case1 -> dynsym_section__seq [style=bold];
section_header__inst__body_body_switch:case2 -> verdef_section__seq [style=bold];
section_header__inst__body_body_switch:case3 -> verneed_section__seq [style=bold];
section_header__inst__body_body_switch:case4 -> versym_section__seq [style=bold];
section_header__inst__body_body_switch:case5 -> note_section__seq [style=bold];
section_header__inst__body_body_switch:case6 -> relocation_section__seq [style=bold];
section_header__inst__body_body_switch:case7 -> relocation_section__seq [style=bold];
section_header__inst__body_body_switch:case8 -> strings_struct__seq [style=bold];
section_header__inst__body_body_switch:case9 -> dynsym_section__seq [style=bold];
section_header__seq:type_type -> section_header__inst__body:body_type [color="#404040"];
section_header__seq:type_type -> section_header__inst__body:body__if [color="#404040"];
section_header__inst__flags_obj:flags_obj_type -> section_header_flags__seq [style=bold];
endian_elf__inst__section_headers:section_headers_type -> section_header__inst__linked_section [color="#404040"];
section_header__seq:linked_section_idx_type -> section_header__inst__linked_section [color="#404040"];
section_header__seq:ofs_name_type -> section_header__inst__name:name_pos [color="#404040"];
sh_dynamic_section__seq:entries_type -> sh_dynamic_section_entry__seq [style=bold];
sh_dynamic_section_entry__inst__tag_enum:tag_enum_type -> sh_dynamic_section__seq:entries__repeat [color="#404040"];
section_header__seq:type_type -> sh_dynamic_section__inst__is_string_table_linked [color="#404040"];
sh_dynamic_section_entry__seq:tag_type -> sh_dynamic_section_entry__seq_tag_switch [style=bold];
elf__seq:bits_type -> sh_dynamic_section_entry__seq:tag_type [color="#404040"];
sh_dynamic_section_entry__seq:value_or_ptr_type -> sh_dynamic_section_entry__seq_value_or_ptr_switch [style=bold];
elf__seq:bits_type -> sh_dynamic_section_entry__seq:value_or_ptr_type [color="#404040"];
sh_dynamic_section_entry__inst__flag_1_values:flag_1_values_type -> dt_flag_1_values__seq [style=bold];
sh_dynamic_section_entry__inst__tag_enum:tag_enum_type -> sh_dynamic_section_entry__inst__flag_1_values:flag_1_values__if [color="#404040"];
sh_dynamic_section_entry__inst__flag_values:flag_values_type -> dt_flag_values__seq [style=bold];
sh_dynamic_section_entry__inst__tag_enum:tag_enum_type -> sh_dynamic_section_entry__inst__flag_values:flag_values__if [color="#404040"];
sh_dynamic_section_entry__seq:value_or_ptr_type -> sh_dynamic_section_entry__inst__is_value_str [color="#404040"];
sh_dynamic_section_entry__inst__tag_enum:tag_enum_type -> sh_dynamic_section_entry__inst__is_value_str [color="#404040"];
sh_dynamic_section_entry__seq:tag_type -> sh_dynamic_section_entry__inst__tag_enum [color="#404040"];
sh_dynamic_section_entry__seq:value_or_ptr_type -> sh_dynamic_section_entry__inst__value_str:value_str_pos [color="#404040"];
sh_dynamic_section_entry__inst__is_value_str:is_value_str_type -> sh_dynamic_section_entry__inst__value_str:value_str__if [color="#404040"];
sh_dynamic_section__inst__is_string_table_linked:is_string_table_linked_type -> sh_dynamic_section_entry__inst__value_str:value_str__if [color="#404040"];
verdaux_entry__inst__ofs_start:ofs_start_type -> verdaux_entry__seq:_unnamed0__if [color="#404040"];
verdaux_entry__seq:ofs_name_type -> verdaux_entry__inst__name:name_pos [color="#404040"];
verdef_section__inst__is_string_table_linked:is_string_table_linked_type -> verdaux_entry__inst__name:name__if [color="#404040"];
verdaux_entry__inst__ofs_start:ofs_start_type -> verdaux_entry__inst__next:next_pos [color="#404040"];
verdaux_entry__seq:ofs_next_type -> verdaux_entry__inst__next:next_pos [color="#404040"];
verdaux_entry__inst__next:next_type -> verdaux_entry__seq [style=bold];
verdaux_entry__seq:ofs_next_type -> verdaux_entry__inst__next:next__if [color="#404040"];
verdef_section__seq:first_entry_type -> verdef_section_entry__seq [style=bold];
section_header__seq:type_type -> verdef_section__inst__is_string_table_linked [color="#404040"];
section_header__seq:info_type -> verdef_section__inst__num_entries [color="#404040"];
verdef_section_entry__inst__ofs_start:ofs_start_type -> verdef_section_entry__seq:_unnamed0__if [color="#404040"];
verdef_section_entry__inst__ofs_start:ofs_start_type -> verdef_section_entry__inst__first_aux:first_aux_pos [color="#404040"];
verdef_section_entry__seq:ofs_first_aux_type -> verdef_section_entry__inst__first_aux:first_aux_pos [color="#404040"];
verdef_section_entry__inst__first_aux:first_aux_type -> verdaux_entry__seq [style=bold];
verdef_section_entry__inst__flags_obj:flags_obj_type -> version_flags__seq [style=bold];
verdef_section_entry__inst__ofs_start:ofs_start_type -> verdef_section_entry__inst__next:next_pos [color="#404040"];
verdef_section_entry__seq:ofs_next_type -> verdef_section_entry__inst__next:next_pos [color="#404040"];
verdef_section_entry__inst__next:next_type -> verdef_section_entry__seq [style=bold];
verdef_section_entry__seq:ofs_next_type -> verdef_section_entry__inst__next:next__if [color="#404040"];
verdef_section_entry__seq:version_index_type -> verdef_section_entry__inst__version_index_special [color="#404040"];
vernaux_entry__inst__ofs_start:ofs_start_type -> vernaux_entry__seq:_unnamed0__if [color="#404040"];
vernaux_entry__seq:version_index_type -> version_index__seq [style=bold];
vernaux_entry__inst__flags_obj:flags_obj_type -> version_flags__seq [style=bold];
vernaux_entry__seq:ofs_name_type -> vernaux_entry__inst__name:name_pos [color="#404040"];
verneed_section__inst__is_string_table_linked:is_string_table_linked_type -> vernaux_entry__inst__name:name__if [color="#404040"];
vernaux_entry__inst__ofs_start:ofs_start_type -> vernaux_entry__inst__next:next_pos [color="#404040"];
vernaux_entry__seq:ofs_next_type -> vernaux_entry__inst__next:next_pos [color="#404040"];
vernaux_entry__inst__next:next_type -> vernaux_entry__seq [style=bold];
vernaux_entry__seq:ofs_next_type -> vernaux_entry__inst__next:next__if [color="#404040"];
verneed_section__seq:first_entry_type -> verneed_section_entry__seq [style=bold];
section_header__seq:type_type -> verneed_section__inst__is_string_table_linked [color="#404040"];
section_header__seq:info_type -> verneed_section__inst__num_entries [color="#404040"];
verneed_section_entry__inst__ofs_start:ofs_start_type -> verneed_section_entry__seq:_unnamed0__if [color="#404040"];
verneed_section_entry__seq:ofs_file_name_type -> verneed_section_entry__inst__file_name:file_name_pos [color="#404040"];
verneed_section__inst__is_string_table_linked:is_string_table_linked_type -> verneed_section_entry__inst__file_name:file_name__if [color="#404040"];
verneed_section_entry__inst__ofs_start:ofs_start_type -> verneed_section_entry__inst__first_aux:first_aux_pos [color="#404040"];
verneed_section_entry__seq:ofs_first_aux_type -> verneed_section_entry__inst__first_aux:first_aux_pos [color="#404040"];
verneed_section_entry__inst__first_aux:first_aux_type -> vernaux_entry__seq [style=bold];
verneed_section_entry__inst__ofs_start:ofs_start_type -> verneed_section_entry__inst__next:next_pos [color="#404040"];
verneed_section_entry__seq:ofs_next_type -> verneed_section_entry__inst__next:next_pos [color="#404040"];
verneed_section_entry__inst__next:next_type -> verneed_section_entry__seq [style=bold];
verneed_section_entry__seq:ofs_next_type -> verneed_section_entry__inst__next:next__if [color="#404040"];
version_flags__params:value_type -> version_flags__inst__base [color="#404040"];
version_flags__params:value_type -> version_flags__inst__info [color="#404040"];
version_flags__params:value_type -> version_flags__inst__weak [color="#404040"];
version_index__seq:raw_type -> version_index__inst__is_hidden [color="#404040"];
version_index__seq:raw_type -> version_index__inst__value [color="#404040"];
version_index__seq:raw_type -> version_index__inst__version_index_special [color="#404040"];
versym_section__seq:entries_type -> version_index__seq [style=bold];
phdr_type_flags__params:value_type -> phdr_type_flags__inst__execute [color="#404040"];
phdr_type_flags__params:value_type -> phdr_type_flags__inst__mask_proc [color="#404040"];
phdr_type_flags__params:value_type -> phdr_type_flags__inst__read [color="#404040"];
phdr_type_flags__params:value_type -> phdr_type_flags__inst__write [color="#404040"];
section_header_flags__params:value_type -> section_header_flags__inst__alloc [color="#404040"];
section_header_flags__params:value_type -> section_header_flags__inst__compressed [color="#404040"];
section_header_flags__params:value_type -> section_header_flags__inst__exclude [color="#404040"];
section_header_flags__params:value_type -> section_header_flags__inst__exec_instr [color="#404040"];
section_header_flags__params:value_type -> section_header_flags__inst__gnu_mbind [color="#404040"];
section_header_flags__params:value_type -> section_header_flags__inst__group [color="#404040"];
section_header_flags__params:value_type -> section_header_flags__inst__info_link [color="#404040"];
section_header_flags__params:value_type -> section_header_flags__inst__link_order [color="#404040"];
section_header_flags__params:value_type -> section_header_flags__inst__mask_os [color="#404040"];
section_header_flags__params:value_type -> section_header_flags__inst__mask_proc [color="#404040"];
section_header_flags__params:value_type -> section_header_flags__inst__merge [color="#404040"];
section_header_flags__params:value_type -> section_header_flags__inst__ordered [color="#404040"];
section_header_flags__params:value_type -> section_header_flags__inst__os_nonconforming [color="#404040"];
section_header_flags__params:value_type -> section_header_flags__inst__retain [color="#404040"];
section_header_flags__params:value_type -> section_header_flags__inst__strings [color="#404040"];
section_header_flags__params:value_type -> section_header_flags__inst__tls [color="#404040"];
section_header_flags__params:value_type -> section_header_flags__inst__write [color="#404040"];
}