Dwarf vocabulary¶
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)
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)
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
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.
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;
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
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;
T_DWARF¶
Values of this type represent opened Dwarf files:
$ dwgrep ./tests/a1.out -e ''
<Dwarf "./tests/a1.out">
$ dwgrep '"tests/a1.out" dwopen'
<Dwarf "tests/a1.out">
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
.
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
[...]
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]
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
!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;
!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;
!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]
!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.
!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.
!empty, ?empty¶
T_ASET
¶
Inspects an address set on TOS and holds if it is empty (contains no
addresses). Could be written as !(elem)
.
!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.
!overlaps, ?overlaps¶
T_ASET
T_ASET
¶
Inspects two address sets on TOS, and holds if the two address sets overlap.
@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
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
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
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.
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)
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).
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.)
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)
binding¶
T_ELFSYM
->
T_CONST
¶
Takes a symbol on TOS and yields its binding (a constant with domain
STB_
).
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
cooked¶
T_CU
->
T_CU
¶
Takes a CU on TOS and yields a cooked version thereof.
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.
T_DIE
->
T_DIE
¶
Takes a DIE on TOS and yields a cooked version thereof.
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.
T_DWARF
->
T_DWARF
¶
Takes a Dwarf on TOS and yields a cooked version thereof.
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.
T_ATTR
->
T_ATTR
¶
Takes an attribute on TOS and yields a cooked version thereof.
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.
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
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.
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
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.
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.
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
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
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
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.
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
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
<Dwarf "tests/a1.out">
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
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.
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"'
<Dwarf "tests/dwz-partial2-1">: [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"'
<Dwarf "tests/dwz-partial2-1">: [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
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.
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
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.
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.
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
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)
raw¶
T_CU
->
T_CU
¶
Takes a CU on TOS and yields a raw version thereof.
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.
T_DIE
->
T_DIE
¶
Takes a DIE on TOS and yields a raw version thereof.
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.
T_DWARF
->
T_DWARF
¶
Takes a Dwarf on TOS and yields a raw version thereof.
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.
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.
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.
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.
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.
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
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>]