.. _zw_vocabulary_dwarf: Dwarf vocabulary ================ .. include:: zw_vocabulary_dwarf-blurb.txt .. _zw_vocabulary_dwarf type T_ABBREV: T_ABBREV -------- Values of this type represent individual abbreviations found in abbreviation units:: $ dwgrep ./tests/a1.out -e 'unit root abbrev' [1] offset:0, children:yes, tag:compile_unit 0 producer (GNU_strp_alt) 0x3 language (data1) 0x5 name (GNU_strp_alt) 0x8 comp_dir (GNU_strp_alt) 0xb low_pc (addr) 0xd high_pc (addr) 0xf stmt_list (data4) Applicable words ................ :ref:`\!AT_* `, :ref:`\!DW_AT_* `, :ref:`\!DW_TAG_* `, :ref:`\!TAG_* `, :ref:`\!haschildren `, :ref:`\?AT_* `, :ref:`\?DW_AT_* `, :ref:`\?DW_TAG_* `, :ref:`\?TAG_* `, :ref:`\?haschildren `, :ref:`\attribute `, :ref:`\code `, :ref:`\label `, :ref:`\offset ` .. _zw_vocabulary_dwarf type T_ABBREV_ATTR: T_ABBREV_ATTR ------------- Values of this type represent attributes attached to abbreviations:: $ dwgrep ./tests/a1.out -e 'unit root abbrev attribute' 0 producer (GNU_strp_alt) 0x3 language (data1) 0x5 name (GNU_strp_alt) 0x8 comp_dir (GNU_strp_alt) 0xb low_pc (addr) 0xd high_pc (addr) 0xf stmt_list (data4) Applicable words ................ :ref:`\!AT_* `, :ref:`\!DW_AT_* `, :ref:`\!DW_FORM_* `, :ref:`\!FORM_* `, :ref:`\?AT_* `, :ref:`\?DW_AT_* `, :ref:`\?DW_FORM_* `, :ref:`\?FORM_* `, :ref:`\form `, :ref:`\label `, :ref:`\offset ` .. _zw_vocabulary_dwarf type T_ABBREV_UNIT: T_ABBREV_UNIT ------------- Values of this type represent abbreviation units found in Dwarf files:: $ dwgrep tests/dwz-partial2-1 -e 'abbrev' abbrev unit 0 abbrev unit 0 Applicable words ................ :ref:`\entry `, :ref:`\offset ` .. _zw_vocabulary_dwarf type T_ASET: T_ASET ------ Values of this type contain sets of addresses. They are used for representing address ranges of all sorts. They behave a bit like sequences of constants, but calling ``elem`` is not advised unless you can be sure that the address range is not excessively large:: $ dwgrep ./tests/bitcount.o -e 'entry @AT_location address' [0x10000, 0x10017) [0x10017, 0x1001a) [0x1001a, 0x10020) [0x10000, 0x10007) [0x10007, 0x1001e) [0x1001e, 0x10020) Address sets don't have to be continuous. Applicable words ................ :ref:`\!contains `, :ref:`\!empty `, :ref:`\!overlaps `, :ref:`\?contains `, :ref:`\?empty `, :ref:`\?overlaps `, :ref:`\add `, :ref:`\elem `, :ref:`\high `, :ref:`\length `, :ref:`\low `, :ref:`\overlap `, :ref:`\range `, :ref:`\relem `, :ref:`\sub ` .. _zw_vocabulary_dwarf type T_ATTR: T_ATTR ------ Values of this type represent attributes attached to DIE's:: $ dwgrep ./tests/a1.out -e 'unit root attribute' producer (GNU_strp_alt) GNU C 4.6.3 20120306 (Red Hat 4.6.3-2); language (data1) DW_LANG_C89; name (GNU_strp_alt) foo.c; comp_dir (GNU_strp_alt) /home/petr/proj/dwgrep; low_pc (addr) 0x4004b2; high_pc (addr) 0x4004b8; stmt_list (data4) 0; Applicable words ................ :ref:`\!AT_* `, :ref:`\!DW_AT_* `, :ref:`\!DW_FORM_* `, :ref:`\!FORM_* `, :ref:`\?AT_* `, :ref:`\?DW_AT_* `, :ref:`\?DW_FORM_* `, :ref:`\?FORM_* `, :ref:`\address `, :ref:`\cooked `, :ref:`\form `, :ref:`\label `, :ref:`\raw `, :ref:`\unit `, :ref:`\value ` .. _zw_vocabulary_dwarf type T_CU: T_CU ---- Values of this type represent compile units, partial units and type units found in Dwarf files:: $ dwgrep tests/dwz-partial2-1 -e 'unit' CU 0x1f CU 0x8a CU 0xdc Applicable words ................ :ref:`\abbrev `, :ref:`\cooked `, :ref:`\entry `, :ref:`\offset `, :ref:`\raw `, :ref:`\root `, :ref:`\version ` .. _zw_vocabulary_dwarf type T_DIE: T_DIE ----- Values of this type represent debug info entries, or DIE's, found in CU's:: $ dwgrep ./tests/a1.out -e 'unit root' [b] compile_unit producer (GNU_strp_alt) GNU C 4.6.3 20120306 (Red Hat 4.6.3-2); language (data1) DW_LANG_C89; name (GNU_strp_alt) foo.c; comp_dir (GNU_strp_alt) /home/petr/proj/dwgrep; low_pc (addr) 0x4004b2; high_pc (addr) 0x4004b8; stmt_list (data4) 0; Applicable words ................ :ref:`\!AT_* `, :ref:`\!DW_AT_* `, :ref:`\!DW_TAG_* `, :ref:`\!TAG_* `, :ref:`\!haschildren `, :ref:`\!root `, :ref:`\?AT_* `, :ref:`\?DW_AT_* `, :ref:`\?DW_TAG_* `, :ref:`\?TAG_* `, :ref:`\?haschildren `, :ref:`\?root `, :ref:`\@AT_* `, :ref:`\@DW_AT_* `, :ref:`\abbrev `, :ref:`\address `, :ref:`\attribute `, :ref:`\child `, :ref:`\cooked `, :ref:`\high `, :ref:`\label `, :ref:`\low `, :ref:`\name `, :ref:`\offset `, :ref:`\parent `, :ref:`\raw `, :ref:`\root `, :ref:`\unit ` .. _zw_vocabulary_dwarf type T_DWARF: T_DWARF ------- Values of this type represent opened Dwarf files:: $ dwgrep ./tests/a1.out -e '' $ dwgrep '"tests/a1.out" dwopen' If a given file contains .gnu_debugaltlink, it is subsumed by the Dwarf handle as well. Values of type Dwarf (as well as many other Dwarf-related Zwerg values) come in two flavors: cooked and raw. Raw values generally present the underlying bits faithfully, cooked ones do some amount of interpretation. For example, cooked DIE's merge ``DW_TAG_imported_unit`` nodes, and thus a given node may be presented as having more children than the underlying bits suggest. The actual ways in which the interpretation differs between raw and cooked are described at each word that makes the distinction. Two words are used for switching Dwarf back and forth: ``raw`` and ``cooked``. Applicable words ................ :ref:`\abbrev `, :ref:`\cooked `, :ref:`\entry `, :ref:`\name `, :ref:`\raw `, :ref:`\symbol `, :ref:`\unit ` .. _zw_vocabulary_dwarf type T_ELFSYM: T_ELFSYM -------- Values of this type represent ELF symbol table entries:: $ dwgrep/dwgrep dwgrep/dwgrep -e symbol [...] 89: 0x0000000060cd90 0 NOTYPE LOCAL DEFAULT __init_array_start 90: 0x0000000060cdb8 0 OBJECT LOCAL DEFAULT _DYNAMIC 91: 0x00000000405f20 1001 FUNC GLOBAL DEFAULT _ZN6dumper10dump_charpERSoPKcmNS_6formatE 92: 0x0000000060d3e0 0 NOTYPE WEAK DEFAULT data_start 93: 0x0000000060d400 280 OBJECT GLOBAL DEFAULT _ZSt3cin@@GLIBCXX_3.4 94: 0000000000000000 0 FUNC GLOBAL DEFAULT _ZNSs6appendEPKcm@@GLIBCXX_3.4 [...] Applicable words ................ :ref:`\address `, :ref:`\binding `, :ref:`\label `, :ref:`\name `, :ref:`\size `, :ref:`\value `, :ref:`\visibility ` .. _zw_vocabulary_dwarf type T_LOCLIST_ELEM: T_LOCLIST_ELEM -------------- Values of this type represent location expressions. A location expression behaves a bit like a sequence with address range attached to it. It contains location expression instructions, values of type ``T_LOCLIST_OP``:: $ dwgrep ./tests/bitcount.o -e 'entry @AT_location' 0x10000..0x10017:[0:reg5] 0x10017..0x1001a:[0:breg5<0>, 2:breg1<0>, 4:and, 5:stack_value] 0x1001a..0x10020:[0:reg5] 0x10000..0x10007:[0:lit0, 1:stack_value] 0x10007..0x1001e:[0:reg0] 0x1001e..0x10020:[0:lit0, 1:stack_value] Applicable words ................ :ref:`\!DW_OP_* `, :ref:`\!OP_* `, :ref:`\?DW_OP_* `, :ref:`\?OP_* `, :ref:`\address `, :ref:`\elem `, :ref:`\length `, :ref:`\relem ` .. _zw_vocabulary_dwarf type T_LOCLIST_OP: T_LOCLIST_OP ------------ Values of this type hold location expression instructions:: $ dwgrep ./tests/testfile_const_type -e 'entry @AT_location elem' 0:fbreg<0> 0:fbreg<0> 2:GNU_deref_type<8>/<37> 5:GNU_const_type<[25] base_type>/<[0, 0, 0x80, 0x67, 0x45, 0x23, 0x1, 0]> 16:div 17:GNU_convert<44> 19:stack_value Applicable words ................ :ref:`\!DW_OP_* `, :ref:`\!OP_* `, :ref:`\?DW_OP_* `, :ref:`\?OP_* `, :ref:`\label `, :ref:`\offset `, :ref:`\value ` .. _zw_vocabulary_dwarf !AT_*: .. _zw_vocabulary_dwarf !DW_AT_*: .. _zw_vocabulary_dwarf ?AT_*: .. _zw_vocabulary_dwarf ?DW_AT_*: !AT_*, !DW_AT_*, ?AT_*, ?DW_AT_* -------------------------------- This section describes the following words: ``?DW_AT_vtable_elem_location``, ``?DW_AT_visibility``, ``?DW_AT_virtuality``, ``?DW_AT_variable_parameter``, ``?DW_AT_use_location``, ``?DW_AT_use_UTF8``, ``?DW_AT_upper_bound``, ``?DW_AT_type``, ``?DW_AT_trampoline``, ``?DW_AT_threads_scaled``, ``?DW_AT_string_length_byte_size``, ``?DW_AT_string_length_bit_size``, ``?DW_AT_string_length``, ``?DW_AT_str_offsets_base``, ``?DW_AT_stmt_list``, ``?DW_AT_static_link``, ``?DW_AT_start_scope``, ``?DW_AT_src_info``, ``?DW_AT_src_coords``, ``?DW_AT_specification``, ``?DW_AT_small``, ``?DW_AT_signature``, ``?DW_AT_sibling``, ``?DW_AT_sf_names``, ``?DW_AT_segment``, ``?DW_AT_rvalue_reference``, ``?DW_AT_rnglists_base``, ``?DW_AT_return_addr``, ``?DW_AT_reference``, ``?DW_AT_recursive``, ``?DW_AT_rank``, ``?DW_AT_ranges``, ``?DW_AT_pure``, ``?DW_AT_prototyped``, ``?DW_AT_producer``, ``?DW_AT_priority``, ``?DW_AT_picture_string``, ``?DW_AT_ordering``, ``?DW_AT_object_pointer``, ``?DW_AT_noreturn``, ``?DW_AT_namelist_item``, ``?DW_AT_name``, ``?DW_AT_mutable``, ``?DW_AT_main_subprogram``, ``?DW_AT_macros``, ``?DW_AT_macro_info``, ``?DW_AT_mac_info``, ``?DW_AT_lower_bound``, ``?DW_AT_low_pc``, ``?DW_AT_loclists_base``, ``?DW_AT_location``, ``?DW_AT_linkage_name``, ``?DW_AT_language``, ``?DW_AT_is_optional``, ``?DW_AT_inline``, ``?DW_AT_import``, ``?DW_AT_identifier_case``, ``?DW_AT_high_pc``, ``?DW_AT_friend``, ``?DW_AT_frame_base``, ``?DW_AT_external``, ``?DW_AT_extension``, ``?DW_AT_export_symbols``, ``?DW_AT_explicit``, ``?DW_AT_enum_class``, ``?DW_AT_entry_pc``, ``?DW_AT_endianity``, ``?DW_AT_encoding``, ``?DW_AT_elemental``, ``?DW_AT_dwo_name``, ``?DW_AT_discr_value``, ``?DW_AT_discr_list``, ``?DW_AT_discr``, ``?DW_AT_digit_count``, ``?DW_AT_description``, ``?DW_AT_deleted``, ``?DW_AT_defaulted``, ``?DW_AT_default_value``, ``?DW_AT_declaration``, ``?DW_AT_decl_line``, ``?DW_AT_decl_file``, ``?DW_AT_decl_column``, ``?DW_AT_decimal_sign``, ``?DW_AT_decimal_scale``, ``?DW_AT_data_member_location``, ``?DW_AT_data_location``, ``?DW_AT_data_bit_offset``, ``?DW_AT_count``, ``?DW_AT_containing_type``, ``?DW_AT_const_value``, ``?DW_AT_const_expr``, ``?DW_AT_comp_dir``, ``?DW_AT_common_reference``, ``?DW_AT_calling_convention``, ``?DW_AT_call_value``, ``?DW_AT_call_target_clobbered``, ``?DW_AT_call_target``, ``?DW_AT_call_tail_call``, ``?DW_AT_call_return_pc``, ``?DW_AT_call_pc``, ``?DW_AT_call_parameter``, ``?DW_AT_call_origin``, ``?DW_AT_call_line``, ``?DW_AT_call_file``, ``?DW_AT_call_data_value``, ``?DW_AT_call_data_location``, ``?DW_AT_call_column``, ``?DW_AT_call_all_tail_calls``, ``?DW_AT_call_all_source_calls``, ``?DW_AT_call_all_calls``, ``?DW_AT_byte_stride``, ``?DW_AT_byte_size``, ``?DW_AT_body_end``, ``?DW_AT_body_begin``, ``?DW_AT_bit_stride``, ``?DW_AT_bit_size``, ``?DW_AT_bit_offset``, ``?DW_AT_binary_scale``, ``?DW_AT_base_types``, ``?DW_AT_associated``, ``?DW_AT_artificial``, ``?DW_AT_allocated``, ``?DW_AT_alignment``, ``?DW_AT_address_class``, ``?DW_AT_addr_base``, ``?DW_AT_accessibility``, ``?DW_AT_abstract_origin``, ``?DW_AT_MIPS_tail_loop_begin``, ``?DW_AT_MIPS_stride_elem``, ``?DW_AT_MIPS_stride_byte``, ``?DW_AT_MIPS_stride``, ``?DW_AT_MIPS_software_pipeline_depth``, ``?DW_AT_MIPS_ptr_dopetype``, ``?DW_AT_MIPS_loop_unroll_factor``, ``?DW_AT_MIPS_loop_begin``, ``?DW_AT_MIPS_linkage_name``, ``?DW_AT_MIPS_has_inlines``, ``?DW_AT_MIPS_fde``, ``?DW_AT_MIPS_epilog_begin``, ``?DW_AT_MIPS_clone_origin``, ``?DW_AT_MIPS_assumed_size``, ``?DW_AT_MIPS_assumed_shape_dopetype``, ``?DW_AT_MIPS_allocatable_dopetype``, ``?DW_AT_MIPS_abstract_name``, ``?DW_AT_GNU_vector``, ``?DW_AT_GNU_template_name``, ``?DW_AT_GNU_tail_call``, ``?DW_AT_GNU_shared_locks_required``, ``?DW_AT_GNU_ranges_base``, ``?DW_AT_GNU_pubtypes``, ``?DW_AT_GNU_pubnames``, ``?DW_AT_GNU_pt_guarded_by``, ``?DW_AT_GNU_pt_guarded``, ``?DW_AT_GNU_odr_signature``, ``?DW_AT_GNU_macros``, ``?DW_AT_GNU_locviews``, ``?DW_AT_GNU_locks_excluded``, ``?DW_AT_GNU_guarded_by``, ``?DW_AT_GNU_guarded``, ``?DW_AT_GNU_exclusive_locks_required``, ``?DW_AT_GNU_entry_view``, ``?DW_AT_GNU_dwo_name``, ``?DW_AT_GNU_dwo_id``, ``?DW_AT_GNU_deleted``, ``?DW_AT_GNU_call_site_value``, ``?DW_AT_GNU_call_site_target_clobbered``, ``?DW_AT_GNU_call_site_target``, ``?DW_AT_GNU_call_site_data_value``, ``?DW_AT_GNU_all_tail_call_sites``, ``?DW_AT_GNU_all_source_call_sites``, ``?DW_AT_GNU_all_call_sites``, ``?DW_AT_GNU_addr_base``, ``?AT_vtable_elem_location``, ``?AT_visibility``, ``?AT_virtuality``, ``?AT_variable_parameter``, ``?AT_use_location``, ``?AT_use_UTF8``, ``?AT_upper_bound``, ``?AT_type``, ``?AT_trampoline``, ``?AT_threads_scaled``, ``?AT_string_length_byte_size``, ``?AT_string_length_bit_size``, ``?AT_string_length``, ``?AT_str_offsets_base``, ``?AT_stmt_list``, ``?AT_static_link``, ``?AT_start_scope``, ``?AT_src_info``, ``?AT_src_coords``, ``?AT_specification``, ``?AT_small``, ``?AT_signature``, ``?AT_sibling``, ``?AT_sf_names``, ``?AT_segment``, ``?AT_rvalue_reference``, ``?AT_rnglists_base``, ``?AT_return_addr``, ``?AT_reference``, ``?AT_recursive``, ``?AT_rank``, ``?AT_ranges``, ``?AT_pure``, ``?AT_prototyped``, ``?AT_producer``, ``?AT_priority``, ``?AT_picture_string``, ``?AT_ordering``, ``?AT_object_pointer``, ``?AT_noreturn``, ``?AT_namelist_item``, ``?AT_name``, ``?AT_mutable``, ``?AT_main_subprogram``, ``?AT_macros``, ``?AT_macro_info``, ``?AT_mac_info``, ``?AT_lower_bound``, ``?AT_low_pc``, ``?AT_loclists_base``, ``?AT_location``, ``?AT_linkage_name``, ``?AT_language``, ``?AT_is_optional``, ``?AT_inline``, ``?AT_import``, ``?AT_identifier_case``, ``?AT_high_pc``, ``?AT_friend``, ``?AT_frame_base``, ``?AT_external``, ``?AT_extension``, ``?AT_export_symbols``, ``?AT_explicit``, ``?AT_enum_class``, ``?AT_entry_pc``, ``?AT_endianity``, ``?AT_encoding``, ``?AT_elemental``, ``?AT_dwo_name``, ``?AT_discr_value``, ``?AT_discr_list``, ``?AT_discr``, ``?AT_digit_count``, ``?AT_description``, ``?AT_deleted``, ``?AT_defaulted``, ``?AT_default_value``, ``?AT_declaration``, ``?AT_decl_line``, ``?AT_decl_file``, ``?AT_decl_column``, ``?AT_decimal_sign``, ``?AT_decimal_scale``, ``?AT_data_member_location``, ``?AT_data_location``, ``?AT_data_bit_offset``, ``?AT_count``, ``?AT_containing_type``, ``?AT_const_value``, ``?AT_const_expr``, ``?AT_comp_dir``, ``?AT_common_reference``, ``?AT_calling_convention``, ``?AT_call_value``, ``?AT_call_target_clobbered``, ``?AT_call_target``, ``?AT_call_tail_call``, ``?AT_call_return_pc``, ``?AT_call_pc``, ``?AT_call_parameter``, ``?AT_call_origin``, ``?AT_call_line``, ``?AT_call_file``, ``?AT_call_data_value``, ``?AT_call_data_location``, ``?AT_call_column``, ``?AT_call_all_tail_calls``, ``?AT_call_all_source_calls``, ``?AT_call_all_calls``, ``?AT_byte_stride``, ``?AT_byte_size``, ``?AT_body_end``, ``?AT_body_begin``, ``?AT_bit_stride``, ``?AT_bit_size``, ``?AT_bit_offset``, ``?AT_binary_scale``, ``?AT_base_types``, ``?AT_associated``, ``?AT_artificial``, ``?AT_allocated``, ``?AT_alignment``, ``?AT_address_class``, ``?AT_addr_base``, ``?AT_accessibility``, ``?AT_abstract_origin``, ``?AT_MIPS_tail_loop_begin``, ``?AT_MIPS_stride_elem``, ``?AT_MIPS_stride_byte``, ``?AT_MIPS_stride``, ``?AT_MIPS_software_pipeline_depth``, ``?AT_MIPS_ptr_dopetype``, ``?AT_MIPS_loop_unroll_factor``, ``?AT_MIPS_loop_begin``, ``?AT_MIPS_linkage_name``, ``?AT_MIPS_has_inlines``, ``?AT_MIPS_fde``, ``?AT_MIPS_epilog_begin``, ``?AT_MIPS_clone_origin``, ``?AT_MIPS_assumed_size``, ``?AT_MIPS_assumed_shape_dopetype``, ``?AT_MIPS_allocatable_dopetype``, ``?AT_MIPS_abstract_name``, ``?AT_GNU_vector``, ``?AT_GNU_template_name``, ``?AT_GNU_tail_call``, ``?AT_GNU_shared_locks_required``, ``?AT_GNU_ranges_base``, ``?AT_GNU_pubtypes``, ``?AT_GNU_pubnames``, ``?AT_GNU_pt_guarded_by``, ``?AT_GNU_pt_guarded``, ``?AT_GNU_odr_signature``, ``?AT_GNU_macros``, ``?AT_GNU_locviews``, ``?AT_GNU_locks_excluded``, ``?AT_GNU_guarded_by``, ``?AT_GNU_guarded``, ``?AT_GNU_exclusive_locks_required``, ``?AT_GNU_entry_view``, ``?AT_GNU_dwo_name``, ``?AT_GNU_dwo_id``, ``?AT_GNU_deleted``, ``?AT_GNU_call_site_value``, ``?AT_GNU_call_site_target_clobbered``, ``?AT_GNU_call_site_target``, ``?AT_GNU_call_site_data_value``, ``?AT_GNU_all_tail_call_sites``, ``?AT_GNU_all_source_call_sites``, ``?AT_GNU_all_call_sites``, ``?AT_GNU_addr_base``, ``!DW_AT_vtable_elem_location``, ``!DW_AT_visibility``, ``!DW_AT_virtuality``, ``!DW_AT_variable_parameter``, ``!DW_AT_use_location``, ``!DW_AT_use_UTF8``, ``!DW_AT_upper_bound``, ``!DW_AT_type``, ``!DW_AT_trampoline``, ``!DW_AT_threads_scaled``, ``!DW_AT_string_length_byte_size``, ``!DW_AT_string_length_bit_size``, ``!DW_AT_string_length``, ``!DW_AT_str_offsets_base``, ``!DW_AT_stmt_list``, ``!DW_AT_static_link``, ``!DW_AT_start_scope``, ``!DW_AT_src_info``, ``!DW_AT_src_coords``, ``!DW_AT_specification``, ``!DW_AT_small``, ``!DW_AT_signature``, ``!DW_AT_sibling``, ``!DW_AT_sf_names``, ``!DW_AT_segment``, ``!DW_AT_rvalue_reference``, ``!DW_AT_rnglists_base``, ``!DW_AT_return_addr``, ``!DW_AT_reference``, ``!DW_AT_recursive``, ``!DW_AT_rank``, ``!DW_AT_ranges``, ``!DW_AT_pure``, ``!DW_AT_prototyped``, ``!DW_AT_producer``, ``!DW_AT_priority``, ``!DW_AT_picture_string``, ``!DW_AT_ordering``, ``!DW_AT_object_pointer``, ``!DW_AT_noreturn``, ``!DW_AT_namelist_item``, ``!DW_AT_name``, ``!DW_AT_mutable``, ``!DW_AT_main_subprogram``, ``!DW_AT_macros``, ``!DW_AT_macro_info``, ``!DW_AT_mac_info``, ``!DW_AT_lower_bound``, ``!DW_AT_low_pc``, ``!DW_AT_loclists_base``, ``!DW_AT_location``, ``!DW_AT_linkage_name``, ``!DW_AT_language``, ``!DW_AT_is_optional``, ``!DW_AT_inline``, ``!DW_AT_import``, ``!DW_AT_identifier_case``, ``!DW_AT_high_pc``, ``!DW_AT_friend``, ``!DW_AT_frame_base``, ``!DW_AT_external``, ``!DW_AT_extension``, ``!DW_AT_export_symbols``, ``!DW_AT_explicit``, ``!DW_AT_enum_class``, ``!DW_AT_entry_pc``, ``!DW_AT_endianity``, ``!DW_AT_encoding``, ``!DW_AT_elemental``, ``!DW_AT_dwo_name``, ``!DW_AT_discr_value``, ``!DW_AT_discr_list``, ``!DW_AT_discr``, ``!DW_AT_digit_count``, ``!DW_AT_description``, ``!DW_AT_deleted``, ``!DW_AT_defaulted``, ``!DW_AT_default_value``, ``!DW_AT_declaration``, ``!DW_AT_decl_line``, ``!DW_AT_decl_file``, ``!DW_AT_decl_column``, ``!DW_AT_decimal_sign``, ``!DW_AT_decimal_scale``, ``!DW_AT_data_member_location``, ``!DW_AT_data_location``, ``!DW_AT_data_bit_offset``, ``!DW_AT_count``, ``!DW_AT_containing_type``, ``!DW_AT_const_value``, ``!DW_AT_const_expr``, ``!DW_AT_comp_dir``, ``!DW_AT_common_reference``, ``!DW_AT_calling_convention``, ``!DW_AT_call_value``, ``!DW_AT_call_target_clobbered``, ``!DW_AT_call_target``, ``!DW_AT_call_tail_call``, ``!DW_AT_call_return_pc``, ``!DW_AT_call_pc``, ``!DW_AT_call_parameter``, ``!DW_AT_call_origin``, ``!DW_AT_call_line``, ``!DW_AT_call_file``, ``!DW_AT_call_data_value``, ``!DW_AT_call_data_location``, ``!DW_AT_call_column``, ``!DW_AT_call_all_tail_calls``, ``!DW_AT_call_all_source_calls``, ``!DW_AT_call_all_calls``, ``!DW_AT_byte_stride``, ``!DW_AT_byte_size``, ``!DW_AT_body_end``, ``!DW_AT_body_begin``, ``!DW_AT_bit_stride``, ``!DW_AT_bit_size``, ``!DW_AT_bit_offset``, ``!DW_AT_binary_scale``, ``!DW_AT_base_types``, ``!DW_AT_associated``, ``!DW_AT_artificial``, ``!DW_AT_allocated``, ``!DW_AT_alignment``, ``!DW_AT_address_class``, ``!DW_AT_addr_base``, ``!DW_AT_accessibility``, ``!DW_AT_abstract_origin``, ``!DW_AT_MIPS_tail_loop_begin``, ``!DW_AT_MIPS_stride_elem``, ``!DW_AT_MIPS_stride_byte``, ``!DW_AT_MIPS_stride``, ``!DW_AT_MIPS_software_pipeline_depth``, ``!DW_AT_MIPS_ptr_dopetype``, ``!DW_AT_MIPS_loop_unroll_factor``, ``!DW_AT_MIPS_loop_begin``, ``!DW_AT_MIPS_linkage_name``, ``!DW_AT_MIPS_has_inlines``, ``!DW_AT_MIPS_fde``, ``!DW_AT_MIPS_epilog_begin``, ``!DW_AT_MIPS_clone_origin``, ``!DW_AT_MIPS_assumed_size``, ``!DW_AT_MIPS_assumed_shape_dopetype``, ``!DW_AT_MIPS_allocatable_dopetype``, ``!DW_AT_MIPS_abstract_name``, ``!DW_AT_GNU_vector``, ``!DW_AT_GNU_template_name``, ``!DW_AT_GNU_tail_call``, ``!DW_AT_GNU_shared_locks_required``, ``!DW_AT_GNU_ranges_base``, ``!DW_AT_GNU_pubtypes``, ``!DW_AT_GNU_pubnames``, ``!DW_AT_GNU_pt_guarded_by``, ``!DW_AT_GNU_pt_guarded``, ``!DW_AT_GNU_odr_signature``, ``!DW_AT_GNU_macros``, ``!DW_AT_GNU_locviews``, ``!DW_AT_GNU_locks_excluded``, ``!DW_AT_GNU_guarded_by``, ``!DW_AT_GNU_guarded``, ``!DW_AT_GNU_exclusive_locks_required``, ``!DW_AT_GNU_entry_view``, ``!DW_AT_GNU_dwo_name``, ``!DW_AT_GNU_dwo_id``, ``!DW_AT_GNU_deleted``, ``!DW_AT_GNU_call_site_value``, ``!DW_AT_GNU_call_site_target_clobbered``, ``!DW_AT_GNU_call_site_target``, ``!DW_AT_GNU_call_site_data_value``, ``!DW_AT_GNU_all_tail_call_sites``, ``!DW_AT_GNU_all_source_call_sites``, ``!DW_AT_GNU_all_call_sites``, ``!DW_AT_GNU_addr_base``, ``!AT_vtable_elem_location``, ``!AT_visibility``, ``!AT_virtuality``, ``!AT_variable_parameter``, ``!AT_use_location``, ``!AT_use_UTF8``, ``!AT_upper_bound``, ``!AT_type``, ``!AT_trampoline``, ``!AT_threads_scaled``, ``!AT_string_length_byte_size``, ``!AT_string_length_bit_size``, ``!AT_string_length``, ``!AT_str_offsets_base``, ``!AT_stmt_list``, ``!AT_static_link``, ``!AT_start_scope``, ``!AT_src_info``, ``!AT_src_coords``, ``!AT_specification``, ``!AT_small``, ``!AT_signature``, ``!AT_sibling``, ``!AT_sf_names``, ``!AT_segment``, ``!AT_rvalue_reference``, ``!AT_rnglists_base``, ``!AT_return_addr``, ``!AT_reference``, ``!AT_recursive``, ``!AT_rank``, ``!AT_ranges``, ``!AT_pure``, ``!AT_prototyped``, ``!AT_producer``, ``!AT_priority``, ``!AT_picture_string``, ``!AT_ordering``, ``!AT_object_pointer``, ``!AT_noreturn``, ``!AT_namelist_item``, ``!AT_name``, ``!AT_mutable``, ``!AT_main_subprogram``, ``!AT_macros``, ``!AT_macro_info``, ``!AT_mac_info``, ``!AT_lower_bound``, ``!AT_low_pc``, ``!AT_loclists_base``, ``!AT_location``, ``!AT_linkage_name``, ``!AT_language``, ``!AT_is_optional``, ``!AT_inline``, ``!AT_import``, ``!AT_identifier_case``, ``!AT_high_pc``, ``!AT_friend``, ``!AT_frame_base``, ``!AT_external``, ``!AT_extension``, ``!AT_export_symbols``, ``!AT_explicit``, ``!AT_enum_class``, ``!AT_entry_pc``, ``!AT_endianity``, ``!AT_encoding``, ``!AT_elemental``, ``!AT_dwo_name``, ``!AT_discr_value``, ``!AT_discr_list``, ``!AT_discr``, ``!AT_digit_count``, ``!AT_description``, ``!AT_deleted``, ``!AT_defaulted``, ``!AT_default_value``, ``!AT_declaration``, ``!AT_decl_line``, ``!AT_decl_file``, ``!AT_decl_column``, ``!AT_decimal_sign``, ``!AT_decimal_scale``, ``!AT_data_member_location``, ``!AT_data_location``, ``!AT_data_bit_offset``, ``!AT_count``, ``!AT_containing_type``, ``!AT_const_value``, ``!AT_const_expr``, ``!AT_comp_dir``, ``!AT_common_reference``, ``!AT_calling_convention``, ``!AT_call_value``, ``!AT_call_target_clobbered``, ``!AT_call_target``, ``!AT_call_tail_call``, ``!AT_call_return_pc``, ``!AT_call_pc``, ``!AT_call_parameter``, ``!AT_call_origin``, ``!AT_call_line``, ``!AT_call_file``, ``!AT_call_data_value``, ``!AT_call_data_location``, ``!AT_call_column``, ``!AT_call_all_tail_calls``, ``!AT_call_all_source_calls``, ``!AT_call_all_calls``, ``!AT_byte_stride``, ``!AT_byte_size``, ``!AT_body_end``, ``!AT_body_begin``, ``!AT_bit_stride``, ``!AT_bit_size``, ``!AT_bit_offset``, ``!AT_binary_scale``, ``!AT_base_types``, ``!AT_associated``, ``!AT_artificial``, ``!AT_allocated``, ``!AT_alignment``, ``!AT_address_class``, ``!AT_addr_base``, ``!AT_accessibility``, ``!AT_abstract_origin``, ``!AT_MIPS_tail_loop_begin``, ``!AT_MIPS_stride_elem``, ``!AT_MIPS_stride_byte``, ``!AT_MIPS_stride``, ``!AT_MIPS_software_pipeline_depth``, ``!AT_MIPS_ptr_dopetype``, ``!AT_MIPS_loop_unroll_factor``, ``!AT_MIPS_loop_begin``, ``!AT_MIPS_linkage_name``, ``!AT_MIPS_has_inlines``, ``!AT_MIPS_fde``, ``!AT_MIPS_epilog_begin``, ``!AT_MIPS_clone_origin``, ``!AT_MIPS_assumed_size``, ``!AT_MIPS_assumed_shape_dopetype``, ``!AT_MIPS_allocatable_dopetype``, ``!AT_MIPS_abstract_name``, ``!AT_GNU_vector``, ``!AT_GNU_template_name``, ``!AT_GNU_tail_call``, ``!AT_GNU_shared_locks_required``, ``!AT_GNU_ranges_base``, ``!AT_GNU_pubtypes``, ``!AT_GNU_pubnames``, ``!AT_GNU_pt_guarded_by``, ``!AT_GNU_pt_guarded``, ``!AT_GNU_odr_signature``, ``!AT_GNU_macros``, ``!AT_GNU_locviews``, ``!AT_GNU_locks_excluded``, ``!AT_GNU_guarded_by``, ``!AT_GNU_guarded``, ``!AT_GNU_exclusive_locks_required``, ``!AT_GNU_entry_view``, ``!AT_GNU_dwo_name``, ``!AT_GNU_dwo_id``, ``!AT_GNU_deleted``, ``!AT_GNU_call_site_value``, ``!AT_GNU_call_site_target_clobbered``, ``!AT_GNU_call_site_target``, ``!AT_GNU_call_site_data_value``, ``!AT_GNU_all_tail_call_sites``, ``!AT_GNU_all_source_call_sites``, ``!AT_GNU_all_call_sites``, ``!AT_GNU_addr_base``. ``T_DIE`` ......... Inspects a DIE on TOS and holds if that DIE has the attribute indicated by this word. Note that for cooked DIE's, this word integrates attributes from abstract origins and specifications, according to the same rules as ``attribute`` uses. For example, in the following, a DIE 0x6e reports that it has an ``DW_AT_name`` attribute even if it in fact does not. This is due to ``DW_AT_specification`` bringing this in:: $ dwgrep ./tests/nullptr.o -e 'entry (offset == 0x6e) ?AT_name' [6e] subprogram specification (ref4) [3f]; inline (data1) DW_INL_declared_inlined; object_pointer (ref4) [7c]; sibling (ref4) [8b]; $ dwgrep ./tests/nullptr.o -e 'entry (offset == 0x3f)' [3f] subprogram external (flag_present) true; name (string) foo; decl_file (data1) tests/nullptr.cc; decl_line (data1) 3; declaration (flag_present) true; object_pointer (ref4) [4a]; ``T_CONST`` ........... Inspects a constant on TOS and holds if it's the same constant as indicated by this word:: $ dwgrep ./tests/nullptr.o -e ' entry (offset == 0x4a) abbrev attribute label' DW_AT_type DW_AT_artificial $ dwgrep ./tests/nullptr.o -e ' entry (offset == 0x4a) abbrev attribute label ?AT_type' DW_AT_type ``T_ABBREV_ATTR`` ................. Inspects an abbreviation attribute on TOS and holds if its name is the same as indicated by this word:: $ dwgrep ./tests/nullptr.o -e 'entry (offset == 0x3f) abbrev attribute ?AT_name' 0x33 name (string) ``T_ABBREV`` ............ Inspects an abbreviation on TOS and holds if that abbreviation has this attribute. Note that unlike with DIE's, no integration takes place with abbreviations:: $ dwgrep -c ./tests/nullptr.o -e 'entry (offset == 0x6d) abbrev ?AT_name' 0 ``T_ATTR`` .......... Inspects an attribute on TOS and holds if name of that attribute is the same as indicated by this word:: $ dwgrep ./tests/nullptr.o -e 'entry (offset == 0x6e) attribute ?AT_name' name (string) foo; .. _zw_vocabulary_dwarf !DW_FORM_*: .. _zw_vocabulary_dwarf !FORM_*: .. _zw_vocabulary_dwarf ?DW_FORM_*: .. _zw_vocabulary_dwarf ?FORM_*: !DW_FORM_*, !FORM_*, ?DW_FORM_*, ?FORM_* ---------------------------------------- This section describes the following words: ``?FORM_udata``, ``?FORM_strx4``, ``?FORM_strx3``, ``?FORM_strx2``, ``?FORM_strx1``, ``?FORM_strx``, ``?FORM_strp_sup``, ``?FORM_strp``, ``?FORM_string``, ``?FORM_sec_offset``, ``?FORM_sdata``, ``?FORM_rnglistx``, ``?FORM_ref_udata``, ``?FORM_ref_sup8``, ``?FORM_ref_sup4``, ``?FORM_ref_sig8``, ``?FORM_ref_addr``, ``?FORM_ref8``, ``?FORM_ref4``, ``?FORM_ref2``, ``?FORM_ref1``, ``?FORM_loclistx``, ``?FORM_line_strp``, ``?FORM_indirect``, ``?FORM_implicit_const``, ``?FORM_flag_present``, ``?FORM_flag``, ``?FORM_exprloc``, ``?FORM_data8``, ``?FORM_data4``, ``?FORM_data2``, ``?FORM_data16``, ``?FORM_data1``, ``?FORM_block4``, ``?FORM_block2``, ``?FORM_block1``, ``?FORM_block``, ``?FORM_addrx4``, ``?FORM_addrx3``, ``?FORM_addrx2``, ``?FORM_addrx1``, ``?FORM_addrx``, ``?FORM_addr``, ``?FORM_GNU_strp_alt``, ``?FORM_GNU_str_index``, ``?FORM_GNU_ref_alt``, ``?FORM_GNU_addr_index``, ``?DW_FORM_udata``, ``?DW_FORM_strx4``, ``?DW_FORM_strx3``, ``?DW_FORM_strx2``, ``?DW_FORM_strx1``, ``?DW_FORM_strx``, ``?DW_FORM_strp_sup``, ``?DW_FORM_strp``, ``?DW_FORM_string``, ``?DW_FORM_sec_offset``, ``?DW_FORM_sdata``, ``?DW_FORM_rnglistx``, ``?DW_FORM_ref_udata``, ``?DW_FORM_ref_sup8``, ``?DW_FORM_ref_sup4``, ``?DW_FORM_ref_sig8``, ``?DW_FORM_ref_addr``, ``?DW_FORM_ref8``, ``?DW_FORM_ref4``, ``?DW_FORM_ref2``, ``?DW_FORM_ref1``, ``?DW_FORM_loclistx``, ``?DW_FORM_line_strp``, ``?DW_FORM_indirect``, ``?DW_FORM_implicit_const``, ``?DW_FORM_flag_present``, ``?DW_FORM_flag``, ``?DW_FORM_exprloc``, ``?DW_FORM_data8``, ``?DW_FORM_data4``, ``?DW_FORM_data2``, ``?DW_FORM_data16``, ``?DW_FORM_data1``, ``?DW_FORM_block4``, ``?DW_FORM_block2``, ``?DW_FORM_block1``, ``?DW_FORM_block``, ``?DW_FORM_addrx4``, ``?DW_FORM_addrx3``, ``?DW_FORM_addrx2``, ``?DW_FORM_addrx1``, ``?DW_FORM_addrx``, ``?DW_FORM_addr``, ``?DW_FORM_GNU_strp_alt``, ``?DW_FORM_GNU_str_index``, ``?DW_FORM_GNU_ref_alt``, ``?DW_FORM_GNU_addr_index``, ``!FORM_udata``, ``!FORM_strx4``, ``!FORM_strx3``, ``!FORM_strx2``, ``!FORM_strx1``, ``!FORM_strx``, ``!FORM_strp_sup``, ``!FORM_strp``, ``!FORM_string``, ``!FORM_sec_offset``, ``!FORM_sdata``, ``!FORM_rnglistx``, ``!FORM_ref_udata``, ``!FORM_ref_sup8``, ``!FORM_ref_sup4``, ``!FORM_ref_sig8``, ``!FORM_ref_addr``, ``!FORM_ref8``, ``!FORM_ref4``, ``!FORM_ref2``, ``!FORM_ref1``, ``!FORM_loclistx``, ``!FORM_line_strp``, ``!FORM_indirect``, ``!FORM_implicit_const``, ``!FORM_flag_present``, ``!FORM_flag``, ``!FORM_exprloc``, ``!FORM_data8``, ``!FORM_data4``, ``!FORM_data2``, ``!FORM_data16``, ``!FORM_data1``, ``!FORM_block4``, ``!FORM_block2``, ``!FORM_block1``, ``!FORM_block``, ``!FORM_addrx4``, ``!FORM_addrx3``, ``!FORM_addrx2``, ``!FORM_addrx1``, ``!FORM_addrx``, ``!FORM_addr``, ``!FORM_GNU_strp_alt``, ``!FORM_GNU_str_index``, ``!FORM_GNU_ref_alt``, ``!FORM_GNU_addr_index``, ``!DW_FORM_udata``, ``!DW_FORM_strx4``, ``!DW_FORM_strx3``, ``!DW_FORM_strx2``, ``!DW_FORM_strx1``, ``!DW_FORM_strx``, ``!DW_FORM_strp_sup``, ``!DW_FORM_strp``, ``!DW_FORM_string``, ``!DW_FORM_sec_offset``, ``!DW_FORM_sdata``, ``!DW_FORM_rnglistx``, ``!DW_FORM_ref_udata``, ``!DW_FORM_ref_sup8``, ``!DW_FORM_ref_sup4``, ``!DW_FORM_ref_sig8``, ``!DW_FORM_ref_addr``, ``!DW_FORM_ref8``, ``!DW_FORM_ref4``, ``!DW_FORM_ref2``, ``!DW_FORM_ref1``, ``!DW_FORM_loclistx``, ``!DW_FORM_line_strp``, ``!DW_FORM_indirect``, ``!DW_FORM_implicit_const``, ``!DW_FORM_flag_present``, ``!DW_FORM_flag``, ``!DW_FORM_exprloc``, ``!DW_FORM_data8``, ``!DW_FORM_data4``, ``!DW_FORM_data2``, ``!DW_FORM_data16``, ``!DW_FORM_data1``, ``!DW_FORM_block4``, ``!DW_FORM_block2``, ``!DW_FORM_block1``, ``!DW_FORM_block``, ``!DW_FORM_addrx4``, ``!DW_FORM_addrx3``, ``!DW_FORM_addrx2``, ``!DW_FORM_addrx1``, ``!DW_FORM_addrx``, ``!DW_FORM_addr``, ``!DW_FORM_GNU_strp_alt``, ``!DW_FORM_GNU_str_index``, ``!DW_FORM_GNU_ref_alt``, ``!DW_FORM_GNU_addr_index``. ``T_CONST`` ........... Inspects a constant on TOS and holds if it's the same as indicated by this word. ``T_ABBREV_ATTR`` ................. Inspects an abbreviation attribute on TOS and holds if its form is the same as indicated by this word:: $ dwgrep ./tests/nullptr.o -e 'entry abbrev ?(attribute ?FORM_data2)' [17] offset:0xc9, children:no, tag:formal_parameter 0xc9 abstract_origin (ref4) 0xcb const_value (data2) ``T_ATTR`` .......... Inspects an attribute on TOS and holds if the form of that attribute is the same as indicated by this word:: $ dwgrep ./tests/nullptr.o -e 'entry ?(attribute ?FORM_data2)' [e3] formal_parameter abstract_origin (ref4) [a5]; const_value (data2) 65535; .. _zw_vocabulary_dwarf !DW_OP_*: .. _zw_vocabulary_dwarf !OP_*: .. _zw_vocabulary_dwarf ?DW_OP_*: .. _zw_vocabulary_dwarf ?OP_*: !DW_OP_*, !OP_*, ?DW_OP_*, ?OP_* -------------------------------- This section describes the following words: ``?OP_xor``, ``?OP_xderef_type``, ``?OP_xderef_size``, ``?OP_xderef``, ``?OP_swap``, ``?OP_stack_value``, ``?OP_skip``, ``?OP_shra``, ``?OP_shr``, ``?OP_shl``, ``?OP_rot``, ``?OP_reinterpret``, ``?OP_regx``, ``?OP_regval_type``, ``?OP_reg9``, ``?OP_reg8``, ``?OP_reg7``, ``?OP_reg6``, ``?OP_reg5``, ``?OP_reg4``, ``?OP_reg31``, ``?OP_reg30``, ``?OP_reg3``, ``?OP_reg29``, ``?OP_reg28``, ``?OP_reg27``, ``?OP_reg26``, ``?OP_reg25``, ``?OP_reg24``, ``?OP_reg23``, ``?OP_reg22``, ``?OP_reg21``, ``?OP_reg20``, ``?OP_reg2``, ``?OP_reg19``, ``?OP_reg18``, ``?OP_reg17``, ``?OP_reg16``, ``?OP_reg15``, ``?OP_reg14``, ``?OP_reg13``, ``?OP_reg12``, ``?OP_reg11``, ``?OP_reg10``, ``?OP_reg1``, ``?OP_reg0``, ``?OP_push_object_address``, ``?OP_plus_uconst``, ``?OP_plus``, ``?OP_piece``, ``?OP_pick``, ``?OP_over``, ``?OP_or``, ``?OP_not``, ``?OP_nop``, ``?OP_neg``, ``?OP_ne``, ``?OP_mul``, ``?OP_mod``, ``?OP_minus``, ``?OP_lt``, ``?OP_lit9``, ``?OP_lit8``, ``?OP_lit7``, ``?OP_lit6``, ``?OP_lit5``, ``?OP_lit4``, ``?OP_lit31``, ``?OP_lit30``, ``?OP_lit3``, ``?OP_lit29``, ``?OP_lit28``, ``?OP_lit27``, ``?OP_lit26``, ``?OP_lit25``, ``?OP_lit24``, ``?OP_lit23``, ``?OP_lit22``, ``?OP_lit21``, ``?OP_lit20``, ``?OP_lit2``, ``?OP_lit19``, ``?OP_lit18``, ``?OP_lit17``, ``?OP_lit16``, ``?OP_lit15``, ``?OP_lit14``, ``?OP_lit13``, ``?OP_lit12``, ``?OP_lit11``, ``?OP_lit10``, ``?OP_lit1``, ``?OP_lit0``, ``?OP_le``, ``?OP_implicit_value``, ``?OP_implicit_pointer``, ``?OP_gt``, ``?OP_ge``, ``?OP_form_tls_address``, ``?OP_fbreg``, ``?OP_eq``, ``?OP_entry_value``, ``?OP_dup``, ``?OP_drop``, ``?OP_div``, ``?OP_deref_type``, ``?OP_deref_size``, ``?OP_deref``, ``?OP_convert``, ``?OP_constx``, ``?OP_constu``, ``?OP_consts``, ``?OP_const_type``, ``?OP_const8u``, ``?OP_const8s``, ``?OP_const4u``, ``?OP_const4s``, ``?OP_const2u``, ``?OP_const2s``, ``?OP_const1u``, ``?OP_const1s``, ``?OP_call_ref``, ``?OP_call_frame_cfa``, ``?OP_call4``, ``?OP_call2``, ``?OP_bregx``, ``?OP_breg9``, ``?OP_breg8``, ``?OP_breg7``, ``?OP_breg6``, ``?OP_breg5``, ``?OP_breg4``, ``?OP_breg31``, ``?OP_breg30``, ``?OP_breg3``, ``?OP_breg29``, ``?OP_breg28``, ``?OP_breg27``, ``?OP_breg26``, ``?OP_breg25``, ``?OP_breg24``, ``?OP_breg23``, ``?OP_breg22``, ``?OP_breg21``, ``?OP_breg20``, ``?OP_breg2``, ``?OP_breg19``, ``?OP_breg18``, ``?OP_breg17``, ``?OP_breg16``, ``?OP_breg15``, ``?OP_breg14``, ``?OP_breg13``, ``?OP_breg12``, ``?OP_breg11``, ``?OP_breg10``, ``?OP_breg1``, ``?OP_breg0``, ``?OP_bra``, ``?OP_bit_piece``, ``?OP_and``, ``?OP_addrx``, ``?OP_addr``, ``?OP_abs``, ``?OP_GNU_variable_value``, ``?OP_GNU_uninit``, ``?OP_GNU_reinterpret``, ``?OP_GNU_regval_type``, ``?OP_GNU_push_tls_address``, ``?OP_GNU_parameter_ref``, ``?OP_GNU_implicit_pointer``, ``?OP_GNU_entry_value``, ``?OP_GNU_encoded_addr``, ``?OP_GNU_deref_type``, ``?OP_GNU_convert``, ``?OP_GNU_const_type``, ``?OP_GNU_const_index``, ``?OP_GNU_addr_index``, ``?DW_OP_xor``, ``?DW_OP_xderef_type``, ``?DW_OP_xderef_size``, ``?DW_OP_xderef``, ``?DW_OP_swap``, ``?DW_OP_stack_value``, ``?DW_OP_skip``, ``?DW_OP_shra``, ``?DW_OP_shr``, ``?DW_OP_shl``, ``?DW_OP_rot``, ``?DW_OP_reinterpret``, ``?DW_OP_regx``, ``?DW_OP_regval_type``, ``?DW_OP_reg9``, ``?DW_OP_reg8``, ``?DW_OP_reg7``, ``?DW_OP_reg6``, ``?DW_OP_reg5``, ``?DW_OP_reg4``, ``?DW_OP_reg31``, ``?DW_OP_reg30``, ``?DW_OP_reg3``, ``?DW_OP_reg29``, ``?DW_OP_reg28``, ``?DW_OP_reg27``, ``?DW_OP_reg26``, ``?DW_OP_reg25``, ``?DW_OP_reg24``, ``?DW_OP_reg23``, ``?DW_OP_reg22``, ``?DW_OP_reg21``, ``?DW_OP_reg20``, ``?DW_OP_reg2``, ``?DW_OP_reg19``, ``?DW_OP_reg18``, ``?DW_OP_reg17``, ``?DW_OP_reg16``, ``?DW_OP_reg15``, ``?DW_OP_reg14``, ``?DW_OP_reg13``, ``?DW_OP_reg12``, ``?DW_OP_reg11``, ``?DW_OP_reg10``, ``?DW_OP_reg1``, ``?DW_OP_reg0``, ``?DW_OP_push_object_address``, ``?DW_OP_plus_uconst``, ``?DW_OP_plus``, ``?DW_OP_piece``, ``?DW_OP_pick``, ``?DW_OP_over``, ``?DW_OP_or``, ``?DW_OP_not``, ``?DW_OP_nop``, ``?DW_OP_neg``, ``?DW_OP_ne``, ``?DW_OP_mul``, ``?DW_OP_mod``, ``?DW_OP_minus``, ``?DW_OP_lt``, ``?DW_OP_lit9``, ``?DW_OP_lit8``, ``?DW_OP_lit7``, ``?DW_OP_lit6``, ``?DW_OP_lit5``, ``?DW_OP_lit4``, ``?DW_OP_lit31``, ``?DW_OP_lit30``, ``?DW_OP_lit3``, ``?DW_OP_lit29``, ``?DW_OP_lit28``, ``?DW_OP_lit27``, ``?DW_OP_lit26``, ``?DW_OP_lit25``, ``?DW_OP_lit24``, ``?DW_OP_lit23``, ``?DW_OP_lit22``, ``?DW_OP_lit21``, ``?DW_OP_lit20``, ``?DW_OP_lit2``, ``?DW_OP_lit19``, ``?DW_OP_lit18``, ``?DW_OP_lit17``, ``?DW_OP_lit16``, ``?DW_OP_lit15``, ``?DW_OP_lit14``, ``?DW_OP_lit13``, ``?DW_OP_lit12``, ``?DW_OP_lit11``, ``?DW_OP_lit10``, ``?DW_OP_lit1``, ``?DW_OP_lit0``, ``?DW_OP_le``, ``?DW_OP_implicit_value``, ``?DW_OP_implicit_pointer``, ``?DW_OP_gt``, ``?DW_OP_ge``, ``?DW_OP_form_tls_address``, ``?DW_OP_fbreg``, ``?DW_OP_eq``, ``?DW_OP_entry_value``, ``?DW_OP_dup``, ``?DW_OP_drop``, ``?DW_OP_div``, ``?DW_OP_deref_type``, ``?DW_OP_deref_size``, ``?DW_OP_deref``, ``?DW_OP_convert``, ``?DW_OP_constx``, ``?DW_OP_constu``, ``?DW_OP_consts``, ``?DW_OP_const_type``, ``?DW_OP_const8u``, ``?DW_OP_const8s``, ``?DW_OP_const4u``, ``?DW_OP_const4s``, ``?DW_OP_const2u``, ``?DW_OP_const2s``, ``?DW_OP_const1u``, ``?DW_OP_const1s``, ``?DW_OP_call_ref``, ``?DW_OP_call_frame_cfa``, ``?DW_OP_call4``, ``?DW_OP_call2``, ``?DW_OP_bregx``, ``?DW_OP_breg9``, ``?DW_OP_breg8``, ``?DW_OP_breg7``, ``?DW_OP_breg6``, ``?DW_OP_breg5``, ``?DW_OP_breg4``, ``?DW_OP_breg31``, ``?DW_OP_breg30``, ``?DW_OP_breg3``, ``?DW_OP_breg29``, ``?DW_OP_breg28``, ``?DW_OP_breg27``, ``?DW_OP_breg26``, ``?DW_OP_breg25``, ``?DW_OP_breg24``, ``?DW_OP_breg23``, ``?DW_OP_breg22``, ``?DW_OP_breg21``, ``?DW_OP_breg20``, ``?DW_OP_breg2``, ``?DW_OP_breg19``, ``?DW_OP_breg18``, ``?DW_OP_breg17``, ``?DW_OP_breg16``, ``?DW_OP_breg15``, ``?DW_OP_breg14``, ``?DW_OP_breg13``, ``?DW_OP_breg12``, ``?DW_OP_breg11``, ``?DW_OP_breg10``, ``?DW_OP_breg1``, ``?DW_OP_breg0``, ``?DW_OP_bra``, ``?DW_OP_bit_piece``, ``?DW_OP_and``, ``?DW_OP_addrx``, ``?DW_OP_addr``, ``?DW_OP_abs``, ``?DW_OP_GNU_variable_value``, ``?DW_OP_GNU_uninit``, ``?DW_OP_GNU_reinterpret``, ``?DW_OP_GNU_regval_type``, ``?DW_OP_GNU_push_tls_address``, ``?DW_OP_GNU_parameter_ref``, ``?DW_OP_GNU_implicit_pointer``, ``?DW_OP_GNU_entry_value``, ``?DW_OP_GNU_encoded_addr``, ``?DW_OP_GNU_deref_type``, ``?DW_OP_GNU_convert``, ``?DW_OP_GNU_const_type``, ``?DW_OP_GNU_const_index``, ``?DW_OP_GNU_addr_index``, ``!OP_xor``, ``!OP_xderef_type``, ``!OP_xderef_size``, ``!OP_xderef``, ``!OP_swap``, ``!OP_stack_value``, ``!OP_skip``, ``!OP_shra``, ``!OP_shr``, ``!OP_shl``, ``!OP_rot``, ``!OP_reinterpret``, ``!OP_regx``, ``!OP_regval_type``, ``!OP_reg9``, ``!OP_reg8``, ``!OP_reg7``, ``!OP_reg6``, ``!OP_reg5``, ``!OP_reg4``, ``!OP_reg31``, ``!OP_reg30``, ``!OP_reg3``, ``!OP_reg29``, ``!OP_reg28``, ``!OP_reg27``, ``!OP_reg26``, ``!OP_reg25``, ``!OP_reg24``, ``!OP_reg23``, ``!OP_reg22``, ``!OP_reg21``, ``!OP_reg20``, ``!OP_reg2``, ``!OP_reg19``, ``!OP_reg18``, ``!OP_reg17``, ``!OP_reg16``, ``!OP_reg15``, ``!OP_reg14``, ``!OP_reg13``, ``!OP_reg12``, ``!OP_reg11``, ``!OP_reg10``, ``!OP_reg1``, ``!OP_reg0``, ``!OP_push_object_address``, ``!OP_plus_uconst``, ``!OP_plus``, ``!OP_piece``, ``!OP_pick``, ``!OP_over``, ``!OP_or``, ``!OP_not``, ``!OP_nop``, ``!OP_neg``, ``!OP_ne``, ``!OP_mul``, ``!OP_mod``, ``!OP_minus``, ``!OP_lt``, ``!OP_lit9``, ``!OP_lit8``, ``!OP_lit7``, ``!OP_lit6``, ``!OP_lit5``, ``!OP_lit4``, ``!OP_lit31``, ``!OP_lit30``, ``!OP_lit3``, ``!OP_lit29``, ``!OP_lit28``, ``!OP_lit27``, ``!OP_lit26``, ``!OP_lit25``, ``!OP_lit24``, ``!OP_lit23``, ``!OP_lit22``, ``!OP_lit21``, ``!OP_lit20``, ``!OP_lit2``, ``!OP_lit19``, ``!OP_lit18``, ``!OP_lit17``, ``!OP_lit16``, ``!OP_lit15``, ``!OP_lit14``, ``!OP_lit13``, ``!OP_lit12``, ``!OP_lit11``, ``!OP_lit10``, ``!OP_lit1``, ``!OP_lit0``, ``!OP_le``, ``!OP_implicit_value``, ``!OP_implicit_pointer``, ``!OP_gt``, ``!OP_ge``, ``!OP_form_tls_address``, ``!OP_fbreg``, ``!OP_eq``, ``!OP_entry_value``, ``!OP_dup``, ``!OP_drop``, ``!OP_div``, ``!OP_deref_type``, ``!OP_deref_size``, ``!OP_deref``, ``!OP_convert``, ``!OP_constx``, ``!OP_constu``, ``!OP_consts``, ``!OP_const_type``, ``!OP_const8u``, ``!OP_const8s``, ``!OP_const4u``, ``!OP_const4s``, ``!OP_const2u``, ``!OP_const2s``, ``!OP_const1u``, ``!OP_const1s``, ``!OP_call_ref``, ``!OP_call_frame_cfa``, ``!OP_call4``, ``!OP_call2``, ``!OP_bregx``, ``!OP_breg9``, ``!OP_breg8``, ``!OP_breg7``, ``!OP_breg6``, ``!OP_breg5``, ``!OP_breg4``, ``!OP_breg31``, ``!OP_breg30``, ``!OP_breg3``, ``!OP_breg29``, ``!OP_breg28``, ``!OP_breg27``, ``!OP_breg26``, ``!OP_breg25``, ``!OP_breg24``, ``!OP_breg23``, ``!OP_breg22``, ``!OP_breg21``, ``!OP_breg20``, ``!OP_breg2``, ``!OP_breg19``, ``!OP_breg18``, ``!OP_breg17``, ``!OP_breg16``, ``!OP_breg15``, ``!OP_breg14``, ``!OP_breg13``, ``!OP_breg12``, ``!OP_breg11``, ``!OP_breg10``, ``!OP_breg1``, ``!OP_breg0``, ``!OP_bra``, ``!OP_bit_piece``, ``!OP_and``, ``!OP_addrx``, ``!OP_addr``, ``!OP_abs``, ``!OP_GNU_variable_value``, ``!OP_GNU_uninit``, ``!OP_GNU_reinterpret``, ``!OP_GNU_regval_type``, ``!OP_GNU_push_tls_address``, ``!OP_GNU_parameter_ref``, ``!OP_GNU_implicit_pointer``, ``!OP_GNU_entry_value``, ``!OP_GNU_encoded_addr``, ``!OP_GNU_deref_type``, ``!OP_GNU_convert``, ``!OP_GNU_const_type``, ``!OP_GNU_const_index``, ``!OP_GNU_addr_index``, ``!DW_OP_xor``, ``!DW_OP_xderef_type``, ``!DW_OP_xderef_size``, ``!DW_OP_xderef``, ``!DW_OP_swap``, ``!DW_OP_stack_value``, ``!DW_OP_skip``, ``!DW_OP_shra``, ``!DW_OP_shr``, ``!DW_OP_shl``, ``!DW_OP_rot``, ``!DW_OP_reinterpret``, ``!DW_OP_regx``, ``!DW_OP_regval_type``, ``!DW_OP_reg9``, ``!DW_OP_reg8``, ``!DW_OP_reg7``, ``!DW_OP_reg6``, ``!DW_OP_reg5``, ``!DW_OP_reg4``, ``!DW_OP_reg31``, ``!DW_OP_reg30``, ``!DW_OP_reg3``, ``!DW_OP_reg29``, ``!DW_OP_reg28``, ``!DW_OP_reg27``, ``!DW_OP_reg26``, ``!DW_OP_reg25``, ``!DW_OP_reg24``, ``!DW_OP_reg23``, ``!DW_OP_reg22``, ``!DW_OP_reg21``, ``!DW_OP_reg20``, ``!DW_OP_reg2``, ``!DW_OP_reg19``, ``!DW_OP_reg18``, ``!DW_OP_reg17``, ``!DW_OP_reg16``, ``!DW_OP_reg15``, ``!DW_OP_reg14``, ``!DW_OP_reg13``, ``!DW_OP_reg12``, ``!DW_OP_reg11``, ``!DW_OP_reg10``, ``!DW_OP_reg1``, ``!DW_OP_reg0``, ``!DW_OP_push_object_address``, ``!DW_OP_plus_uconst``, ``!DW_OP_plus``, ``!DW_OP_piece``, ``!DW_OP_pick``, ``!DW_OP_over``, ``!DW_OP_or``, ``!DW_OP_not``, ``!DW_OP_nop``, ``!DW_OP_neg``, ``!DW_OP_ne``, ``!DW_OP_mul``, ``!DW_OP_mod``, ``!DW_OP_minus``, ``!DW_OP_lt``, ``!DW_OP_lit9``, ``!DW_OP_lit8``, ``!DW_OP_lit7``, ``!DW_OP_lit6``, ``!DW_OP_lit5``, ``!DW_OP_lit4``, ``!DW_OP_lit31``, ``!DW_OP_lit30``, ``!DW_OP_lit3``, ``!DW_OP_lit29``, ``!DW_OP_lit28``, ``!DW_OP_lit27``, ``!DW_OP_lit26``, ``!DW_OP_lit25``, ``!DW_OP_lit24``, ``!DW_OP_lit23``, ``!DW_OP_lit22``, ``!DW_OP_lit21``, ``!DW_OP_lit20``, ``!DW_OP_lit2``, ``!DW_OP_lit19``, ``!DW_OP_lit18``, ``!DW_OP_lit17``, ``!DW_OP_lit16``, ``!DW_OP_lit15``, ``!DW_OP_lit14``, ``!DW_OP_lit13``, ``!DW_OP_lit12``, ``!DW_OP_lit11``, ``!DW_OP_lit10``, ``!DW_OP_lit1``, ``!DW_OP_lit0``, ``!DW_OP_le``, ``!DW_OP_implicit_value``, ``!DW_OP_implicit_pointer``, ``!DW_OP_gt``, ``!DW_OP_ge``, ``!DW_OP_form_tls_address``, ``!DW_OP_fbreg``, ``!DW_OP_eq``, ``!DW_OP_entry_value``, ``!DW_OP_dup``, ``!DW_OP_drop``, ``!DW_OP_div``, ``!DW_OP_deref_type``, ``!DW_OP_deref_size``, ``!DW_OP_deref``, ``!DW_OP_convert``, ``!DW_OP_constx``, ``!DW_OP_constu``, ``!DW_OP_consts``, ``!DW_OP_const_type``, ``!DW_OP_const8u``, ``!DW_OP_const8s``, ``!DW_OP_const4u``, ``!DW_OP_const4s``, ``!DW_OP_const2u``, ``!DW_OP_const2s``, ``!DW_OP_const1u``, ``!DW_OP_const1s``, ``!DW_OP_call_ref``, ``!DW_OP_call_frame_cfa``, ``!DW_OP_call4``, ``!DW_OP_call2``, ``!DW_OP_bregx``, ``!DW_OP_breg9``, ``!DW_OP_breg8``, ``!DW_OP_breg7``, ``!DW_OP_breg6``, ``!DW_OP_breg5``, ``!DW_OP_breg4``, ``!DW_OP_breg31``, ``!DW_OP_breg30``, ``!DW_OP_breg3``, ``!DW_OP_breg29``, ``!DW_OP_breg28``, ``!DW_OP_breg27``, ``!DW_OP_breg26``, ``!DW_OP_breg25``, ``!DW_OP_breg24``, ``!DW_OP_breg23``, ``!DW_OP_breg22``, ``!DW_OP_breg21``, ``!DW_OP_breg20``, ``!DW_OP_breg2``, ``!DW_OP_breg19``, ``!DW_OP_breg18``, ``!DW_OP_breg17``, ``!DW_OP_breg16``, ``!DW_OP_breg15``, ``!DW_OP_breg14``, ``!DW_OP_breg13``, ``!DW_OP_breg12``, ``!DW_OP_breg11``, ``!DW_OP_breg10``, ``!DW_OP_breg1``, ``!DW_OP_breg0``, ``!DW_OP_bra``, ``!DW_OP_bit_piece``, ``!DW_OP_and``, ``!DW_OP_addrx``, ``!DW_OP_addr``, ``!DW_OP_abs``, ``!DW_OP_GNU_variable_value``, ``!DW_OP_GNU_uninit``, ``!DW_OP_GNU_reinterpret``, ``!DW_OP_GNU_regval_type``, ``!DW_OP_GNU_push_tls_address``, ``!DW_OP_GNU_parameter_ref``, ``!DW_OP_GNU_implicit_pointer``, ``!DW_OP_GNU_entry_value``, ``!DW_OP_GNU_encoded_addr``, ``!DW_OP_GNU_deref_type``, ``!DW_OP_GNU_convert``, ``!DW_OP_GNU_const_type``, ``!DW_OP_GNU_const_index``, ``!DW_OP_GNU_addr_index``. ``T_CONST`` ........... Inspects a constant on TOS and holds if it is the same as indicated by this word. ``T_LOCLIST_OP`` ................ Inspects a location expression instruction on TOS and holds if its opcode is the same as indicated by this word:: $ dwgrep ./tests/bitcount.o -e 'entry @AT_location elem ?OP_and' 4:and ``T_LOCLIST_ELEM`` .................. Inspects a location expression on TOS and holds if it contains an instruction with an opcode indicated by this word:: $ dwgrep ./tests/bitcount.o -e 'entry @AT_location ?OP_and' 0x10017..0x1001a:[0:breg5<0>, 2:breg1<0>, 4:and, 5:stack_value] .. _zw_vocabulary_dwarf !DW_TAG_*: .. _zw_vocabulary_dwarf !TAG_*: .. _zw_vocabulary_dwarf ?DW_TAG_*: .. _zw_vocabulary_dwarf ?TAG_*: !DW_TAG_*, !TAG_*, ?DW_TAG_*, ?TAG_* ------------------------------------ This section describes the following words: ``?TAG_with_stmt``, ``?TAG_volatile_type``, ``?TAG_variant_part``, ``?TAG_variant``, ``?TAG_variable``, ``?TAG_unspecified_type``, ``?TAG_unspecified_parameters``, ``?TAG_union_type``, ``?TAG_typedef``, ``?TAG_type_unit``, ``?TAG_try_block``, ``?TAG_thrown_type``, ``?TAG_template_value_parameter``, ``?TAG_template_type_parameter``, ``?TAG_template_alias``, ``?TAG_subroutine_type``, ``?TAG_subrange_type``, ``?TAG_subprogram``, ``?TAG_structure_type``, ``?TAG_string_type``, ``?TAG_skeleton_unit``, ``?TAG_shared_type``, ``?TAG_set_type``, ``?TAG_rvalue_reference_type``, ``?TAG_restrict_type``, ``?TAG_reference_type``, ``?TAG_ptr_to_member_type``, ``?TAG_pointer_type``, ``?TAG_partial_unit``, ``?TAG_packed_type``, ``?TAG_namespace``, ``?TAG_namelist_item``, ``?TAG_namelist``, ``?TAG_module``, ``?TAG_member``, ``?TAG_lexical_block``, ``?TAG_label``, ``?TAG_interface_type``, ``?TAG_inlined_subroutine``, ``?TAG_inheritance``, ``?TAG_imported_unit``, ``?TAG_imported_module``, ``?TAG_imported_declaration``, ``?TAG_immutable_type``, ``?TAG_generic_subrange``, ``?TAG_function_template``, ``?TAG_friend``, ``?TAG_format_label``, ``?TAG_formal_parameter``, ``?TAG_file_type``, ``?TAG_enumerator``, ``?TAG_enumeration_type``, ``?TAG_entry_point``, ``?TAG_dynamic_type``, ``?TAG_dwarf_procedure``, ``?TAG_constant``, ``?TAG_const_type``, ``?TAG_condition``, ``?TAG_compile_unit``, ``?TAG_common_inclusion``, ``?TAG_common_block``, ``?TAG_coarray_type``, ``?TAG_class_type``, ``?TAG_class_template``, ``?TAG_catch_block``, ``?TAG_call_site_parameter``, ``?TAG_call_site``, ``?TAG_base_type``, ``?TAG_atomic_type``, ``?TAG_array_type``, ``?TAG_access_declaration``, ``?TAG_MIPS_loop``, ``?TAG_GNU_template_template_param``, ``?TAG_GNU_template_parameter_pack``, ``?TAG_GNU_formal_parameter_pack``, ``?TAG_GNU_call_site_parameter``, ``?TAG_GNU_call_site``, ``?TAG_GNU_EINCL``, ``?TAG_GNU_BINCL``, ``?DW_TAG_with_stmt``, ``?DW_TAG_volatile_type``, ``?DW_TAG_variant_part``, ``?DW_TAG_variant``, ``?DW_TAG_variable``, ``?DW_TAG_unspecified_type``, ``?DW_TAG_unspecified_parameters``, ``?DW_TAG_union_type``, ``?DW_TAG_typedef``, ``?DW_TAG_type_unit``, ``?DW_TAG_try_block``, ``?DW_TAG_thrown_type``, ``?DW_TAG_template_value_parameter``, ``?DW_TAG_template_type_parameter``, ``?DW_TAG_template_alias``, ``?DW_TAG_subroutine_type``, ``?DW_TAG_subrange_type``, ``?DW_TAG_subprogram``, ``?DW_TAG_structure_type``, ``?DW_TAG_string_type``, ``?DW_TAG_skeleton_unit``, ``?DW_TAG_shared_type``, ``?DW_TAG_set_type``, ``?DW_TAG_rvalue_reference_type``, ``?DW_TAG_restrict_type``, ``?DW_TAG_reference_type``, ``?DW_TAG_ptr_to_member_type``, ``?DW_TAG_pointer_type``, ``?DW_TAG_partial_unit``, ``?DW_TAG_packed_type``, ``?DW_TAG_namespace``, ``?DW_TAG_namelist_item``, ``?DW_TAG_namelist``, ``?DW_TAG_module``, ``?DW_TAG_member``, ``?DW_TAG_lexical_block``, ``?DW_TAG_label``, ``?DW_TAG_interface_type``, ``?DW_TAG_inlined_subroutine``, ``?DW_TAG_inheritance``, ``?DW_TAG_imported_unit``, ``?DW_TAG_imported_module``, ``?DW_TAG_imported_declaration``, ``?DW_TAG_immutable_type``, ``?DW_TAG_generic_subrange``, ``?DW_TAG_function_template``, ``?DW_TAG_friend``, ``?DW_TAG_format_label``, ``?DW_TAG_formal_parameter``, ``?DW_TAG_file_type``, ``?DW_TAG_enumerator``, ``?DW_TAG_enumeration_type``, ``?DW_TAG_entry_point``, ``?DW_TAG_dynamic_type``, ``?DW_TAG_dwarf_procedure``, ``?DW_TAG_constant``, ``?DW_TAG_const_type``, ``?DW_TAG_condition``, ``?DW_TAG_compile_unit``, ``?DW_TAG_common_inclusion``, ``?DW_TAG_common_block``, ``?DW_TAG_coarray_type``, ``?DW_TAG_class_type``, ``?DW_TAG_class_template``, ``?DW_TAG_catch_block``, ``?DW_TAG_call_site_parameter``, ``?DW_TAG_call_site``, ``?DW_TAG_base_type``, ``?DW_TAG_atomic_type``, ``?DW_TAG_array_type``, ``?DW_TAG_access_declaration``, ``?DW_TAG_MIPS_loop``, ``?DW_TAG_GNU_template_template_param``, ``?DW_TAG_GNU_template_parameter_pack``, ``?DW_TAG_GNU_formal_parameter_pack``, ``?DW_TAG_GNU_call_site_parameter``, ``?DW_TAG_GNU_call_site``, ``?DW_TAG_GNU_EINCL``, ``?DW_TAG_GNU_BINCL``, ``!TAG_with_stmt``, ``!TAG_volatile_type``, ``!TAG_variant_part``, ``!TAG_variant``, ``!TAG_variable``, ``!TAG_unspecified_type``, ``!TAG_unspecified_parameters``, ``!TAG_union_type``, ``!TAG_typedef``, ``!TAG_type_unit``, ``!TAG_try_block``, ``!TAG_thrown_type``, ``!TAG_template_value_parameter``, ``!TAG_template_type_parameter``, ``!TAG_template_alias``, ``!TAG_subroutine_type``, ``!TAG_subrange_type``, ``!TAG_subprogram``, ``!TAG_structure_type``, ``!TAG_string_type``, ``!TAG_skeleton_unit``, ``!TAG_shared_type``, ``!TAG_set_type``, ``!TAG_rvalue_reference_type``, ``!TAG_restrict_type``, ``!TAG_reference_type``, ``!TAG_ptr_to_member_type``, ``!TAG_pointer_type``, ``!TAG_partial_unit``, ``!TAG_packed_type``, ``!TAG_namespace``, ``!TAG_namelist_item``, ``!TAG_namelist``, ``!TAG_module``, ``!TAG_member``, ``!TAG_lexical_block``, ``!TAG_label``, ``!TAG_interface_type``, ``!TAG_inlined_subroutine``, ``!TAG_inheritance``, ``!TAG_imported_unit``, ``!TAG_imported_module``, ``!TAG_imported_declaration``, ``!TAG_immutable_type``, ``!TAG_generic_subrange``, ``!TAG_function_template``, ``!TAG_friend``, ``!TAG_format_label``, ``!TAG_formal_parameter``, ``!TAG_file_type``, ``!TAG_enumerator``, ``!TAG_enumeration_type``, ``!TAG_entry_point``, ``!TAG_dynamic_type``, ``!TAG_dwarf_procedure``, ``!TAG_constant``, ``!TAG_const_type``, ``!TAG_condition``, ``!TAG_compile_unit``, ``!TAG_common_inclusion``, ``!TAG_common_block``, ``!TAG_coarray_type``, ``!TAG_class_type``, ``!TAG_class_template``, ``!TAG_catch_block``, ``!TAG_call_site_parameter``, ``!TAG_call_site``, ``!TAG_base_type``, ``!TAG_atomic_type``, ``!TAG_array_type``, ``!TAG_access_declaration``, ``!TAG_MIPS_loop``, ``!TAG_GNU_template_template_param``, ``!TAG_GNU_template_parameter_pack``, ``!TAG_GNU_formal_parameter_pack``, ``!TAG_GNU_call_site_parameter``, ``!TAG_GNU_call_site``, ``!TAG_GNU_EINCL``, ``!TAG_GNU_BINCL``, ``!DW_TAG_with_stmt``, ``!DW_TAG_volatile_type``, ``!DW_TAG_variant_part``, ``!DW_TAG_variant``, ``!DW_TAG_variable``, ``!DW_TAG_unspecified_type``, ``!DW_TAG_unspecified_parameters``, ``!DW_TAG_union_type``, ``!DW_TAG_typedef``, ``!DW_TAG_type_unit``, ``!DW_TAG_try_block``, ``!DW_TAG_thrown_type``, ``!DW_TAG_template_value_parameter``, ``!DW_TAG_template_type_parameter``, ``!DW_TAG_template_alias``, ``!DW_TAG_subroutine_type``, ``!DW_TAG_subrange_type``, ``!DW_TAG_subprogram``, ``!DW_TAG_structure_type``, ``!DW_TAG_string_type``, ``!DW_TAG_skeleton_unit``, ``!DW_TAG_shared_type``, ``!DW_TAG_set_type``, ``!DW_TAG_rvalue_reference_type``, ``!DW_TAG_restrict_type``, ``!DW_TAG_reference_type``, ``!DW_TAG_ptr_to_member_type``, ``!DW_TAG_pointer_type``, ``!DW_TAG_partial_unit``, ``!DW_TAG_packed_type``, ``!DW_TAG_namespace``, ``!DW_TAG_namelist_item``, ``!DW_TAG_namelist``, ``!DW_TAG_module``, ``!DW_TAG_member``, ``!DW_TAG_lexical_block``, ``!DW_TAG_label``, ``!DW_TAG_interface_type``, ``!DW_TAG_inlined_subroutine``, ``!DW_TAG_inheritance``, ``!DW_TAG_imported_unit``, ``!DW_TAG_imported_module``, ``!DW_TAG_imported_declaration``, ``!DW_TAG_immutable_type``, ``!DW_TAG_generic_subrange``, ``!DW_TAG_function_template``, ``!DW_TAG_friend``, ``!DW_TAG_format_label``, ``!DW_TAG_formal_parameter``, ``!DW_TAG_file_type``, ``!DW_TAG_enumerator``, ``!DW_TAG_enumeration_type``, ``!DW_TAG_entry_point``, ``!DW_TAG_dynamic_type``, ``!DW_TAG_dwarf_procedure``, ``!DW_TAG_constant``, ``!DW_TAG_const_type``, ``!DW_TAG_condition``, ``!DW_TAG_compile_unit``, ``!DW_TAG_common_inclusion``, ``!DW_TAG_common_block``, ``!DW_TAG_coarray_type``, ``!DW_TAG_class_type``, ``!DW_TAG_class_template``, ``!DW_TAG_catch_block``, ``!DW_TAG_call_site_parameter``, ``!DW_TAG_call_site``, ``!DW_TAG_base_type``, ``!DW_TAG_atomic_type``, ``!DW_TAG_array_type``, ``!DW_TAG_access_declaration``, ``!DW_TAG_MIPS_loop``, ``!DW_TAG_GNU_template_template_param``, ``!DW_TAG_GNU_template_parameter_pack``, ``!DW_TAG_GNU_formal_parameter_pack``, ``!DW_TAG_GNU_call_site_parameter``, ``!DW_TAG_GNU_call_site``, ``!DW_TAG_GNU_EINCL``, ``!DW_TAG_GNU_BINCL``. ``T_DIE`` ......... Inspects a DIE on TOS and holds if its tag is the same as this word indicates:: $ dwgrep ./tests/nullptr.o -e 'entry ?TAG_unspecified_type' [69] unspecified_type name (strp) decltype(nullptr); ``T_CONST`` ........... Inspects a constant on TOS and holds if it's the same constant as indicated by this word:: $ dwgrep 'DW_TAG_formal_parameter ?TAG_formal_parameter' DW_TAG_formal_parameter $ dwgrep -c 'DW_TAG_formal_parameter value ?TAG_formal_parameter' 0 ``T_ABBREV`` ............ Inspects an abbreviation on TOS and holds if its tag is the same as indicated by this word. .. _zw_vocabulary_dwarf !contains: .. _zw_vocabulary_dwarf ?contains: !contains, ?contains -------------------- ``T_ASET`` ``T_CONST`` ...................... Inspects an address set and a constant on TOS and holds for those where the constant is contained within the address set. Note that the high end of the address set is not actually considered part of the address set:: $ dwgrep 'if (0 10 aset 10 ?contains) then "yes" else "no"' no $ dwgrep 'if (0 10 aset 9 ?contains) then "yes" else "no"' yes ``T_ASET`` ``T_ASET`` ..................... Inspects two address sets on TOS, *A* and *B*, and holds for those where all of *B*'s addresses are covered by *A*. .. _zw_vocabulary_dwarf !empty: .. _zw_vocabulary_dwarf ?empty: !empty, ?empty -------------- ``T_ASET`` .......... Inspects an address set on TOS and holds if it is empty (contains no addresses). Could be written as ``!(elem)``. .. _zw_vocabulary_dwarf !haschildren: .. _zw_vocabulary_dwarf ?haschildren: !haschildren, ?haschildren -------------------------- ``T_DIE`` ......... Inspects a DIE on TOS and holds if that DIE might have children, i.e. it is the same as ``abbrev ?haschildren``. Note that even DIE's for which ?haschildren holds may not actually have children, because the actual children chain in the Dwarf file is immediately terminated. To determine whether there are actually any children, use ``?(child)``:: $ dwgrep ./tests/haschildren_childless -e 'entry (offset == 0x2d) abbrev "%s"' [2] offset:0x13, children:yes, tag:subprogram $ dwgrep ./tests/haschildren_childless -e ' entry (offset == 0x2d) if child then "yes" else "no" "%s: %s"' [2d] subprogram: no ``T_ABBREV`` ............ Inspects an abbreviation on TOS and holds if DIE's described by this abbreviation may have children. .. _zw_vocabulary_dwarf !overlaps: .. _zw_vocabulary_dwarf ?overlaps: !overlaps, ?overlaps -------------------- ``T_ASET`` ``T_ASET`` ..................... Inspects two address sets on TOS, and holds if the two address sets overlap. .. _zw_vocabulary_dwarf !root: .. _zw_vocabulary_dwarf ?root: !root, ?root ------------ ``T_DIE`` ......... Holds for root DIE's, i.e. DIE's that don't have a parental DIE. .. _zw_vocabulary_dwarf @AT_*: .. _zw_vocabulary_dwarf @DW_AT_*: @AT_*, @DW_AT_* --------------- This section describes the following words: ``@DW_AT_vtable_elem_location``, ``@DW_AT_visibility``, ``@DW_AT_virtuality``, ``@DW_AT_variable_parameter``, ``@DW_AT_use_location``, ``@DW_AT_use_UTF8``, ``@DW_AT_upper_bound``, ``@DW_AT_type``, ``@DW_AT_trampoline``, ``@DW_AT_threads_scaled``, ``@DW_AT_string_length_byte_size``, ``@DW_AT_string_length_bit_size``, ``@DW_AT_string_length``, ``@DW_AT_str_offsets_base``, ``@DW_AT_stmt_list``, ``@DW_AT_static_link``, ``@DW_AT_start_scope``, ``@DW_AT_src_info``, ``@DW_AT_src_coords``, ``@DW_AT_specification``, ``@DW_AT_small``, ``@DW_AT_signature``, ``@DW_AT_sibling``, ``@DW_AT_sf_names``, ``@DW_AT_segment``, ``@DW_AT_rvalue_reference``, ``@DW_AT_rnglists_base``, ``@DW_AT_return_addr``, ``@DW_AT_reference``, ``@DW_AT_recursive``, ``@DW_AT_rank``, ``@DW_AT_ranges``, ``@DW_AT_pure``, ``@DW_AT_prototyped``, ``@DW_AT_producer``, ``@DW_AT_priority``, ``@DW_AT_picture_string``, ``@DW_AT_ordering``, ``@DW_AT_object_pointer``, ``@DW_AT_noreturn``, ``@DW_AT_namelist_item``, ``@DW_AT_name``, ``@DW_AT_mutable``, ``@DW_AT_main_subprogram``, ``@DW_AT_macros``, ``@DW_AT_macro_info``, ``@DW_AT_mac_info``, ``@DW_AT_lower_bound``, ``@DW_AT_low_pc``, ``@DW_AT_loclists_base``, ``@DW_AT_location``, ``@DW_AT_linkage_name``, ``@DW_AT_language``, ``@DW_AT_is_optional``, ``@DW_AT_inline``, ``@DW_AT_import``, ``@DW_AT_identifier_case``, ``@DW_AT_high_pc``, ``@DW_AT_friend``, ``@DW_AT_frame_base``, ``@DW_AT_external``, ``@DW_AT_extension``, ``@DW_AT_export_symbols``, ``@DW_AT_explicit``, ``@DW_AT_enum_class``, ``@DW_AT_entry_pc``, ``@DW_AT_endianity``, ``@DW_AT_encoding``, ``@DW_AT_elemental``, ``@DW_AT_dwo_name``, ``@DW_AT_discr_value``, ``@DW_AT_discr_list``, ``@DW_AT_discr``, ``@DW_AT_digit_count``, ``@DW_AT_description``, ``@DW_AT_deleted``, ``@DW_AT_defaulted``, ``@DW_AT_default_value``, ``@DW_AT_declaration``, ``@DW_AT_decl_line``, ``@DW_AT_decl_file``, ``@DW_AT_decl_column``, ``@DW_AT_decimal_sign``, ``@DW_AT_decimal_scale``, ``@DW_AT_data_member_location``, ``@DW_AT_data_location``, ``@DW_AT_data_bit_offset``, ``@DW_AT_count``, ``@DW_AT_containing_type``, ``@DW_AT_const_value``, ``@DW_AT_const_expr``, ``@DW_AT_comp_dir``, ``@DW_AT_common_reference``, ``@DW_AT_calling_convention``, ``@DW_AT_call_value``, ``@DW_AT_call_target_clobbered``, ``@DW_AT_call_target``, ``@DW_AT_call_tail_call``, ``@DW_AT_call_return_pc``, ``@DW_AT_call_pc``, ``@DW_AT_call_parameter``, ``@DW_AT_call_origin``, ``@DW_AT_call_line``, ``@DW_AT_call_file``, ``@DW_AT_call_data_value``, ``@DW_AT_call_data_location``, ``@DW_AT_call_column``, ``@DW_AT_call_all_tail_calls``, ``@DW_AT_call_all_source_calls``, ``@DW_AT_call_all_calls``, ``@DW_AT_byte_stride``, ``@DW_AT_byte_size``, ``@DW_AT_body_end``, ``@DW_AT_body_begin``, ``@DW_AT_bit_stride``, ``@DW_AT_bit_size``, ``@DW_AT_bit_offset``, ``@DW_AT_binary_scale``, ``@DW_AT_base_types``, ``@DW_AT_associated``, ``@DW_AT_artificial``, ``@DW_AT_allocated``, ``@DW_AT_alignment``, ``@DW_AT_address_class``, ``@DW_AT_addr_base``, ``@DW_AT_accessibility``, ``@DW_AT_abstract_origin``, ``@DW_AT_MIPS_tail_loop_begin``, ``@DW_AT_MIPS_stride_elem``, ``@DW_AT_MIPS_stride_byte``, ``@DW_AT_MIPS_stride``, ``@DW_AT_MIPS_software_pipeline_depth``, ``@DW_AT_MIPS_ptr_dopetype``, ``@DW_AT_MIPS_loop_unroll_factor``, ``@DW_AT_MIPS_loop_begin``, ``@DW_AT_MIPS_linkage_name``, ``@DW_AT_MIPS_has_inlines``, ``@DW_AT_MIPS_fde``, ``@DW_AT_MIPS_epilog_begin``, ``@DW_AT_MIPS_clone_origin``, ``@DW_AT_MIPS_assumed_size``, ``@DW_AT_MIPS_assumed_shape_dopetype``, ``@DW_AT_MIPS_allocatable_dopetype``, ``@DW_AT_MIPS_abstract_name``, ``@DW_AT_GNU_vector``, ``@DW_AT_GNU_template_name``, ``@DW_AT_GNU_tail_call``, ``@DW_AT_GNU_shared_locks_required``, ``@DW_AT_GNU_ranges_base``, ``@DW_AT_GNU_pubtypes``, ``@DW_AT_GNU_pubnames``, ``@DW_AT_GNU_pt_guarded_by``, ``@DW_AT_GNU_pt_guarded``, ``@DW_AT_GNU_odr_signature``, ``@DW_AT_GNU_macros``, ``@DW_AT_GNU_locviews``, ``@DW_AT_GNU_locks_excluded``, ``@DW_AT_GNU_guarded_by``, ``@DW_AT_GNU_guarded``, ``@DW_AT_GNU_exclusive_locks_required``, ``@DW_AT_GNU_entry_view``, ``@DW_AT_GNU_dwo_name``, ``@DW_AT_GNU_dwo_id``, ``@DW_AT_GNU_deleted``, ``@DW_AT_GNU_call_site_value``, ``@DW_AT_GNU_call_site_target_clobbered``, ``@DW_AT_GNU_call_site_target``, ``@DW_AT_GNU_call_site_data_value``, ``@DW_AT_GNU_all_tail_call_sites``, ``@DW_AT_GNU_all_source_call_sites``, ``@DW_AT_GNU_all_call_sites``, ``@DW_AT_GNU_addr_base``, ``@AT_vtable_elem_location``, ``@AT_visibility``, ``@AT_virtuality``, ``@AT_variable_parameter``, ``@AT_use_location``, ``@AT_use_UTF8``, ``@AT_upper_bound``, ``@AT_type``, ``@AT_trampoline``, ``@AT_threads_scaled``, ``@AT_string_length_byte_size``, ``@AT_string_length_bit_size``, ``@AT_string_length``, ``@AT_str_offsets_base``, ``@AT_stmt_list``, ``@AT_static_link``, ``@AT_start_scope``, ``@AT_src_info``, ``@AT_src_coords``, ``@AT_specification``, ``@AT_small``, ``@AT_signature``, ``@AT_sibling``, ``@AT_sf_names``, ``@AT_segment``, ``@AT_rvalue_reference``, ``@AT_rnglists_base``, ``@AT_return_addr``, ``@AT_reference``, ``@AT_recursive``, ``@AT_rank``, ``@AT_ranges``, ``@AT_pure``, ``@AT_prototyped``, ``@AT_producer``, ``@AT_priority``, ``@AT_picture_string``, ``@AT_ordering``, ``@AT_object_pointer``, ``@AT_noreturn``, ``@AT_namelist_item``, ``@AT_name``, ``@AT_mutable``, ``@AT_main_subprogram``, ``@AT_macros``, ``@AT_macro_info``, ``@AT_mac_info``, ``@AT_lower_bound``, ``@AT_low_pc``, ``@AT_loclists_base``, ``@AT_location``, ``@AT_linkage_name``, ``@AT_language``, ``@AT_is_optional``, ``@AT_inline``, ``@AT_import``, ``@AT_identifier_case``, ``@AT_high_pc``, ``@AT_friend``, ``@AT_frame_base``, ``@AT_external``, ``@AT_extension``, ``@AT_export_symbols``, ``@AT_explicit``, ``@AT_enum_class``, ``@AT_entry_pc``, ``@AT_endianity``, ``@AT_encoding``, ``@AT_elemental``, ``@AT_dwo_name``, ``@AT_discr_value``, ``@AT_discr_list``, ``@AT_discr``, ``@AT_digit_count``, ``@AT_description``, ``@AT_deleted``, ``@AT_defaulted``, ``@AT_default_value``, ``@AT_declaration``, ``@AT_decl_line``, ``@AT_decl_file``, ``@AT_decl_column``, ``@AT_decimal_sign``, ``@AT_decimal_scale``, ``@AT_data_member_location``, ``@AT_data_location``, ``@AT_data_bit_offset``, ``@AT_count``, ``@AT_containing_type``, ``@AT_const_value``, ``@AT_const_expr``, ``@AT_comp_dir``, ``@AT_common_reference``, ``@AT_calling_convention``, ``@AT_call_value``, ``@AT_call_target_clobbered``, ``@AT_call_target``, ``@AT_call_tail_call``, ``@AT_call_return_pc``, ``@AT_call_pc``, ``@AT_call_parameter``, ``@AT_call_origin``, ``@AT_call_line``, ``@AT_call_file``, ``@AT_call_data_value``, ``@AT_call_data_location``, ``@AT_call_column``, ``@AT_call_all_tail_calls``, ``@AT_call_all_source_calls``, ``@AT_call_all_calls``, ``@AT_byte_stride``, ``@AT_byte_size``, ``@AT_body_end``, ``@AT_body_begin``, ``@AT_bit_stride``, ``@AT_bit_size``, ``@AT_bit_offset``, ``@AT_binary_scale``, ``@AT_base_types``, ``@AT_associated``, ``@AT_artificial``, ``@AT_allocated``, ``@AT_alignment``, ``@AT_address_class``, ``@AT_addr_base``, ``@AT_accessibility``, ``@AT_abstract_origin``, ``@AT_MIPS_tail_loop_begin``, ``@AT_MIPS_stride_elem``, ``@AT_MIPS_stride_byte``, ``@AT_MIPS_stride``, ``@AT_MIPS_software_pipeline_depth``, ``@AT_MIPS_ptr_dopetype``, ``@AT_MIPS_loop_unroll_factor``, ``@AT_MIPS_loop_begin``, ``@AT_MIPS_linkage_name``, ``@AT_MIPS_has_inlines``, ``@AT_MIPS_fde``, ``@AT_MIPS_epilog_begin``, ``@AT_MIPS_clone_origin``, ``@AT_MIPS_assumed_size``, ``@AT_MIPS_assumed_shape_dopetype``, ``@AT_MIPS_allocatable_dopetype``, ``@AT_MIPS_abstract_name``, ``@AT_GNU_vector``, ``@AT_GNU_template_name``, ``@AT_GNU_tail_call``, ``@AT_GNU_shared_locks_required``, ``@AT_GNU_ranges_base``, ``@AT_GNU_pubtypes``, ``@AT_GNU_pubnames``, ``@AT_GNU_pt_guarded_by``, ``@AT_GNU_pt_guarded``, ``@AT_GNU_odr_signature``, ``@AT_GNU_macros``, ``@AT_GNU_locviews``, ``@AT_GNU_locks_excluded``, ``@AT_GNU_guarded_by``, ``@AT_GNU_guarded``, ``@AT_GNU_exclusive_locks_required``, ``@AT_GNU_entry_view``, ``@AT_GNU_dwo_name``, ``@AT_GNU_dwo_id``, ``@AT_GNU_deleted``, ``@AT_GNU_call_site_value``, ``@AT_GNU_call_site_target_clobbered``, ``@AT_GNU_call_site_target``, ``@AT_GNU_call_site_data_value``, ``@AT_GNU_all_tail_call_sites``, ``@AT_GNU_all_source_call_sites``, ``@AT_GNU_all_call_sites``, ``@AT_GNU_addr_base``. ``T_DIE`` ``->*`` ``T_???`` ........................... Takes a DIE on TOS and yields value of attribute indicated by the word. Syntactic sugar for ``(attribute ?(label == AT_*) cooked value)``:: $ dwgrep ./tests/nullptr.o -e ' entry (|A| "%( A @AT_name %): %( A @AT_declaration %)")' foo: true .. _zw_vocabulary_dwarf DW_*: DW_* ---- This section describes the following words: ``DW_VIS_qualified``, ``DW_VIS_local``, ``DW_VIS_exported``, ``DW_VIRTUALITY_virtual``, ``DW_VIRTUALITY_pure_virtual``, ``DW_VIRTUALITY_none``, ``DW_TAG_with_stmt``, ``DW_TAG_volatile_type``, ``DW_TAG_variant_part``, ``DW_TAG_variant``, ``DW_TAG_variable``, ``DW_TAG_unspecified_type``, ``DW_TAG_unspecified_parameters``, ``DW_TAG_union_type``, ``DW_TAG_typedef``, ``DW_TAG_type_unit``, ``DW_TAG_try_block``, ``DW_TAG_thrown_type``, ``DW_TAG_template_value_parameter``, ``DW_TAG_template_type_parameter``, ``DW_TAG_template_alias``, ``DW_TAG_subroutine_type``, ``DW_TAG_subrange_type``, ``DW_TAG_subprogram``, ``DW_TAG_structure_type``, ``DW_TAG_string_type``, ``DW_TAG_skeleton_unit``, ``DW_TAG_shared_type``, ``DW_TAG_set_type``, ``DW_TAG_rvalue_reference_type``, ``DW_TAG_restrict_type``, ``DW_TAG_reference_type``, ``DW_TAG_ptr_to_member_type``, ``DW_TAG_pointer_type``, ``DW_TAG_partial_unit``, ``DW_TAG_packed_type``, ``DW_TAG_namespace``, ``DW_TAG_namelist_item``, ``DW_TAG_namelist``, ``DW_TAG_module``, ``DW_TAG_member``, ``DW_TAG_lexical_block``, ``DW_TAG_label``, ``DW_TAG_interface_type``, ``DW_TAG_inlined_subroutine``, ``DW_TAG_inheritance``, ``DW_TAG_imported_unit``, ``DW_TAG_imported_module``, ``DW_TAG_imported_declaration``, ``DW_TAG_immutable_type``, ``DW_TAG_generic_subrange``, ``DW_TAG_function_template``, ``DW_TAG_friend``, ``DW_TAG_format_label``, ``DW_TAG_formal_parameter``, ``DW_TAG_file_type``, ``DW_TAG_enumerator``, ``DW_TAG_enumeration_type``, ``DW_TAG_entry_point``, ``DW_TAG_dynamic_type``, ``DW_TAG_dwarf_procedure``, ``DW_TAG_constant``, ``DW_TAG_const_type``, ``DW_TAG_condition``, ``DW_TAG_compile_unit``, ``DW_TAG_common_inclusion``, ``DW_TAG_common_block``, ``DW_TAG_coarray_type``, ``DW_TAG_class_type``, ``DW_TAG_class_template``, ``DW_TAG_catch_block``, ``DW_TAG_call_site_parameter``, ``DW_TAG_call_site``, ``DW_TAG_base_type``, ``DW_TAG_atomic_type``, ``DW_TAG_array_type``, ``DW_TAG_access_declaration``, ``DW_TAG_MIPS_loop``, ``DW_TAG_GNU_template_template_param``, ``DW_TAG_GNU_template_parameter_pack``, ``DW_TAG_GNU_formal_parameter_pack``, ``DW_TAG_GNU_call_site_parameter``, ``DW_TAG_GNU_call_site``, ``DW_TAG_GNU_EINCL``, ``DW_TAG_GNU_BINCL``, ``DW_ORD_row_major``, ``DW_ORD_col_major``, ``DW_OP_xor``, ``DW_OP_xderef_type``, ``DW_OP_xderef_size``, ``DW_OP_xderef``, ``DW_OP_swap``, ``DW_OP_stack_value``, ``DW_OP_skip``, ``DW_OP_shra``, ``DW_OP_shr``, ``DW_OP_shl``, ``DW_OP_rot``, ``DW_OP_reinterpret``, ``DW_OP_regx``, ``DW_OP_regval_type``, ``DW_OP_reg9``, ``DW_OP_reg8``, ``DW_OP_reg7``, ``DW_OP_reg6``, ``DW_OP_reg5``, ``DW_OP_reg4``, ``DW_OP_reg31``, ``DW_OP_reg30``, ``DW_OP_reg3``, ``DW_OP_reg29``, ``DW_OP_reg28``, ``DW_OP_reg27``, ``DW_OP_reg26``, ``DW_OP_reg25``, ``DW_OP_reg24``, ``DW_OP_reg23``, ``DW_OP_reg22``, ``DW_OP_reg21``, ``DW_OP_reg20``, ``DW_OP_reg2``, ``DW_OP_reg19``, ``DW_OP_reg18``, ``DW_OP_reg17``, ``DW_OP_reg16``, ``DW_OP_reg15``, ``DW_OP_reg14``, ``DW_OP_reg13``, ``DW_OP_reg12``, ``DW_OP_reg11``, ``DW_OP_reg10``, ``DW_OP_reg1``, ``DW_OP_reg0``, ``DW_OP_push_object_address``, ``DW_OP_plus_uconst``, ``DW_OP_plus``, ``DW_OP_piece``, ``DW_OP_pick``, ``DW_OP_over``, ``DW_OP_or``, ``DW_OP_not``, ``DW_OP_nop``, ``DW_OP_neg``, ``DW_OP_ne``, ``DW_OP_mul``, ``DW_OP_mod``, ``DW_OP_minus``, ``DW_OP_lt``, ``DW_OP_lit9``, ``DW_OP_lit8``, ``DW_OP_lit7``, ``DW_OP_lit6``, ``DW_OP_lit5``, ``DW_OP_lit4``, ``DW_OP_lit31``, ``DW_OP_lit30``, ``DW_OP_lit3``, ``DW_OP_lit29``, ``DW_OP_lit28``, ``DW_OP_lit27``, ``DW_OP_lit26``, ``DW_OP_lit25``, ``DW_OP_lit24``, ``DW_OP_lit23``, ``DW_OP_lit22``, ``DW_OP_lit21``, ``DW_OP_lit20``, ``DW_OP_lit2``, ``DW_OP_lit19``, ``DW_OP_lit18``, ``DW_OP_lit17``, ``DW_OP_lit16``, ``DW_OP_lit15``, ``DW_OP_lit14``, ``DW_OP_lit13``, ``DW_OP_lit12``, ``DW_OP_lit11``, ``DW_OP_lit10``, ``DW_OP_lit1``, ``DW_OP_lit0``, ``DW_OP_le``, ``DW_OP_implicit_value``, ``DW_OP_implicit_pointer``, ``DW_OP_gt``, ``DW_OP_ge``, ``DW_OP_form_tls_address``, ``DW_OP_fbreg``, ``DW_OP_eq``, ``DW_OP_entry_value``, ``DW_OP_dup``, ``DW_OP_drop``, ``DW_OP_div``, ``DW_OP_deref_type``, ``DW_OP_deref_size``, ``DW_OP_deref``, ``DW_OP_convert``, ``DW_OP_constx``, ``DW_OP_constu``, ``DW_OP_consts``, ``DW_OP_const_type``, ``DW_OP_const8u``, ``DW_OP_const8s``, ``DW_OP_const4u``, ``DW_OP_const4s``, ``DW_OP_const2u``, ``DW_OP_const2s``, ``DW_OP_const1u``, ``DW_OP_const1s``, ``DW_OP_call_ref``, ``DW_OP_call_frame_cfa``, ``DW_OP_call4``, ``DW_OP_call2``, ``DW_OP_bregx``, ``DW_OP_breg9``, ``DW_OP_breg8``, ``DW_OP_breg7``, ``DW_OP_breg6``, ``DW_OP_breg5``, ``DW_OP_breg4``, ``DW_OP_breg31``, ``DW_OP_breg30``, ``DW_OP_breg3``, ``DW_OP_breg29``, ``DW_OP_breg28``, ``DW_OP_breg27``, ``DW_OP_breg26``, ``DW_OP_breg25``, ``DW_OP_breg24``, ``DW_OP_breg23``, ``DW_OP_breg22``, ``DW_OP_breg21``, ``DW_OP_breg20``, ``DW_OP_breg2``, ``DW_OP_breg19``, ``DW_OP_breg18``, ``DW_OP_breg17``, ``DW_OP_breg16``, ``DW_OP_breg15``, ``DW_OP_breg14``, ``DW_OP_breg13``, ``DW_OP_breg12``, ``DW_OP_breg11``, ``DW_OP_breg10``, ``DW_OP_breg1``, ``DW_OP_breg0``, ``DW_OP_bra``, ``DW_OP_bit_piece``, ``DW_OP_and``, ``DW_OP_addrx``, ``DW_OP_addr``, ``DW_OP_abs``, ``DW_OP_GNU_variable_value``, ``DW_OP_GNU_uninit``, ``DW_OP_GNU_reinterpret``, ``DW_OP_GNU_regval_type``, ``DW_OP_GNU_push_tls_address``, ``DW_OP_GNU_parameter_ref``, ``DW_OP_GNU_implicit_pointer``, ``DW_OP_GNU_entry_value``, ``DW_OP_GNU_encoded_addr``, ``DW_OP_GNU_deref_type``, ``DW_OP_GNU_convert``, ``DW_OP_GNU_const_type``, ``DW_OP_GNU_const_index``, ``DW_OP_GNU_addr_index``, ``DW_MACRO_GNU_undef_indirect``, ``DW_MACRO_GNU_undef``, ``DW_MACRO_GNU_transparent_include``, ``DW_MACRO_GNU_start_file``, ``DW_MACRO_GNU_end_file``, ``DW_MACRO_GNU_define_indirect``, ``DW_MACRO_GNU_define``, ``DW_MACINFO_vendor_ext``, ``DW_MACINFO_undef``, ``DW_MACINFO_start_file``, ``DW_MACINFO_end_file``, ``DW_MACINFO_define``, ``DW_LANG_UPC``, ``DW_LANG_Swift``, ``DW_LANG_Rust``, ``DW_LANG_RenderScript``, ``DW_LANG_Python``, ``DW_LANG_Pascal83``, ``DW_LANG_PLI``, ``DW_LANG_OpenCL``, ``DW_LANG_ObjC_plus_plus``, ``DW_LANG_ObjC``, ``DW_LANG_OCaml``, ``DW_LANG_Modula3``, ``DW_LANG_Modula2``, ``DW_LANG_Mips_Assembler``, ``DW_LANG_Julia``, ``DW_LANG_Java``, ``DW_LANG_Haskell``, ``DW_LANG_Go``, ``DW_LANG_Fortran95``, ``DW_LANG_Fortran90``, ``DW_LANG_Fortran77``, ``DW_LANG_Fortran08``, ``DW_LANG_Fortran03``, ``DW_LANG_Dylan``, ``DW_LANG_D``, ``DW_LANG_Cobol85``, ``DW_LANG_Cobol74``, ``DW_LANG_C_plus_plus_14``, ``DW_LANG_C_plus_plus_11``, ``DW_LANG_C_plus_plus_03``, ``DW_LANG_C_plus_plus``, ``DW_LANG_C99``, ``DW_LANG_C89``, ``DW_LANG_C11``, ``DW_LANG_C``, ``DW_LANG_BLISS``, ``DW_LANG_Ada95``, ``DW_LANG_Ada83``, ``DW_INL_not_inlined``, ``DW_INL_inlined``, ``DW_INL_declared_not_inlined``, ``DW_INL_declared_inlined``, ``DW_ID_up_case``, ``DW_ID_down_case``, ``DW_ID_case_sensitive``, ``DW_ID_case_insensitive``, ``DW_FORM_udata``, ``DW_FORM_strx4``, ``DW_FORM_strx3``, ``DW_FORM_strx2``, ``DW_FORM_strx1``, ``DW_FORM_strx``, ``DW_FORM_strp_sup``, ``DW_FORM_strp``, ``DW_FORM_string``, ``DW_FORM_sec_offset``, ``DW_FORM_sdata``, ``DW_FORM_rnglistx``, ``DW_FORM_ref_udata``, ``DW_FORM_ref_sup8``, ``DW_FORM_ref_sup4``, ``DW_FORM_ref_sig8``, ``DW_FORM_ref_addr``, ``DW_FORM_ref8``, ``DW_FORM_ref4``, ``DW_FORM_ref2``, ``DW_FORM_ref1``, ``DW_FORM_loclistx``, ``DW_FORM_line_strp``, ``DW_FORM_indirect``, ``DW_FORM_implicit_const``, ``DW_FORM_flag_present``, ``DW_FORM_flag``, ``DW_FORM_exprloc``, ``DW_FORM_data8``, ``DW_FORM_data4``, ``DW_FORM_data2``, ``DW_FORM_data16``, ``DW_FORM_data1``, ``DW_FORM_block4``, ``DW_FORM_block2``, ``DW_FORM_block1``, ``DW_FORM_block``, ``DW_FORM_addrx4``, ``DW_FORM_addrx3``, ``DW_FORM_addrx2``, ``DW_FORM_addrx1``, ``DW_FORM_addrx``, ``DW_FORM_addr``, ``DW_FORM_GNU_strp_alt``, ``DW_FORM_GNU_str_index``, ``DW_FORM_GNU_ref_alt``, ``DW_FORM_GNU_addr_index``, ``DW_END_little``, ``DW_END_default``, ``DW_END_big``, ``DW_DS_unsigned``, ``DW_DS_trailing_separate``, ``DW_DS_trailing_overpunch``, ``DW_DS_leading_separate``, ``DW_DS_leading_overpunch``, ``DW_DSC_range``, ``DW_DSC_label``, ``DW_DEFAULTED_out_of_class``, ``DW_DEFAULTED_no``, ``DW_DEFAULTED_in_class``, ``DW_CC_program``, ``DW_CC_pass_by_value``, ``DW_CC_pass_by_reference``, ``DW_CC_normal``, ``DW_CC_nocall``, ``DW_AT_vtable_elem_location``, ``DW_AT_visibility``, ``DW_AT_virtuality``, ``DW_AT_variable_parameter``, ``DW_AT_use_location``, ``DW_AT_use_UTF8``, ``DW_AT_upper_bound``, ``DW_AT_type``, ``DW_AT_trampoline``, ``DW_AT_threads_scaled``, ``DW_AT_string_length_byte_size``, ``DW_AT_string_length_bit_size``, ``DW_AT_string_length``, ``DW_AT_str_offsets_base``, ``DW_AT_stmt_list``, ``DW_AT_static_link``, ``DW_AT_start_scope``, ``DW_AT_src_info``, ``DW_AT_src_coords``, ``DW_AT_specification``, ``DW_AT_small``, ``DW_AT_signature``, ``DW_AT_sibling``, ``DW_AT_sf_names``, ``DW_AT_segment``, ``DW_AT_rvalue_reference``, ``DW_AT_rnglists_base``, ``DW_AT_return_addr``, ``DW_AT_reference``, ``DW_AT_recursive``, ``DW_AT_rank``, ``DW_AT_ranges``, ``DW_AT_pure``, ``DW_AT_prototyped``, ``DW_AT_producer``, ``DW_AT_priority``, ``DW_AT_picture_string``, ``DW_AT_ordering``, ``DW_AT_object_pointer``, ``DW_AT_noreturn``, ``DW_AT_namelist_item``, ``DW_AT_name``, ``DW_AT_mutable``, ``DW_AT_main_subprogram``, ``DW_AT_macros``, ``DW_AT_macro_info``, ``DW_AT_mac_info``, ``DW_AT_lower_bound``, ``DW_AT_low_pc``, ``DW_AT_loclists_base``, ``DW_AT_location``, ``DW_AT_linkage_name``, ``DW_AT_language``, ``DW_AT_is_optional``, ``DW_AT_inline``, ``DW_AT_import``, ``DW_AT_identifier_case``, ``DW_AT_high_pc``, ``DW_AT_friend``, ``DW_AT_frame_base``, ``DW_AT_external``, ``DW_AT_extension``, ``DW_AT_export_symbols``, ``DW_AT_explicit``, ``DW_AT_enum_class``, ``DW_AT_entry_pc``, ``DW_AT_endianity``, ``DW_AT_encoding``, ``DW_AT_elemental``, ``DW_AT_dwo_name``, ``DW_AT_discr_value``, ``DW_AT_discr_list``, ``DW_AT_discr``, ``DW_AT_digit_count``, ``DW_AT_description``, ``DW_AT_deleted``, ``DW_AT_defaulted``, ``DW_AT_default_value``, ``DW_AT_declaration``, ``DW_AT_decl_line``, ``DW_AT_decl_file``, ``DW_AT_decl_column``, ``DW_AT_decimal_sign``, ``DW_AT_decimal_scale``, ``DW_AT_data_member_location``, ``DW_AT_data_location``, ``DW_AT_data_bit_offset``, ``DW_AT_count``, ``DW_AT_containing_type``, ``DW_AT_const_value``, ``DW_AT_const_expr``, ``DW_AT_comp_dir``, ``DW_AT_common_reference``, ``DW_AT_calling_convention``, ``DW_AT_call_value``, ``DW_AT_call_target_clobbered``, ``DW_AT_call_target``, ``DW_AT_call_tail_call``, ``DW_AT_call_return_pc``, ``DW_AT_call_pc``, ``DW_AT_call_parameter``, ``DW_AT_call_origin``, ``DW_AT_call_line``, ``DW_AT_call_file``, ``DW_AT_call_data_value``, ``DW_AT_call_data_location``, ``DW_AT_call_column``, ``DW_AT_call_all_tail_calls``, ``DW_AT_call_all_source_calls``, ``DW_AT_call_all_calls``, ``DW_AT_byte_stride``, ``DW_AT_byte_size``, ``DW_AT_body_end``, ``DW_AT_body_begin``, ``DW_AT_bit_stride``, ``DW_AT_bit_size``, ``DW_AT_bit_offset``, ``DW_AT_binary_scale``, ``DW_AT_base_types``, ``DW_AT_associated``, ``DW_AT_artificial``, ``DW_AT_allocated``, ``DW_AT_alignment``, ``DW_AT_address_class``, ``DW_AT_addr_base``, ``DW_AT_accessibility``, ``DW_AT_abstract_origin``, ``DW_AT_MIPS_tail_loop_begin``, ``DW_AT_MIPS_stride_elem``, ``DW_AT_MIPS_stride_byte``, ``DW_AT_MIPS_stride``, ``DW_AT_MIPS_software_pipeline_depth``, ``DW_AT_MIPS_ptr_dopetype``, ``DW_AT_MIPS_loop_unroll_factor``, ``DW_AT_MIPS_loop_begin``, ``DW_AT_MIPS_linkage_name``, ``DW_AT_MIPS_has_inlines``, ``DW_AT_MIPS_fde``, ``DW_AT_MIPS_epilog_begin``, ``DW_AT_MIPS_clone_origin``, ``DW_AT_MIPS_assumed_size``, ``DW_AT_MIPS_assumed_shape_dopetype``, ``DW_AT_MIPS_allocatable_dopetype``, ``DW_AT_MIPS_abstract_name``, ``DW_AT_GNU_vector``, ``DW_AT_GNU_template_name``, ``DW_AT_GNU_tail_call``, ``DW_AT_GNU_shared_locks_required``, ``DW_AT_GNU_ranges_base``, ``DW_AT_GNU_pubtypes``, ``DW_AT_GNU_pubnames``, ``DW_AT_GNU_pt_guarded_by``, ``DW_AT_GNU_pt_guarded``, ``DW_AT_GNU_odr_signature``, ``DW_AT_GNU_macros``, ``DW_AT_GNU_locviews``, ``DW_AT_GNU_locks_excluded``, ``DW_AT_GNU_guarded_by``, ``DW_AT_GNU_guarded``, ``DW_AT_GNU_exclusive_locks_required``, ``DW_AT_GNU_entry_view``, ``DW_AT_GNU_dwo_name``, ``DW_AT_GNU_dwo_id``, ``DW_AT_GNU_deleted``, ``DW_AT_GNU_call_site_value``, ``DW_AT_GNU_call_site_target_clobbered``, ``DW_AT_GNU_call_site_target``, ``DW_AT_GNU_call_site_data_value``, ``DW_AT_GNU_all_tail_call_sites``, ``DW_AT_GNU_all_source_call_sites``, ``DW_AT_GNU_all_call_sites``, ``DW_AT_GNU_addr_base``, ``DW_ATE_void``, ``DW_ATE_unsigned_fixed``, ``DW_ATE_unsigned_char``, ``DW_ATE_unsigned``, ``DW_ATE_signed_fixed``, ``DW_ATE_signed_char``, ``DW_ATE_signed``, ``DW_ATE_packed_decimal``, ``DW_ATE_numeric_string``, ``DW_ATE_imaginary_float``, ``DW_ATE_float``, ``DW_ATE_edited``, ``DW_ATE_decimal_float``, ``DW_ATE_complex_float``, ``DW_ATE_boolean``, ``DW_ATE_address``, ``DW_ATE_UTF``, ``DW_ATE_UCS``, ``DW_ATE_ASCII``, ``DW_ADDR_none``, ``DW_ACCESS_public``, ``DW_ACCESS_protected``, ``DW_ACCESS_private``. These words push to the stack the Dwarf constants referenced by their name. Individual classes of constants (e.g. ``DW_TAG_``, ``DW_AT_``, ...) have distinct domains. That means that, say, ``DW_TAG_member`` and ``DW_AT_bit_size`` don't compare equal, even though they both have the same underlying value. It is possible to extract that numeric value using the word ``value``:: $ dwgrep -c -e 'DW_TAG_member == DW_AT_bit_size' 0 $ dwgrep -c -e 'DW_TAG_member value == DW_AT_bit_size value' 1 .. _zw_vocabulary_dwarf STB_*: .. _zw_vocabulary_dwarf STT_*: .. _zw_vocabulary_dwarf STV_*: STB_*, STT_*, STV_* ------------------- This section describes the following words: ``STV_PROTECTED``, ``STV_INTERNAL``, ``STV_HIDDEN``, ``STV_DEFAULT``, ``STT_TLS``, ``STT_SPARC_REGISTER``, ``STT_SECTION``, ``STT_PARISC_MILLICODE``, ``STT_OBJECT``, ``STT_NOTYPE``, ``STT_HP_STUB``, ``STT_HP_OPAQUE``, ``STT_GNU_IFUNC``, ``STT_FUNC``, ``STT_FILE``, ``STT_COMMON``, ``STT_ARM_TFUNC``, ``STT_ARM_16BIT``, ``STB_WEAK``, ``STB_MIPS_SPLIT_COMMON``, ``STB_LOCAL``, ``STB_GNU_UNIQUE``, ``STB_GLOBAL``. These words push to the stack the ELF constants referenced by their name. Individual classes of constants (e.g. ``STT_``, ``STB_``, ...) have distinct domains. Furthermore, constants related to some architectures and operating systems may have further subdivided constant domains. Thus, e.g. ``STT_ARM_TFUNC`` and ``STT_SPARC_REGISTER`` don't compare equal even though they are both ``STT_`` constants with the same underlying value:: $ dwgrep -e '[(STT_SPARC_REGISTER, STT_ARM_TFUNC, STB_MIPS_SPLIT_COMMON) value]' [13, 13, 13] $ dwgrep -c -e 'STT_SPARC_REGISTER == STT_ARM_TFUNC' 0 $ dwgrep -c -e 'STT_SPARC_REGISTER == STB_MIPS_SPLIT_COMMON' 0 .. _zw_vocabulary_dwarf abbrev: abbrev ------ ``T_CU`` ``->`` ``T_ABBREV_UNIT`` ................................. Takes a CU on TOS and yields the abbreviation unit that contains this unit's abbreviations. ``T_DIE`` ``->`` ``T_ABBREV`` ............................. Takes a DIE on TOS and yields the abbreviation that describes this DIE. ``T_DWARF`` ``->*`` ``T_ABBREV_UNIT`` ..................................... Takes a Dwarf on TOS and yields each abbreviation unit present therein. .. _zw_vocabulary_dwarf add: add --- ``T_ASET`` ``T_CONST`` ``->`` ``T_ASET`` ........................................ Takes an address set and a constant on TOS, and adds the constant to range covered by given address set:: $ dwgrep ./tests/aranges.o -e 'entry @AT_location address 1 add' [0x1, 0x2), [0x10000, 0x10010) [0x1, 0x2), [0x10010, 0x1001a) ``T_ASET`` ``T_ASET`` ``->`` ``T_ASET`` ....................................... Takes two address sets and yields an address set that covers both their ranges:: $ dwgrep ./tests/aranges.o -e ' [|D| D entry @AT_location address] (|L| L elem (pos == 0) L elem (pos == 1)) add' [0x10000, 0x1001a) .. _zw_vocabulary_dwarf address: address ------- ``T_ATTR`` ``->?`` ``T_CONST`` .............................. Takes a DIE attribute on TOS and yields an address that it references. For attributes with an address form, this simply yields the value of the attribute. For ``DW_AT_high_pc`` and ``DW_AT_entry_pc`` attributes with a constant form, this converts the relative constant value to absolute address:: $ dwgrep ./tests/bitcount.o -e 'unit root' [b] compile_unit [... snip ...] low_pc (addr) 0x10000; high_pc (data8) 32; stmt_list (sec_offset) 0; $ dwgrep ./tests/bitcount.o -e 'unit root attribute ?AT_high_pc address' 0x10020 ``T_DIE`` ``->`` ``T_ASET`` ........................... Takes a DIE on TOS and yields an address set describing address ranges covered by this DIE. (This calls dwarf_ranges under the covers.):: $ dwgrep ./tests/testfile_const_type -e 'entry (name == "main") address' [0x80482f0, 0x80482f3) ``T_LOCLIST_ELEM`` ``->`` ``T_ASET`` .................................... Takes a location list element on TOS and yields an address set describing where it is valid:: $ dwgrep ./tests/bitcount.o -e 'entry (offset == 0x91)' [91] formal_parameter name (string) u; decl_file (data1) tests/bitcount.c; decl_line (data1) 3; type (ref4) [5e]; location (sec_offset) 0x10000..0x10017:[0:reg5];0x10017..0x1001a:[0:breg5<0>, 2:breg1<0>, 4:and, 5:stack_value];0x1001a..0x10020:[0:reg5]; $ dwgrep ./tests/bitcount.o -e 'entry (offset == 0x91) @AT_location address' [0x10000, 0x10017) [0x10017, 0x1001a) [0x1001a, 0x10020) ``T_ELFSYM`` ``->`` ``T_CONST`` ............................... Takes a symbol on TOS and yields its address (``st_value`` field of ``GElf_Sym`` structure). .. _zw_vocabulary_dwarf aset: aset ---- ``T_CONST`` ``T_CONST`` ``->`` ``T_ASET`` ......................................... Takes two constants on TOS and constructs an address set that spans that range. (The higher address is not considered a part of that range though.) .. _zw_vocabulary_dwarf attribute: attribute --------- ``T_DIE`` ``->*`` ``T_ATTR`` ............................ Takes a DIE on TOS and yields its individual attributes. If it is a raw DIE, it yields only those attributes that the DIE contains. For cooked DIE's it also integrates attributes at DIE's referenced by ``DW_AT_abstract_origin`` and ``DW_AT_specification``, except those that are already present at the original DIE, or those that it makes no sense to import (as of this writing, ``DW_AT_sibling``, ``DW_AT_declaration``). Example:: $ dwgrep ./tests/nullptr.o -e 'raw entry (offset == 0x6e) attribute' specification (ref4) [3f]; inline (data1) DW_INL_declared_inlined; object_pointer (ref4) [7c]; sibling (ref4) [8b]; $ dwgrep ./tests/nullptr.o -e 'raw entry (offset == 0x3f)' [3f] subprogram external (flag_present) true; # Will be integrate. name (string) foo; # Likewise. decl_file (data1) tests/nullptr.cc; # Likewise. decl_line (data1) 3; # Likewise. declaration (flag_present) true; # Won't--meaningless. object_pointer (ref4) [4a]; # Won't--duplicate. $ dwgrep ./tests/nullptr.o -e 'entry (offset == 0x6e) attribute' specification (ref4) [3f]; inline (data1) DW_INL_declared_inlined; object_pointer (ref4) [7c]; sibling (ref4) [8b]; external (flag_present) true; name (string) foo; decl_file (data1) tests/nullptr.cc; decl_line (data1) 3; ``T_ABBREV`` ``->*`` ``T_ABBREV_ATTR`` ...................................... Takes an abbreviation on TOS and yields all its attributes:: $ dwgrep ./tests/nullptr.o -e 'entry (offset == 0x3f) abbrev attribute' 0x31 external (flag_present) 0x33 name (string) 0x35 decl_file (data1) 0x37 decl_line (data1) 0x39 declaration (flag_present) 0x3b object_pointer (ref4) .. _zw_vocabulary_dwarf binding: binding ------- ``T_ELFSYM`` ``->`` ``T_CONST`` ............................... Takes a symbol on TOS and yields its binding (a constant with domain ``STB_``). .. _zw_vocabulary_dwarf child: child ----- ``T_DIE`` ``->*`` ``T_DIE`` ........................... Takes a DIE on TOS and yields all its children. If the taken DIE is cooked, and one of the children is a ``DW_TAG_imported_unit``, the operator resolves that reference and recursively yields also all its children:: $ dwgrep ./tests/dwz-partial2-1 -e 'unit root (offset == 0xe7) raw child "%s"' [f9] imported_unit [fe] imported_unit [103] variable $ dwgrep ./tests/dwz-partial2-1 -e 'unit root (offset == 0xe7) child "%s"' [76] base_type [7d] base_type [4b] typedef [51] pointer_type [54] pointer_type [57] pointer_type [5a] const_type [5c] volatile_type [103] variable .. _zw_vocabulary_dwarf code: code ---- ``T_ABBREV`` ``->`` ``T_CONST`` ............................... Takes abbreviation on TOS and yields its code. .. _zw_vocabulary_dwarf cooked: cooked ------ ``T_CU`` ``->`` ``T_CU`` ........................ Takes a CU on TOS and yields a cooked version thereof. |RawCookeImmutable| ``T_DIE`` ``->`` ``T_DIE`` .......................... Takes a DIE on TOS and yields a cooked version thereof. |RawCookeImmutable| ``T_DWARF`` ``->`` ``T_DWARF`` .............................. Takes a Dwarf on TOS and yields a cooked version thereof. |RawCookeImmutable| ``T_ATTR`` ``->`` ``T_ATTR`` ............................ Takes an attribute on TOS and yields a cooked version thereof. |RawCookeImmutable| .. _zw_vocabulary_dwarf dwopen: dwopen ------ ``T_STR`` ``->`` ``T_DWARF`` ............................ Takes a string, which is interpreted as a file name, that file is opened, and a Dwarf value representing that file is yielded:: $ dwgrep '"dwgrep/dwgrep" dwopen unit' CU 0 .. _zw_vocabulary_dwarf elem: .. _zw_vocabulary_dwarf relem: elem, relem ----------- ``T_ASET`` ``->*`` ``T_CONST`` .............................. Take an address set on TOS and yield all its addresses. Be warned that this may be a very expensive operation. It is common that address sets cover the whole address range, which for a 64-bit architecture is a whole lot of addresses. Example:: $ dwgrep ./tests/testfile_const_type -e 'entry (name == "main") address' [0x80482f0, 0x80482f3) $ dwgrep ./tests/testfile_const_type -e 'entry (name == "main") address elem' 0x80482f0 0x80482f1 0x80482f2 ``relem`` behaves similarly, but yields addresses in reverse order. ``T_LOCLIST_ELEM`` ``->*`` ``T_LOCLIST_OP`` ........................................... Takes a location expression on TOS and yields individual operators:: $ dwgrep ./tests/testfile_const_type -e 'entry (offset == 0x57)' [57] variable name (string) w; decl_file (data1) /home/mark/src/elfutils/tests/const_type.c; decl_line (data1) 6; type (ref4) [25]; location (exprloc) 0..0xffffffffffffffff:[0:fbreg<0>, 2:GNU_deref_type<8>/<37>, [... snip ...]]; $ dwgrep ./tests/testfile_const_type -e 'entry (offset == 0x57) @AT_location elem' 0:fbreg<0> 2:GNU_deref_type<8>/<37> 5:GNU_const_type<[25] base_type>/<[0, 0, 0x80, 0x67, 0x45, 0x23, 0x1, 0]> 16:div 17:GNU_convert<44> 19:stack_value ``relem`` yields elements backwards. .. _zw_vocabulary_dwarf entry: entry ----- ``T_ABBREV_UNIT`` ``->*`` ``T_ABBREV`` ...................................... Take an abbreviation unit on TOS and yield all abbreviations that it contains:: $ dwgrep ./tests/twocus -e 'abbrev (offset == 0x34) entry "%s"' [1] offset:0x34, children:yes, tag:compile_unit [2] offset:0x47, children:yes, tag:subprogram [3] offset:0x60, children:yes, tag:subprogram [4] offset:0x71, children:no, tag:unspecified_parameters [5] offset:0x76, children:no, tag:base_type ``T_CU`` ``->*`` ``T_DIE`` .......................... Takes a CU on TOS and yield DIE's that it defines:: $ dwgrep ./tests/twocus -e 'unit (offset == 0x53) entry "%s"' [5e] compile_unit [80] subprogram [a3] subprogram [b0] unspecified_parameters [b3] base_type This operator is similar in operation to the following:: root child* The difference may lie (and as of this writing lies) in the order in which the entries are yielded. In cooked mode, it resolves any ``DW_TAG_imported_unit``'s that it finds during exploring the DIE tree. One entry can thus be explored several times, each time in a different context:: $ dwgrep ./tests/dwz-partial -e 'entry (offset == 0x14) (|A| A A parent* ?root) "%s inside %s"' [14] pointer_type inside [34] compile_unit [14] pointer_type inside [a4] compile_unit [14] pointer_type inside [e1] compile_unit [14] pointer_type inside [11e] compile_unit $ dwgrep ./tests/dwz-partial -e 'raw entry (offset == 0x14) (|A| A A parent* ?root) "%s inside %s"' [14] pointer_type inside [b] partial_unit ``T_DWARF`` ``->*`` ``T_DIE`` ............................. Takes a Dwarf on TOS and yields DIE's that it contains. This operator behaves equivalently to the following:: unit entry .. _zw_vocabulary_dwarf form: form ---- ``T_ABBREV_ATTR`` ``->`` ``T_CONST`` .................................... Takes an abbreviation attribute on TOS and yields its form. ``T_ATTR`` ``->`` ``T_CONST`` ............................. Takes an attribute on TOS and yields its form. .. _zw_vocabulary_dwarf high: high ---- ``T_DIE`` ``->?`` ``T_CONST`` ............................. Equivalent to ``@AT_high_pc``. ``T_ASET`` ``->?`` ``T_CONST`` .............................. Takes an address set on TOS and yields highest address of this set. Note that that address doesn't actually belong to the set. Doesn't yield at all if the set is empty. .. _zw_vocabulary_dwarf label: label ----- ``T_DIE`` ``->`` ``T_CONST`` ............................ Takes a DIE on TOS and yields its tag:: $ dwgrep ./tests/a1.out -e 'raw unit root label' DW_TAG_compile_unit DW_TAG_partial_unit ``T_LOCLIST_OP`` ``->`` ``T_CONST`` ................................... Takes a location expression instruction on TOS and yields the operator:: $ dwgrep ./tests/bitcount.o -e 'entry (offset == 0x91) @AT_location elem label' reg5 breg5 breg1 and stack_value reg5 ``T_ELFSYM`` ``->`` ``T_CONST`` ............................... Takes a symbol on TOS and yields its type (a constant with domain ``STT_``). ``T_ABBREV_ATTR`` ``->`` ``T_CONST`` .................................... Takes an abbreviation attribute on TOS and yields its name:: $ dwgrep ./tests/a1.out -e 'unit root abbrev attribute label' DW_AT_producer DW_AT_language DW_AT_name DW_AT_comp_dir DW_AT_low_pc DW_AT_high_pc DW_AT_stmt_list ``T_ABBREV`` ``->`` ``T_CONST`` ............................... Takes an abbreviation on TOS and yields its tag:: $ dwgrep ./tests/a1.out -e 'raw unit root abbrev label' DW_TAG_compile_unit DW_TAG_partial_unit ``T_ATTR`` ``->`` ``T_CONST`` ............................. Takes an attribute on TOS and yields its name:: $ dwgrep ./tests/a1.out -e 'unit root attribute label' DW_AT_producer DW_AT_language DW_AT_name DW_AT_comp_dir DW_AT_low_pc DW_AT_high_pc DW_AT_stmt_list .. _zw_vocabulary_dwarf length: length ------ ``T_LOCLIST_ELEM`` ``->`` ``T_CONST`` ..................................... Takes a location expression on TOS and yields number of operators in expression:: $ dwgrep ./tests/bitcount.o -e 'entry @AT_location (length == 4)' 0x10017..0x1001a:[0:breg5<0>, 2:breg1<0>, 4:and, 5:stack_value] ``T_ASET`` ``->`` ``T_CONST`` ............................. Takes an address set on TOS and yields number of addresses covered by that set:: $ dwgrep '0 0x10 aset 0x100 0x110 aset add length' 32 .. _zw_vocabulary_dwarf low: low --- ``T_DIE`` ``->?`` ``T_CONST`` ............................. Equivalent to ``@AT_low_pc``. ``T_ASET`` ``->?`` ``T_CONST`` .............................. Takes an address set on TOS and yields lowest address set in this set. Doesn't yield at all if the set is empty:: $ dwgrep ./tests/aranges.o -e 'entry @AT_location' 0x10000..0x10010:[0:reg5] 0x10010..0x1001a:[0:fbreg<-24>] $ dwgrep ./tests/aranges.o -e 'entry @AT_location address low' 0x10000 0x10010 .. _zw_vocabulary_dwarf name: name ---- ``T_DIE`` ``->?`` ``T_STR`` ........................... Equivalent to ``@AT_name``. ``T_DWARF`` ``->`` ``T_STR`` ............................ Take a Dwarf on TOS and yield its filename. Note that it may not be possible to use the reported name to reopen the Dwarf. The Dwarf may have been built in place in memory, or the file may have been deleted or replaced since the Dwarf was opened. ``T_ELFSYM`` ``->`` ``T_STR`` ............................. Takes a symbol on TOS and yields its name. .. _zw_vocabulary_dwarf offset: offset ------ ``T_CU`` ``->`` ``T_CONST`` ........................... Takes a CU on TOS and yields its offset inside the Dwarf section that it comes from:: $ dwgrep tests/twocus -e 'unit offset' 0 0x53 Note that CU offset is different from the offset of its root element:: $ dwgrep tests/twocus -e 'unit root offset' 0xb 0x5e |OffsetsNotUnique| .. |OffsetsNotUnique| replace:: Note that offset does not uniquely identify a Dwarf object, as offsets of objects from .gnu_debugaltlink files are again numbered from 0, and may conflict with those from the main file. Direct comparison of individual objects will not be fooled though. Example:: $ dwgrep tests/a1.out -e ' let A := raw unit (pos == 0); let B := raw unit (pos == 1); A B if (A == B) then "eq" else "ne"' --- ne CU 0 CU 0 ``T_DIE`` ``->`` ``T_CONST`` ............................ Takes a DIE on TOS and yields its offset inside the Dwarf section that it comes from:: $ dwgrep tests/twocus -e 'unit root offset' 0xb 0x5e |OffsetsNotUnique| Also, DIE's brought in through imports will report the same offset even though they came in through different paths. E.g. if a single DIE is selected in the same context in two different expressions, the two DIE's compare equal:: $ dwgrep tests/dwz-partial2-1 -e ' let A := [entry (offset == 0x14)] elem (pos == 0); let B := [entry (offset == 0x14)] elem (pos == 0); A B if ?eq then "==" else "!=" swap "%s: %s %s %s"' : [14] typedef == [14] typedef However if the two DIE's are taken from different contexts, they will compare unequal despite them being physically the same DIE:: $ dwgrep tests/dwz-partial2-1 -e ' let A := [entry (offset == 0x14)] elem (pos == 0); let B := [entry (offset == 0x14)] elem (pos == 1); A B if ?eq then "==" else "!=" swap "%s: %s %s %s"' : [14] typedef != [14] typedef ``T_LOCLIST_OP`` ``->`` ``T_CONST`` ................................... Takes a location list operation on TOS and yields its offset within the containing location expression:: $ dwgrep ./tests/testfile_const_type -e 'entry (offset == 0x57)' [57] variable name (string) w; decl_file (data1) /home/mark/src/elfutils/tests/const_type.c; decl_line (data1) 6; type (ref4) [25]; location (exprloc) 0..0xffffffffffffffff:[0:fbreg<0>, 2:GNU_deref_type<8>/<37>, [... snip ...]]; $ dwgrep ./tests/testfile_const_type -e 'entry (offset == 0x57) @AT_location elem offset' 0 0x2 0x5 0x10 0x11 0x13 ``T_ABBREV_ATTR`` ``->`` ``T_CONST`` .................................... Takes an abbreviation attribute on TOS and yields its offset inside the Dwarf section that it comes from:: $ dwgrep ./tests/twocus -e ' abbrev entry attribute (pos == 0) "%(offset%)\t%(dup label%)"' 0 DW_AT_producer 0x13 DW_AT_external 0x28 DW_AT_byte_size 0x34 DW_AT_producer 0x47 DW_AT_external 0x60 DW_AT_external 0x76 DW_AT_byte_size ``T_ABBREV`` ``->`` ``T_CONST`` ............................... Takes an abbreviation on TOS and yields its offset inside the Dwarf section that it comes from:: $ dwgrep ./tests/twocus -e 'abbrev entry "%(code%): %(dup offset%)"' 1: 0 2: 0x13 3: 0x28 1: 0x34 2: 0x47 3: 0x60 4: 0x71 5: 0x76 |OffsetsNotUnique| ``T_ABBREV_UNIT`` ``->`` ``T_CONST`` .................................... Takes an abbreviation unit on TOS and yields its offset inside the Dwarf section that it comes from:: $ dwgrep ./tests/twocus -e 'abbrev offset' 0 0x34 |OffsetsNotUnique| .. _zw_vocabulary_dwarf overlap: overlap ------- ``T_ASET`` ``T_ASET`` ``->`` ``T_ASET`` ....................................... Takes two address sets on TOS, and yields a (possibly empty) address set that covers those addresses that both of the address sets cover. .. _zw_vocabulary_dwarf parent: parent ------ ``T_DIE`` ``->?`` ``T_DIE`` ........................... Takes a DIE on TOS and yields its parental DIE. For cooked DIE's, in traverses parents across import points back to from which context the particular DIE was explored:: $ dwgrep ./tests/a1.out -e 'unit raw entry "%s"' [b] compile_unit [2d] imported_unit [32] subprogram [51] variable $ dwgrep ./tests/a1.out -e 'entry (offset == 0x14) "%s"' [14] typedef $ dwgrep ./tests/a1.out -e 'entry (offset == 0x14) parent "%s"' [b] compile_unit .. _zw_vocabulary_dwarf range: range ----- ``T_ASET`` ``->*`` ``T_ASET`` ............................. Takes an address set on TOS and yields all continuous ranges of that address set, presented as individual address sets:: $ dwgrep '0 0x10 aset 0x100 0x110 aset add range' [0, 0x10) [0x100, 0x110) .. _zw_vocabulary_dwarf raw: raw --- ``T_CU`` ``->`` ``T_CU`` ........................ Takes a CU on TOS and yields a raw version thereof. |RawCookeImmutable| ``T_DIE`` ``->`` ``T_DIE`` .......................... Takes a DIE on TOS and yields a raw version thereof. |RawCookeImmutable| ``T_DWARF`` ``->`` ``T_DWARF`` .............................. Takes a Dwarf on TOS and yields a raw version thereof. |RawCookeImmutable| .. |RawCookeImmutable| replace:: The words ``raw`` and ``cooked`` create a new value, they do not change a state of an existing one. The underlying bits that constitute the Dwarf data themselves are shared, but those, too, are immutable. In particular, take a look at the following example:: $ dwgrep ./tests/a1.out -e ' (|D| D raw D (|R C| [C entry] length [R entry] length))' --- 13 11 Had ``raw`` changed the value that it's applied to, the next reference to *D* would yield a raw Dwarf. But raw yields a new value and *D* is kept intact (despite the sharing of underlying bits, as mentioned). ``T_ATTR`` ``->`` ``T_ATTR`` ............................ Takes an attribute on TOS and yields a raw version thereof. |RawCookeImmutable| .. _zw_vocabulary_dwarf root: root ---- ``T_CU`` ``->`` ``T_DIE`` ......................... Takes a CU on TOS and yields its root DIE. ``T_DIE`` ``->`` ``T_DIE`` .......................... Takes a DIE on TOS and yields CU DIE of the unit that this DIE comes from. For cooked DIE's follows back through import points and yields the CU DIE of this DIE's context. .. _zw_vocabulary_dwarf size: size ---- ``T_ELFSYM`` ``->`` ``T_CONST`` ............................... Takes a symbol on TOS and yields its size. .. _zw_vocabulary_dwarf sub: sub --- ``T_ASET`` ``T_CONST`` ``->`` ``T_ASET`` ........................................ Takes an address set and a constant on TOS and yields an address set with a hole poked at the address given by the constant:: $ dwgrep ./tests/aranges.o -e 'entry @AT_location address 0x10010 sub' [0x10000, 0x10010) [0x10011, 0x1001a) ``T_ASET`` ``T_ASET`` ``->`` ``T_ASET`` ....................................... Takes two address sets *A* and *B*, and yields an address set that contains all of the *A*'s addresses except those covered by *B*. .. _zw_vocabulary_dwarf symbol: symbol ------ ``T_DWARF`` ``->*`` ``T_ELFSYM`` ................................ Takes a Dwarf on TOS and yields every symbol found in any of the symbol tables in ELF files that hosts the Dwarf data in question. .. _zw_vocabulary_dwarf unit: unit ---- ``T_DIE`` ``->`` ``T_CU`` ......................... Take a DIE on TOS and yield a unit that this DIE belongs to:: $ dwgrep ./tests/twocus -e 'unit' CU 0 CU 0x53 $ dwgrep ./tests/twocus -e 'entry (offset == 0x4b) unit' CU 0 ``T_DWARF`` ``->*`` ``T_CU`` ............................ Take a Dwarf on TOS and yield units defined therein. In raw mode, yields all units without exception, in cooked mode it only yields actual compile units (i.e. those units whose CU DIE's tag is ``DW_TAG_compile_unit``. For example:: $ dwgrep ./tests/dwz-partial -e 'raw unit root "%s"' [b] partial_unit [34] compile_unit [a4] compile_unit [e1] compile_unit [11e] compile_unit $ dwgrep ./tests/dwz-partial -e 'cooked unit root "%s"' [34] compile_unit [a4] compile_unit [e1] compile_unit [11e] compile_unit This operator is identical in operation to the following expression:: entry ?root unit ``T_ATTR`` ``->`` ``T_CU`` .......................... Take an attribute on TOS and yield a unit where the attribute originated:: $ dwgrep ./tests/twocus -e 'unit' CU 0 CU 0x53 $ dwgrep ./tests/twocus -e 'entry (offset == 0xb3) attribute unit' CU 0x53 CU 0x53 CU 0x53 .. _zw_vocabulary_dwarf value: value ----- ``T_LOCLIST_OP`` ``->*`` ``T_???`` .................................. Takes a location expression instruction on TOS and yields its operands:: $ dwgrep ./tests/aranges.o -e 'entry @AT_location elem' 0:reg5 0:fbreg<-24> $ dwgrep ./tests/aranges.o -e 'entry @AT_location elem value' -24 Operands could be of any Zwerg type, some will be e.g. DIE's. ``T_ELFSYM`` ``->`` ``T_CONST`` ............................... Takes a symbol on TOS and yields its address (``st_value`` field of ``GElf_Sym`` structure). ``T_ATTR`` ``->*`` ``T_???`` ............................ Takes an attribute on TOS and yields its value. The value can be of any Zwerg type. There can even be more than one value. In particular location expression attributes yield all the constituent location expressions:: $ dwgrep ./tests/aranges.o -e 'entry attribute ?AT_location value' 0x10000..0x10010:[0:reg5] 0x10010..0x1001a:[0:fbreg<-24>] .. _zw_vocabulary_dwarf version: version ------- ``T_CU`` ``->`` ``T_CONST`` ........................... Takes a CU on TOS and yields a constant corresponding to version of Dwarf standard according to which this CU has been written. .. _zw_vocabulary_dwarf visibility: visibility ---------- ``T_ELFSYM`` ``->`` ``T_CONST`` ............................... Takes a symbol on TOS and yields its ELF visibility (a constant with domain ``STV_``).