digraph {
rankdir=LR;
node [shape=plaintext];
subgraph cluster__elf {
label="Elf";
graph[style=dotted];
elf__seq [label=<
pos | size | type | id |
0 | 4 | | magic |
4 | 1 | u1→Bits | bits |
5 | 1 | u1→Endian | endian |
6 | 1 | u1 | ei_version |
7 | 1 | u1→OsAbi | abi |
8 | 1 | u1 | abi_version |
9 | 7 | | pad |
16 | ... | EndianElf | header |
>];
elf__inst__sh_idx_lo_os [label=<
id | value |
sh_idx_lo_os | 65312 |
>];
elf__inst__sh_idx_lo_reserved [label=<
id | value |
sh_idx_lo_reserved | 65280 |
>];
elf__inst__sh_idx_hi_proc [label=<
id | value |
sh_idx_hi_proc | 65311 |
>];
elf__inst__sh_idx_lo_proc [label=<
id | value |
sh_idx_lo_proc | 65280 |
>];
elf__inst__sh_idx_hi_os [label=<
id | value |
sh_idx_hi_os | 65343 |
>];
elf__inst__sh_idx_hi_reserved [label=<
id | value |
sh_idx_hi_reserved | 65535 |
>];
subgraph cluster__endian_elf {
label="Elf::EndianElf";
graph[style=dotted];
endian_elf__seq [label=<
pos | size | type | id |
0 | 2 | u2→ObjType | e_type |
2 | 2 | u2→Machine | machine |
4 | 4 | u4 | e_version |
8 | ... | switch (_root.bits) | entry_point |
... | ... | switch (_root.bits) | program_header_offset |
... | ... | switch (_root.bits) | section_header_offset |
... | 4 | | flags |
... | 2 | u2 | e_ehsize |
... | 2 | u2 | len_program_headers |
... | 2 | u2 | num_program_headers |
... | 2 | u2 | len_section_headers |
... | 2 | u2 | num_section_headers |
... | 2 | u2 | section_names_idx |
>];
endian_elf__inst__program_headers [label=<
pos | size | type | id |
program_header_offset | len_program_headers | ProgramHeader | program_headers |
repeat num_program_headers times |
>];
endian_elf__inst__section_headers [label=<
pos | size | type | id |
section_header_offset | len_section_headers | SectionHeader | section_headers |
repeat num_section_headers times |
>];
endian_elf__inst__section_names [label=<
pos | size | type | id |
section_headers[section_names_idx].ofs_body | section_headers[section_names_idx].len_body | StringsStruct | section_names |
>];
endian_elf__seq_entry_point_switch [label=<>];
endian_elf__seq_program_header_offset_switch [label=<>];
endian_elf__seq_section_header_offset_switch [label=<>];
subgraph cluster__note_section {
label="Elf::EndianElf::NoteSection";
graph[style=dotted];
note_section__seq [label=<
pos | size | type | id |
0 | ... | NoteSectionEntry | entries |
repeat to end of stream |
>];
}
subgraph cluster__program_header {
label="Elf::EndianElf::ProgramHeader";
graph[style=dotted];
program_header__seq [label=<
pos | size | type | id |
0 | 4 | u4→PhType | type |
4 | 4 | u4 | flags64 |
8 | ... | switch (_root.bits) | offset |
... | ... | switch (_root.bits) | vaddr |
... | ... | switch (_root.bits) | paddr |
... | ... | switch (_root.bits) | filesz |
... | ... | switch (_root.bits) | memsz |
... | 4 | u4 | flags32 |
... | ... | switch (_root.bits) | align |
>];
program_header__inst__flags_obj [label=<
pos | size | type | id |
... | ... | switch (_root.bits) | flags_obj |
>];
program_header__seq_offset_switch [label=<>];
program_header__seq_vaddr_switch [label=<>];
program_header__seq_paddr_switch [label=<>];
program_header__seq_filesz_switch [label=<>];
program_header__seq_memsz_switch [label=<>];
program_header__seq_align_switch [label=<>];
program_header__inst__flags_obj_flags_obj_switch [label=<
case | type |
:bits_b32 | PhdrTypeFlags |
:bits_b64 | PhdrTypeFlags |
>];
}
subgraph cluster__dynamic_section_entry {
label="Elf::EndianElf::DynamicSectionEntry";
graph[style=dotted];
dynamic_section_entry__seq [label=<
pos | size | type | id |
0 | ... | switch (_root.bits) | tag |
... | ... | switch (_root.bits) | value_or_ptr |
>];
dynamic_section_entry__inst__flag_1_values [label=<
pos | size | type | id |
... | 0 | DtFlag1Values | flag_1_values |
>];
dynamic_section_entry__inst__value_str [label=<
pos | size | type | id |
value_or_ptr | ... | str(ASCII) | value_str |
>];
dynamic_section_entry__inst__tag_enum [label=<
id | value |
tag_enum | Kaitai::Struct::Stream::resolve_enum(Elf::DYNAMIC_ARRAY_TAGS, tag) |
>];
dynamic_section_entry__inst__flag_values [label=<
pos | size | type | id |
... | 0 | DtFlagValues | flag_values |
>];
dynamic_section_entry__inst__is_value_str [label=<
id | value |
is_value_str | ((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)) )) |
>];
dynamic_section_entry__seq_tag_switch [label=<>];
dynamic_section_entry__seq_value_or_ptr_switch [label=<>];
}
subgraph cluster__section_header {
label="Elf::EndianElf::SectionHeader";
graph[style=dotted];
section_header__seq [label=<
pos | size | type | id |
0 | 4 | u4 | ofs_name |
4 | 4 | u4→ShType | type |
8 | ... | switch (_root.bits) | flags |
... | ... | switch (_root.bits) | addr |
... | ... | switch (_root.bits) | ofs_body |
... | ... | switch (_root.bits) | len_body |
... | 4 | u4 | linked_section_idx |
... | 4 | | info |
... | ... | switch (_root.bits) | align |
... | ... | switch (_root.bits) | entry_size |
>];
section_header__inst__body [label=<
pos | size | type | id |
ofs_body | ... | switch (type) | body |
>];
section_header__inst__linked_section [label=<
id | value |
linked_section | _root.header.section_headers[linked_section_idx] |
>];
section_header__inst__name [label=<
pos | size | type | id |
ofs_name | ... | str(ASCII) | name |
>];
section_header__inst__flags_obj [label=<
pos | size | type | id |
... | 0 | SectionHeaderFlags | flags_obj |
>];
section_header__seq_flags_switch [label=<>];
section_header__seq_addr_switch [label=<>];
section_header__seq_ofs_body_switch [label=<>];
section_header__seq_len_body_switch [label=<>];
section_header__seq_align_switch [label=<>];
section_header__seq_entry_size_switch [label=<>];
section_header__inst__body_body_switch [label=<
case | type |
:sh_type_rel | RelocationSection |
:sh_type_note | NoteSection |
:sh_type_symtab | DynsymSection |
:sh_type_strtab | StringsStruct |
:sh_type_dynamic | DynamicSection |
:sh_type_dynsym | DynsymSection |
:sh_type_rela | RelocationSection |
>];
}
subgraph cluster__relocation_section {
label="Elf::EndianElf::RelocationSection";
graph[style=dotted];
relocation_section__seq [label=<
pos | size | type | id |
0 | ... | RelocationSectionEntry | entries |
repeat to end of stream |
>];
}
subgraph cluster__dynamic_section {
label="Elf::EndianElf::DynamicSection";
graph[style=dotted];
dynamic_section__seq [label=<
pos | size | type | id |
0 | ... | DynamicSectionEntry | entries |
repeat to end of stream |
>];
dynamic_section__inst__is_string_table_linked [label=<
id | value |
is_string_table_linked | _parent.linked_section.type == :sh_type_strtab |
>];
}
subgraph cluster__dynsym_section {
label="Elf::EndianElf::DynsymSection";
graph[style=dotted];
dynsym_section__seq [label=<
pos | size | type | id |
0 | 32 | DynsymSectionEntry | entries |
repeat to end of stream |
>];
dynsym_section__inst__is_string_table_linked [label=<
id | value |
is_string_table_linked | _parent.linked_section.type == :sh_type_strtab |
>];
}
subgraph cluster__relocation_section_entry {
label="Elf::EndianElf::RelocationSectionEntry";
graph[style=dotted];
relocation_section_entry__seq [label=<
pos | size | type | id |
0 | ... | switch (_root.bits) | offset |
... | ... | switch (_root.bits) | info |
... | ... | switch (_root.bits) | addend |
>];
relocation_section_entry__seq_offset_switch [label=<>];
relocation_section_entry__seq_info_switch [label=<>];
relocation_section_entry__seq_addend_switch [label=<>];
}
subgraph cluster__dynsym_section_entry {
label="Elf::EndianElf::DynsymSectionEntry";
graph[style=dotted];
dynsym_section_entry__seq [label=<
pos | size | type | id |
0 | 4 | u4 | ofs_name |
4 | 4 | u4 | value_b32 |
8 | 4 | u4 | size_b32 |
12 | 4b | b4→SymbolBinding | bind |
12:4 | 4b | b4→SymbolType | type |
13 | 1 | u1 | other |
14 | 2 | u2 | sh_idx |
16 | 8 | u8 | value_b64 |
24 | 8 | u8 | size_b64 |
>];
dynsym_section_entry__inst__is_sh_idx_reserved [label=<
id | value |
is_sh_idx_reserved | ((sh_idx >= _root.sh_idx_lo_reserved) && (sh_idx <= _root.sh_idx_hi_reserved)) |
>];
dynsym_section_entry__inst__is_sh_idx_os [label=<
id | value |
is_sh_idx_os | ((sh_idx >= _root.sh_idx_lo_os) && (sh_idx <= _root.sh_idx_hi_os)) |
>];
dynsym_section_entry__inst__is_sh_idx_proc [label=<
id | value |
is_sh_idx_proc | ((sh_idx >= _root.sh_idx_lo_proc) && (sh_idx <= _root.sh_idx_hi_proc)) |
>];
dynsym_section_entry__inst__size [label=<
id | value |
size | (_root.bits == :bits_b32 ? size_b32 : (_root.bits == :bits_b64 ? size_b64 : 0)) |
>];
dynsym_section_entry__inst__visibility [label=<
id | value |
visibility | Kaitai::Struct::Stream::resolve_enum(Elf::SYMBOL_VISIBILITY, (other & 3)) |
>];
dynsym_section_entry__inst__value [label=<
id | value |
value | (_root.bits == :bits_b32 ? value_b32 : (_root.bits == :bits_b64 ? value_b64 : 0)) |
>];
dynsym_section_entry__inst__name [label=<
pos | size | type | id |
ofs_name | ... | str(UTF-8) | name |
>];
dynsym_section_entry__inst__sh_idx_special [label=<
id | value |
sh_idx_special | Kaitai::Struct::Stream::resolve_enum(Elf::SECTION_HEADER_IDX_SPECIAL, sh_idx) |
>];
}
subgraph cluster__note_section_entry {
label="Elf::EndianElf::NoteSectionEntry";
graph[style=dotted];
note_section_entry__seq [label=<
pos | size | type | id |
0 | 4 | u4 | len_name |
4 | 4 | u4 | len_descriptor |
8 | 4 | u4 | type |
12 | len_name | | name |
... | (-(len_name) % 4) | | name_padding |
... | len_descriptor | | descriptor |
... | (-(len_descriptor) % 4) | | descriptor_padding |
>];
}
subgraph cluster__strings_struct {
label="Elf::EndianElf::StringsStruct";
graph[style=dotted];
strings_struct__seq [label=<
pos | size | type | id |
0 | ... | str(UTF-8) | entries |
repeat to end of stream |
>];
}
}
subgraph cluster__dt_flag_1_values {
label="Elf::DtFlag1Values";
graph[style=dotted];
dt_flag_1_values__seq [label=<>];
dt_flag_1_values__inst__singleton [label=<
id | value |
singleton | (value & 33554432) != 0 |
>];
dt_flag_1_values__inst__ignmuldef [label=<
id | value |
ignmuldef | (value & 262144) != 0 |
>];
dt_flag_1_values__inst__loadfltr [label=<
id | value |
loadfltr | (value & 16) != 0 |
>];
dt_flag_1_values__inst__initfirst [label=<
id | value |
initfirst | (value & 32) != 0 |
>];
dt_flag_1_values__inst__symintpose [label=<
id | value |
symintpose | (value & 8388608) != 0 |
>];
dt_flag_1_values__inst__noreloc [label=<
id | value |
noreloc | (value & 4194304) != 0 |
>];
dt_flag_1_values__inst__confalt [label=<
id | value |
confalt | (value & 8192) != 0 |
>];
dt_flag_1_values__inst__dispreldne [label=<
id | value |
dispreldne | (value & 32768) != 0 |
>];
dt_flag_1_values__inst__rtld_global [label=<
id | value |
rtld_global | (value & 2) != 0 |
>];
dt_flag_1_values__inst__nodelete [label=<
id | value |
nodelete | (value & 8) != 0 |
>];
dt_flag_1_values__inst__trans [label=<
id | value |
trans | (value & 512) != 0 |
>];
dt_flag_1_values__inst__origin [label=<
id | value |
origin | (value & 128) != 0 |
>];
dt_flag_1_values__inst__now [label=<
id | value |
now | (value & 1) != 0 |
>];
dt_flag_1_values__inst__nohdr [label=<
id | value |
nohdr | (value & 1048576) != 0 |
>];
dt_flag_1_values__inst__endfiltee [label=<
id | value |
endfiltee | (value & 16384) != 0 |
>];
dt_flag_1_values__inst__nodirect [label=<
id | value |
nodirect | (value & 131072) != 0 |
>];
dt_flag_1_values__inst__globaudit [label=<
id | value |
globaudit | (value & 16777216) != 0 |
>];
dt_flag_1_values__inst__noksyms [label=<
id | value |
noksyms | (value & 524288) != 0 |
>];
dt_flag_1_values__inst__interpose [label=<
id | value |
interpose | (value & 1024) != 0 |
>];
dt_flag_1_values__inst__nodump [label=<
id | value |
nodump | (value & 4096) != 0 |
>];
dt_flag_1_values__inst__disprelpnd [label=<
id | value |
disprelpnd | (value & 65536) != 0 |
>];
dt_flag_1_values__inst__noopen [label=<
id | value |
noopen | (value & 64) != 0 |
>];
dt_flag_1_values__inst__stub [label=<
id | value |
stub | (value & 67108864) != 0 |
>];
dt_flag_1_values__inst__direct [label=<
id | value |
direct | (value & 256) != 0 |
>];
dt_flag_1_values__inst__edited [label=<
id | value |
edited | (value & 2097152) != 0 |
>];
dt_flag_1_values__inst__group [label=<
id | value |
group | (value & 4) != 0 |
>];
dt_flag_1_values__inst__pie [label=<
id | value |
pie | (value & 134217728) != 0 |
>];
dt_flag_1_values__inst__nodeflib [label=<
id | value |
nodeflib | (value & 2048) != 0 |
>];
}
subgraph cluster__section_header_flags {
label="Elf::SectionHeaderFlags";
graph[style=dotted];
section_header_flags__seq [label=<>];
section_header_flags__inst__merge [label=<
id | value |
merge | (value & 16) != 0 |
>];
section_header_flags__inst__mask_os [label=<
id | value |
mask_os | (value & 267386880) != 0 |
>];
section_header_flags__inst__exclude [label=<
id | value |
exclude | (value & 134217728) != 0 |
>];
section_header_flags__inst__mask_proc [label=<
id | value |
mask_proc | (value & 4026531840) != 0 |
>];
section_header_flags__inst__strings [label=<
id | value |
strings | (value & 32) != 0 |
>];
section_header_flags__inst__os_non_conforming [label=<
id | value |
os_non_conforming | (value & 256) != 0 |
>];
section_header_flags__inst__alloc [label=<
id | value |
alloc | (value & 2) != 0 |
>];
section_header_flags__inst__exec_instr [label=<
id | value |
exec_instr | (value & 4) != 0 |
>];
section_header_flags__inst__info_link [label=<
id | value |
info_link | (value & 64) != 0 |
>];
section_header_flags__inst__write [label=<
id | value |
write | (value & 1) != 0 |
>];
section_header_flags__inst__link_order [label=<
id | value |
link_order | (value & 128) != 0 |
>];
section_header_flags__inst__ordered [label=<
id | value |
ordered | (value & 67108864) != 0 |
>];
section_header_flags__inst__tls [label=<
id | value |
tls | (value & 1024) != 0 |
>];
section_header_flags__inst__group [label=<
id | value |
group | (value & 512) != 0 |
>];
}
subgraph cluster__phdr_type_flags {
label="Elf::PhdrTypeFlags";
graph[style=dotted];
phdr_type_flags__seq [label=<>];
phdr_type_flags__inst__read [label=<
id | value |
read | (value & 4) != 0 |
>];
phdr_type_flags__inst__write [label=<
id | value |
write | (value & 2) != 0 |
>];
phdr_type_flags__inst__execute [label=<
id | value |
execute | (value & 1) != 0 |
>];
phdr_type_flags__inst__mask_proc [label=<
id | value |
mask_proc | (value & 4026531840) != 0 |
>];
}
subgraph cluster__dt_flag_values {
label="Elf::DtFlagValues";
graph[style=dotted];
dt_flag_values__seq [label=<>];
dt_flag_values__inst__bind_now [label=<
id | value |
bind_now | (value & 8) != 0 |
>];
dt_flag_values__inst__origin [label=<
id | value |
origin | (value & 1) != 0 |
>];
dt_flag_values__inst__textrel [label=<
id | value |
textrel | (value & 4) != 0 |
>];
dt_flag_values__inst__static_tls [label=<
id | value |
static_tls | (value & 16) != 0 |
>];
dt_flag_values__inst__symbolic [label=<
id | value |
symbolic | (value & 2) != 0 |
>];
}
}
elf__seq:header_type -> endian_elf__seq [style=bold];
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:program_header_offset_type -> endian_elf__seq_program_header_offset_switch [style=bold];
elf__seq:bits_type -> endian_elf__seq:program_header_offset_type [color="#404040"];
endian_elf__seq:section_header_offset_type -> endian_elf__seq_section_header_offset_switch [style=bold];
elf__seq:bits_type -> endian_elf__seq:section_header_offset_type [color="#404040"];
endian_elf__seq:program_header_offset_type -> endian_elf__inst__program_headers:program_headers_pos [color="#404040"];
endian_elf__seq:len_program_headers_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:section_header_offset_type -> endian_elf__inst__section_headers:section_headers_pos [color="#404040"];
endian_elf__seq:len_section_headers_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];
note_section__seq:entries_type -> note_section_entry__seq [style=bold];
program_header__seq:offset_type -> program_header__seq_offset_switch [style=bold];
elf__seq:bits_type -> program_header__seq:offset_type [color="#404040"];
program_header__seq:vaddr_type -> program_header__seq_vaddr_switch [style=bold];
elf__seq:bits_type -> program_header__seq:vaddr_type [color="#404040"];
program_header__seq:paddr_type -> program_header__seq_paddr_switch [style=bold];
elf__seq:bits_type -> program_header__seq:paddr_type [color="#404040"];
program_header__seq:filesz_type -> program_header__seq_filesz_switch [style=bold];
elf__seq:bits_type -> program_header__seq:filesz_type [color="#404040"];
program_header__seq:memsz_type -> program_header__seq_memsz_switch [style=bold];
elf__seq:bits_type -> program_header__seq:memsz_type [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__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"];
dynamic_section_entry__seq:tag_type -> dynamic_section_entry__seq_tag_switch [style=bold];
elf__seq:bits_type -> dynamic_section_entry__seq:tag_type [color="#404040"];
dynamic_section_entry__seq:value_or_ptr_type -> dynamic_section_entry__seq_value_or_ptr_switch [style=bold];
elf__seq:bits_type -> dynamic_section_entry__seq:value_or_ptr_type [color="#404040"];
dynamic_section_entry__inst__flag_1_values:flag_1_values_type -> dt_flag_1_values__seq [style=bold];
dynamic_section_entry__seq:value_or_ptr_type -> dynamic_section_entry__inst__value_str:value_str_pos [color="#404040"];
dynamic_section_entry__seq:tag_type -> dynamic_section_entry__inst__tag_enum [color="#404040"];
dynamic_section_entry__inst__flag_values:flag_values_type -> dt_flag_values__seq [style=bold];
dynamic_section_entry__seq:value_or_ptr_type -> dynamic_section_entry__inst__is_value_str [color="#404040"];
dynamic_section_entry__inst__tag_enum:tag_enum_type -> dynamic_section_entry__inst__is_value_str [color="#404040"];
dynamic_section_entry__inst__tag_enum:tag_enum_type -> dynamic_section_entry__inst__is_value_str [color="#404040"];
dynamic_section_entry__inst__tag_enum:tag_enum_type -> dynamic_section_entry__inst__is_value_str [color="#404040"];
dynamic_section_entry__inst__tag_enum:tag_enum_type -> dynamic_section_entry__inst__is_value_str [color="#404040"];
dynamic_section_entry__inst__tag_enum:tag_enum_type -> dynamic_section_entry__inst__is_value_str [color="#404040"];
dynamic_section_entry__inst__tag_enum:tag_enum_type -> dynamic_section_entry__inst__is_value_str [color="#404040"];
dynamic_section_entry__inst__tag_enum:tag_enum_type -> dynamic_section_entry__inst__is_value_str [color="#404040"];
dynamic_section_entry__inst__tag_enum:tag_enum_type -> dynamic_section_entry__inst__is_value_str [color="#404040"];
dynamic_section_entry__inst__tag_enum:tag_enum_type -> dynamic_section_entry__inst__is_value_str [color="#404040"];
dynamic_section_entry__inst__tag_enum:tag_enum_type -> dynamic_section_entry__inst__is_value_str [color="#404040"];
dynamic_section_entry__inst__tag_enum:tag_enum_type -> dynamic_section_entry__inst__is_value_str [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 -> relocation_section__seq [style=bold];
section_header__inst__body_body_switch:case1 -> note_section__seq [style=bold];
section_header__inst__body_body_switch:case2 -> dynsym_section__seq [style=bold];
section_header__inst__body_body_switch:case3 -> strings_struct__seq [style=bold];
section_header__inst__body_body_switch:case4 -> dynamic_section__seq [style=bold];
section_header__inst__body_body_switch:case5 -> dynsym_section__seq [style=bold];
section_header__inst__body_body_switch:case6 -> relocation_section__seq [style=bold];
section_header__seq:type_type -> section_header__inst__body:body_type [color="#404040"];
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"];
section_header__inst__flags_obj:flags_obj_type -> section_header_flags__seq [style=bold];
relocation_section__seq:entries_type -> relocation_section_entry__seq [style=bold];
dynamic_section__seq:entries_type -> dynamic_section_entry__seq [style=bold];
section_header__seq:type_type -> dynamic_section__inst__is_string_table_linked [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"];
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"];
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"];
dynsym_section_entry__seq:sh_idx_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: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"];
dynsym_section_entry__seq:sh_idx_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"];
dynsym_section_entry__seq:sh_idx_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"];
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"];
elf__seq:bits_type -> dynsym_section_entry__inst__size [color="#404040"];
dynsym_section_entry__seq:size_b64_type -> dynsym_section_entry__inst__size [color="#404040"];
dynsym_section_entry__seq:other_type -> dynsym_section_entry__inst__visibility [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"];
elf__seq:bits_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:ofs_name_type -> dynsym_section_entry__inst__name:name_pos [color="#404040"];
dynsym_section_entry__seq:sh_idx_type -> dynsym_section_entry__inst__sh_idx_special [color="#404040"];
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"];
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__ignmuldef [color="#404040"];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__loadfltr [color="#404040"];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__initfirst [color="#404040"];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__symintpose [color="#404040"];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__noreloc [color="#404040"];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__confalt [color="#404040"];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__dispreldne [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__nodelete [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__origin [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__nohdr [color="#404040"];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__endfiltee [color="#404040"];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__nodirect [color="#404040"];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__globaudit [color="#404040"];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__noksyms [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__nodump [color="#404040"];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__disprelpnd [color="#404040"];
dt_flag_1_values__params:value_type -> dt_flag_1_values__inst__noopen [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__direct [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__group [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__nodeflib [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__mask_os [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__mask_proc [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__os_non_conforming [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__exec_instr [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__write [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__ordered [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__group [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"];
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"];
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__textrel [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"];
}