Executable and Linkable Format: GraphViz block diagram (.dot) source

Application

SVR4 ABI and up, many *nix systems

KS implementation details

License: CC0-1.0
Minimal Kaitai Struct required: 0.8

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.

GraphViz block diagram source

elf.dot

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 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></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>>];
		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__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 &amp; 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 &amp; 2) != 0</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 &amp; 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 &amp; 4026531840) != 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__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 &amp; 16) != 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 &amp; 267386880) != 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 &amp; 134217728) != 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 &amp; 4026531840) != 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 &amp; 32) != 0</TD></TR>
			</TABLE>>];
			section_header_flags__inst__os_non_conforming [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
				<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
				<TR><TD>os_non_conforming</TD><TD>(value &amp; 256) != 0</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 &amp; 2) != 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 &amp; 4) != 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 &amp; 64) != 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 &amp; 1) != 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 &amp; 128) != 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 &amp; 67108864) != 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 &amp; 1024) != 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 &amp; 512) != 0</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__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 &amp; 33554432) != 0</TD></TR>
			</TABLE>>];
			dt_flag_1_values__inst__ignmuldef [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
				<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
				<TR><TD>ignmuldef</TD><TD>(value &amp; 262144) != 0</TD></TR>
			</TABLE>>];
			dt_flag_1_values__inst__loadfltr [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
				<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
				<TR><TD>loadfltr</TD><TD>(value &amp; 16) != 0</TD></TR>
			</TABLE>>];
			dt_flag_1_values__inst__initfirst [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
				<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
				<TR><TD>initfirst</TD><TD>(value &amp; 32) != 0</TD></TR>
			</TABLE>>];
			dt_flag_1_values__inst__symintpose [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
				<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
				<TR><TD>symintpose</TD><TD>(value &amp; 8388608) != 0</TD></TR>
			</TABLE>>];
			dt_flag_1_values__inst__noreloc [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
				<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
				<TR><TD>noreloc</TD><TD>(value &amp; 4194304) != 0</TD></TR>
			</TABLE>>];
			dt_flag_1_values__inst__confalt [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
				<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
				<TR><TD>confalt</TD><TD>(value &amp; 8192) != 0</TD></TR>
			</TABLE>>];
			dt_flag_1_values__inst__dispreldne [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
				<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
				<TR><TD>dispreldne</TD><TD>(value &amp; 32768) != 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 &amp; 2) != 0</TD></TR>
			</TABLE>>];
			dt_flag_1_values__inst__nodelete [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
				<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
				<TR><TD>nodelete</TD><TD>(value &amp; 8) != 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 &amp; 512) != 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 &amp; 128) != 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 &amp; 1) != 0</TD></TR>
			</TABLE>>];
			dt_flag_1_values__inst__nohdr [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
				<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
				<TR><TD>nohdr</TD><TD>(value &amp; 1048576) != 0</TD></TR>
			</TABLE>>];
			dt_flag_1_values__inst__endfiltee [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
				<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
				<TR><TD>endfiltee</TD><TD>(value &amp; 16384) != 0</TD></TR>
			</TABLE>>];
			dt_flag_1_values__inst__nodirect [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
				<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
				<TR><TD>nodirect</TD><TD>(value &amp; 131072) != 0</TD></TR>
			</TABLE>>];
			dt_flag_1_values__inst__globaudit [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
				<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
				<TR><TD>globaudit</TD><TD>(value &amp; 16777216) != 0</TD></TR>
			</TABLE>>];
			dt_flag_1_values__inst__noksyms [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
				<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
				<TR><TD>noksyms</TD><TD>(value &amp; 524288) != 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 &amp; 1024) != 0</TD></TR>
			</TABLE>>];
			dt_flag_1_values__inst__nodump [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
				<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
				<TR><TD>nodump</TD><TD>(value &amp; 4096) != 0</TD></TR>
			</TABLE>>];
			dt_flag_1_values__inst__disprelpnd [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
				<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
				<TR><TD>disprelpnd</TD><TD>(value &amp; 65536) != 0</TD></TR>
			</TABLE>>];
			dt_flag_1_values__inst__noopen [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
				<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
				<TR><TD>noopen</TD><TD>(value &amp; 64) != 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 &amp; 67108864) != 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 &amp; 256) != 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 &amp; 2097152) != 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 &amp; 4) != 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 &amp; 134217728) != 0</TD></TR>
			</TABLE>>];
			dt_flag_1_values__inst__nodeflib [label=<<TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0">
				<TR><TD BGCOLOR="#E0FFE0">id</TD><TD BGCOLOR="#E0FFE0">value</TD></TR>
				<TR><TD>nodeflib</TD><TD>(value &amp; 2048) != 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 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="program_header_offset_pos">...</TD><TD PORT="program_header_offset_size">...</TD><TD>switch (_root.bits)</TD><TD PORT="program_header_offset_type">program_header_offset</TD></TR>
				<TR><TD PORT="section_header_offset_pos">...</TD><TD PORT="section_header_offset_size">...</TD><TD>switch (_root.bits)</TD><TD PORT="section_header_offset_type">section_header_offset</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_entry_size_pos">...</TD><TD PORT="program_header_entry_size_size">2</TD><TD>u2</TD><TD PORT="program_header_entry_size_type">program_header_entry_size</TD></TR>
				<TR><TD PORT="qty_program_header_pos">...</TD><TD PORT="qty_program_header_size">2</TD><TD>u2</TD><TD PORT="qty_program_header_type">qty_program_header</TD></TR>
				<TR><TD PORT="section_header_entry_size_pos">...</TD><TD PORT="section_header_entry_size_size">2</TD><TD>u2</TD><TD PORT="section_header_entry_size_type">section_header_entry_size</TD></TR>
				<TR><TD PORT="qty_section_header_pos">...</TD><TD PORT="qty_section_header_size">2</TD><TD>u2</TD><TD PORT="qty_section_header_type">qty_section_header</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">program_header_offset</TD><TD PORT="program_headers_size">program_header_entry_size</TD><TD>ProgramHeader</TD><TD PORT="program_headers_type">program_headers</TD></TR>
				<TR><TD COLSPAN="4" PORT="program_headers__repeat">repeat qty_program_header 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">section_header_offset</TD><TD PORT="section_headers_size">section_header_entry_size</TD><TD>SectionHeader</TD><TD PORT="section_headers_type">section_headers</TD></TR>
				<TR><TD COLSPAN="4" PORT="section_headers__repeat">repeat qty_section_header times</TD></TR>
			</TABLE>>];
			endian_elf__inst__strings [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="strings_pos">section_headers[section_names_idx].ofs_body</TD><TD PORT="strings_size">section_headers[section_names_idx].len_body</TD><TD>StringsStruct</TD><TD PORT="strings_type">strings</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_program_header_offset_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_section_header_offset_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_entry64 {
				label="Elf::EndianElf::DynsymSectionEntry64";
				graph[style=dotted];

				dynsym_section_entry64__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="name_offset_pos">0</TD><TD PORT="name_offset_size">4</TD><TD>u4</TD><TD PORT="name_offset_type">name_offset</TD></TR>
					<TR><TD PORT="info_pos">4</TD><TD PORT="info_size">1</TD><TD>u1</TD><TD PORT="info_type">info</TD></TR>
					<TR><TD PORT="other_pos">5</TD><TD PORT="other_size">1</TD><TD>u1</TD><TD PORT="other_type">other</TD></TR>
					<TR><TD PORT="shndx_pos">6</TD><TD PORT="shndx_size">2</TD><TD>u2</TD><TD PORT="shndx_type">shndx</TD></TR>
					<TR><TD PORT="value_pos">8</TD><TD PORT="value_size">8</TD><TD>u8</TD><TD PORT="value_type">value</TD></TR>
					<TR><TD PORT="size_pos">16</TD><TD PORT="size_size">8</TD><TD>u8</TD><TD PORT="size_type">size</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 PORT="offset_pos">8</TD><TD PORT="offset_size">...</TD><TD>switch (_root.bits)</TD><TD PORT="offset_type">offset</TD></TR>
					<TR><TD PORT="vaddr_pos">...</TD><TD PORT="vaddr_size">...</TD><TD>switch (_root.bits)</TD><TD PORT="vaddr_type">vaddr</TD></TR>
					<TR><TD PORT="paddr_pos">...</TD><TD PORT="paddr_size">...</TD><TD>switch (_root.bits)</TD><TD PORT="paddr_type">paddr</TD></TR>
					<TR><TD PORT="filesz_pos">...</TD><TD PORT="filesz_size">...</TD><TD>switch (_root.bits)</TD><TD PORT="filesz_type">filesz</TD></TR>
					<TR><TD PORT="memsz_pos">...</TD><TD PORT="memsz_size">...</TD><TD>switch (_root.bits)</TD><TD PORT="memsz_type">memsz</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 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__dynamic [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="dynamic_pos">offset</TD><TD PORT="dynamic_size">filesz</TD><TD>DynamicSection</TD><TD PORT="dynamic_type">dynamic</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">0</TD><TD>PhdrTypeFlags</TD><TD PORT="flags_obj_type">flags_obj</TD></TR>
				</TABLE>>];
program_header__seq_offset_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_vaddr_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_paddr_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_filesz_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_memsz_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>>];
			}
			subgraph cluster__dynamic_section_entry {
				label="Elf::EndianElf::DynamicSectionEntry";
				graph[style=dotted];

				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>>];
				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(DYNAMIC_ARRAY_TAGS, tag)</TD></TR>
				</TABLE>>];
				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>
				</TABLE>>];
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>>];
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__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></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>
				</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(ASCII)</TD><TD PORT="name_type">name</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__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">DynamicSection</TD></TR>
	<TR><TD>:sh_type_strtab</TD><TD PORT="case1">StringsStruct</TD></TR>
	<TR><TD>:sh_type_dynstr</TD><TD PORT="case2">StringsStruct</TD></TR>
	<TR><TD>:sh_type_dynsym</TD><TD PORT="case3">DynsymSection</TD></TR>
</TABLE>>];
			}
			subgraph cluster__dynamic_section {
				label="Elf::EndianElf::DynamicSection";
				graph[style=dotted];

				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>DynamicSectionEntry</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__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">...</TD><TD>switch (_root.bits)</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__seq_entries_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">DynsymSectionEntry32</TD></TR>
	<TR><TD>:bits_b64</TD><TD PORT="case1">DynsymSectionEntry64</TD></TR>
</TABLE>>];
			}
			subgraph cluster__dynsym_section_entry32 {
				label="Elf::EndianElf::DynsymSectionEntry32";
				graph[style=dotted];

				dynsym_section_entry32__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="name_offset_pos">0</TD><TD PORT="name_offset_size">4</TD><TD>u4</TD><TD PORT="name_offset_type">name_offset</TD></TR>
					<TR><TD PORT="value_pos">4</TD><TD PORT="value_size">4</TD><TD>u4</TD><TD PORT="value_type">value</TD></TR>
					<TR><TD PORT="size_pos">8</TD><TD PORT="size_size">4</TD><TD>u4</TD><TD PORT="size_type">size</TD></TR>
					<TR><TD PORT="info_pos">12</TD><TD PORT="info_size">1</TD><TD>u1</TD><TD PORT="info_type">info</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="shndx_pos">14</TD><TD PORT="shndx_size">2</TD><TD>u2</TD><TD PORT="shndx_type">shndx</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(ASCII)</TD><TD PORT="entries_type">entries</TD></TR>
					<TR><TD COLSPAN="4" PORT="entries__repeat">repeat to end of stream</TD></TR>
				</TABLE>>];
			}
		}
	}
	elf__seq:header_type -> endian_elf__seq [style=bold];
	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"];
	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"];
	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"];
	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:program_header_entry_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:qty_program_header_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:section_header_entry_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:qty_section_header_type -> endian_elf__inst__section_headers:section_headers__repeat [color="#404040"];
	section_header__seq:ofs_body_type -> endian_elf__inst__strings:strings_pos [color="#404040"];
	section_header__seq:len_body_type -> endian_elf__inst__strings:strings_size [color="#404040"];
	endian_elf__inst__strings:strings_type -> strings_struct__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__seq:offset_type -> program_header__inst__dynamic:dynamic_pos [color="#404040"];
	program_header__seq:filesz_type -> program_header__inst__dynamic:dynamic_size [color="#404040"];
	program_header__inst__dynamic:dynamic_type -> dynamic_section__seq [style=bold];
	program_header__inst__flags_obj:flags_obj_type -> phdr_type_flags__seq [style=bold];
	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__seq:tag_type -> dynamic_section_entry__inst__tag_enum [color="#404040"];
	dynamic_section_entry__inst__flag_1_values:flag_1_values_type -> dt_flag_1_values__seq [style=bold];
	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 -> dynamic_section__seq [style=bold];
	section_header__inst__body_body_switch:case1 -> strings_struct__seq [style=bold];
	section_header__inst__body_body_switch:case2 -> strings_struct__seq [style=bold];
	section_header__inst__body_body_switch:case3 -> dynsym_section__seq [style=bold];
	section_header__seq:type_type -> section_header__inst__body:body_type [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];
	dynamic_section__seq:entries_type -> dynamic_section_entry__seq [style=bold];
	dynsym_section__seq:entries_type -> dynsym_section__seq_entries_switch [style=bold];
	dynsym_section__seq_entries_switch:case0 -> dynsym_section_entry32__seq [style=bold];
	dynsym_section__seq_entries_switch:case1 -> dynsym_section_entry64__seq [style=bold];
	elf__seq:bits_type -> dynsym_section__seq:entries_type [color="#404040"];
}