/*
Copyright (c) 2019-2019, David Anderson
All rights reserved.

Redistribution and use in source and binary forms, with
or without modification, are permitted provided that the
following conditions are met:

    Redistributions of source code must retain the above
    copyright notice, this list of conditions and the following
    disclaimer.

    Redistributions in binary form must reproduce the above
    copyright notice, this list of conditions and the following
    disclaimer in the documentation and/or other materials
    provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR
CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/

#include <dwarf.h>

0xffffffff
DW_AT_abstract_origin
DW_FORM_CLASS_REFERENCE

0xffffffff
DW_AT_accessibility
DW_FORM_CLASS_CONSTANT

0xffffffff
DW_AT_addr_base
DW_FORM_CLASS_ADDRPTR

0xffffffff
DW_AT_address_class
DW_FORM_CLASS_CONSTANT

0xffffffff
DW_AT_alignment
DW_FORM_CLASS_CONSTANT

0xffffffff
DW_AT_allocated
DW_FORM_CLASS_CONSTANT
DW_FORM_CLASS_EXPRLOC
DW_FORM_CLASS_REFERENCE

0xffffffff
DW_AT_artificial
DW_FORM_CLASS_FLAG

0xffffffff
DW_AT_associated
DW_FORM_CLASS_CONSTANT
DW_FORM_CLASS_EXPRLOC
DW_FORM_CLASS_REFERENCE
0xffffffff
DW_AT_base_types
DW_FORM_CLASS_REFERENCE

0xffffffff
DW_AT_binary_scale
DW_FORM_CLASS_CONSTANT

0xffffffff
DW_AT_bit_offset
DW_FORM_CLASS_CONSTANT
DW_FORM_CLASS_BLOCK
DW_FORM_CLASS_REFERENCE

0xffffffff
DW_AT_bit_size
DW_FORM_CLASS_CONSTANT
DW_FORM_CLASS_BLOCK
DW_FORM_CLASS_REFERENCE

0xffffffff
DW_AT_bit_stride
DW_FORM_CLASS_CONSTANT
DW_FORM_CLASS_EXPRLOC
DW_FORM_CLASS_REFERENCE

0xffffffff
DW_AT_byte_size
DW_FORM_CLASS_CONSTANT
DW_FORM_CLASS_EXPRLOC
DW_FORM_CLASS_REFERENCE

0xffffffff
DW_AT_byte_stride
DW_FORM_CLASS_CONSTANT
DW_FORM_CLASS_EXPRLOC
DW_FORM_CLASS_REFERENCE

0xffffffff
DW_AT_call_all_calls
DW_FORM_CLASS_FLAG

0xffffffff
DW_AT_call_all_source_calls
DW_FORM_CLASS_FLAG

0xffffffff
DW_AT_call_all_tail_calls
DW_FORM_CLASS_FLAG

0xffffffff
DW_AT_call_column
DW_FORM_CLASS_CONSTANT

0xffffffff
DW_AT_call_data_location
DW_FORM_CLASS_EXPRLOC

0xffffffff
DW_AT_call_data_value
DW_FORM_CLASS_EXPRLOC

0xffffffff
DW_AT_call_file
DW_FORM_CLASS_CONSTANT

0xffffffff
DW_AT_calling_convention
DW_FORM_CLASS_CONSTANT

0xffffffff
DW_AT_call_line
DW_FORM_CLASS_CONSTANT

0xffffffff
DW_AT_call_origin
DW_FORM_CLASS_EXPRLOC
DW_FORM_CLASS_REFERENCE

0xffffffff
DW_AT_call_parameter
DW_FORM_CLASS_REFERENCE

0xffffffff
DW_AT_call_pc
DW_FORM_CLASS_ADDRESS

0xffffffff
DW_AT_call_return_pc
DW_FORM_CLASS_ADDRESS

0xffffffff
DW_AT_call_tail_call
DW_FORM_CLASS_FLAG

0xffffffff
DW_AT_call_target
DW_FORM_CLASS_EXPRLOC

0xffffffff
DW_AT_call_target_clobbered
DW_FORM_CLASS_EXPRLOC

0xffffffff
DW_AT_call_value
DW_FORM_CLASS_EXPRLOC

0xffffffff
DW_AT_common_reference
DW_FORM_CLASS_REFERENCE

0xffffffff
DW_AT_comp_dir
DW_FORM_CLASS_STRING

0xffffffff
DW_AT_const_expr
DW_FORM_CLASS_FLAG

0xffffffff
DW_AT_const_value
DW_FORM_CLASS_CONSTANT
DW_FORM_CLASS_BLOCK
DW_FORM_CLASS_STRING

0xffffffff
DW_AT_containing_type
DW_FORM_CLASS_REFERENCE

0xffffffff
DW_AT_count
DW_FORM_CLASS_CONSTANT
DW_FORM_CLASS_EXPRLOC
DW_FORM_CLASS_REFERENCE

0xffffffff
DW_AT_data_bit_offset
DW_FORM_CLASS_CONSTANT

0xffffffff
DW_AT_data_location
DW_FORM_CLASS_EXPRLOC

0xffffffff
DW_AT_data_member_location
DW_FORM_CLASS_CONSTANT
DW_FORM_CLASS_EXPRLOC
DW_FORM_CLASS_LOCLIST


0xffffffff
DW_AT_decimal_scale
DW_FORM_CLASS_CONSTANT

0xffffffff
DW_AT_decimal_sign
DW_FORM_CLASS_CONSTANT

0xffffffff
DW_AT_declaration
DW_FORM_CLASS_FLAG

0xffffffff
DW_AT_decl_column
DW_FORM_CLASS_CONSTANT

0xffffffff
DW_AT_decl_file
DW_FORM_CLASS_CONSTANT

0xffffffff
DW_AT_decl_line
DW_FORM_CLASS_CONSTANT

0xffffffff
DW_AT_defaulted
DW_FORM_CLASS_CONSTANT

0xffffffff
DW_AT_default_value

0xffffffff
DW_AT_deleted
DW_FORM_CLASS_FLAG

0xffffffff
DW_AT_description
DW_FORM_CLASS_STRING

0xffffffff
DW_AT_digit_count
DW_FORM_CLASS_CONSTANT

/* DWARF2,3,4,5 */
0xffffffff
DW_AT_discr
DW_FORM_CLASS_REFERENCE

/* DWARF5  */
0xffffffff
DW_AT_discr_list
DW_FORM_CLASS_BLOCK

/*  DWARF2,3,4,5 */
0xffffffff
DW_AT_discr_value
DW_FORM_CLASS_CONSTANT

/*  An experiment in some DWARF4. Not DWARF2, nor 3 nor 5
    Expect a DW_FORM_ref_sig8. */
0xffffffff
DW_AT_dwo_id
DW_FORM_CLASS_REFERENCE

0xffffffff
DW_AT_dwo_name
DW_FORM_CLASS_STRING

0xffffffff
DW_AT_elemental
DW_FORM_CLASS_FLAG

/*  DWARF1. Do not use */
0xffffffff
DW_AT_element_list

0xffffffff
DW_AT_encoding
DW_FORM_CLASS_CONSTANT

0xffffffff
DW_AT_endianity
DW_FORM_CLASS_CONSTANT

0xffffffff
DW_AT_entry_pc
DW_FORM_CLASS_ADDRESS
DW_FORM_CLASS_CONSTANT

0xffffffff
DW_AT_enum_class
DW_FORM_CLASS_FLAG

0xffffffff
DW_AT_explicit
DW_FORM_CLASS_FLAG

0xffffffff
DW_AT_export_symbols
DW_FORM_CLASS_FLAG

0xffffffff
DW_AT_extension
DW_FORM_CLASS_REFERENCE

0xffffffff
DW_AT_external
DW_FORM_CLASS_FLAG

0xffffffff
DW_AT_frame_base
DW_FORM_CLASS_EXPRLOC
DW_FORM_CLASS_BLOCK
DW_FORM_CLASS_LOCLIST

0xffffffff
DW_AT_friend
DW_FORM_CLASS_REFERENCE

0xffffffff
DW_AT_high_pc
DW_FORM_CLASS_CONSTANT
DW_FORM_CLASS_ADDRESS


0xffffffff
DW_AT_hi_user

0xffffffff
DW_AT_identifier_case
DW_FORM_CLASS_CONSTANT

0xffffffff
DW_AT_import
DW_FORM_CLASS_REFERENCE

0xffffffff
DW_AT_inline
DW_FORM_CLASS_CONSTANT


0xffffffff
DW_AT_is_optional
DW_FORM_CLASS_FLAG

0xffffffff
DW_AT_language
DW_FORM_CLASS_CONSTANT

0xffffffff
DW_AT_linkage_name
DW_FORM_CLASS_STRING

0xffffffff
DW_AT_location
DW_FORM_CLASS_EXPRLOC
DW_FORM_CLASS_LOCLIST
DW_FORM_CLASS_LOCLISTPTR
DW_FORM_CLASS_BLOCK

0xffffffff
DW_AT_loclists_base
DW_FORM_CLASS_LOCLISTSPTR

0xffffffff
DW_AT_lower_bound
DW_FORM_CLASS_CONSTANT
DW_FORM_CLASS_EXPRLOC
DW_FORM_CLASS_REFERENCE

0xffffffff
DW_AT_low_pc
DW_FORM_CLASS_ADDRESS

0xffffffff
DW_AT_macro_info
DW_FORM_CLASS_MACPTR

0xffffffff
DW_AT_macros
DW_FORM_CLASS_MACROPTR

0xffffffff
DW_AT_main_subprogram
DW_FORM_CLASS_STRING

/*  DWARF1, Reserved, unused */
0xffffffff
DW_AT_member

0xffffffff
DW_AT_mutable
DW_FORM_CLASS_FLAG

0xffffffff
DW_AT_name
DW_FORM_CLASS_STRING

0xffffffff
DW_AT_namelist_item
DW_FORM_CLASS_REFERENCE

0xffffffff
DW_AT_noreturn
DW_FORM_CLASS_FLAG

0xffffffff
DW_AT_object_pointer
DW_FORM_CLASS_REFERENCE

0xffffffff
DW_AT_ordering
DW_FORM_CLASS_CONSTANT

0xffffffff
DW_AT_picture_string
DW_FORM_CLASS_STRING

0xffffffff
DW_AT_priority
DW_FORM_CLASS_REFERENCE

0xffffffff
DW_AT_producer
DW_FORM_CLASS_STRING

0xffffffff
DW_AT_prototyped
DW_FORM_CLASS_FLAG

0xffffffff
DW_AT_pure
DW_FORM_CLASS_FLAG

0xffffffff
DW_AT_ranges
DW_FORM_CLASS_RNGLIST
DW_FORM_CLASS_RANGELISTPTR  /* DWARF4 */
DW_FORM_CLASS_RNGLISTSPTR /* DWARF5 */

0xffffffff
DW_AT_rank
DW_FORM_CLASS_CONSTANT
DW_FORM_CLASS_EXPRLOC

0xffffffff
DW_AT_recursive
DW_FORM_CLASS_FLAG

0xffffffff
DW_AT_reference
DW_FORM_CLASS_FLAG

0xffffffff
DW_AT_return_addr
DW_FORM_CLASS_EXPRLOC
DW_FORM_CLASS_LOCLIST

0xffffffff
DW_AT_rnglists_base
DW_FORM_CLASS_RNGLISTSPTR

0xffffffff
DW_AT_rvalue_reference
DW_FORM_CLASS_FLAG

0xffffffff
DW_AT_segment
DW_FORM_CLASS_EXPRLOC
DW_FORM_CLASS_LOCLIST

0xffffffff
DW_AT_sibling
DW_FORM_CLASS_REFERENCE

0xffffffff
DW_AT_signature
DW_FORM_CLASS_REFERENCE

0xffffffff
DW_AT_small
DW_FORM_CLASS_REFERENCE

0xffffffff
DW_AT_specification
DW_FORM_CLASS_REFERENCE

0xffffffff
DW_AT_start_scope
DW_FORM_CLASS_CONSTANT
DW_FORM_CLASS_RNGLIST

0xffffffff
DW_AT_static_link
DW_FORM_CLASS_EXPRLOC
DW_FORM_CLASS_LOCLIST

0xffffffff
DW_AT_stmt_list
DW_FORM_CLASS_LINEPTR

0xffffffff
DW_AT_string_length
DW_FORM_CLASS_BLOCK
DW_FORM_CLASS_LOCLISTPTR

0xffffffff
DW_AT_string_length_bit_size
DW_FORM_CLASS_CONSTANT

0xffffffff
DW_AT_string_length_byte_size
DW_FORM_CLASS_CONSTANT

0xffffffff
DW_AT_str_offsets_base
DW_FORM_CLASS_STROFFSETSPTR

0xffffffff
/*  Not defined in DWARF 2,3,4, or 5. Probably was DWARF1 */
DW_AT_subscr_data

0xffffffff
DW_AT_threads_scaled
DW_FORM_CLASS_FLAG

0xffffffff
DW_AT_trampoline
DW_FORM_CLASS_REFERENCE
DW_FORM_CLASS_ADDRESS
DW_FORM_CLASS_FLAG
DW_FORM_CLASS_STRING

0xffffffff
DW_AT_type
DW_FORM_CLASS_REFERENCE

0xffffffff
DW_AT_upper_bound
DW_FORM_CLASS_CONSTANT
DW_FORM_CLASS_EXPRLOC
DW_FORM_CLASS_REFERENCE

0xffffffff
DW_AT_use_location
DW_FORM_CLASS_EXPRLOC
DW_FORM_CLASS_LOCLIST

0xffffffff
DW_AT_use_UTF8
DW_FORM_CLASS_FLAG

0xffffffff
DW_AT_variable_parameter
DW_FORM_CLASS_FLAG

0xffffffff
DW_AT_virtuality
DW_FORM_CLASS_CONSTANT

0xffffffff
DW_AT_visibility
DW_FORM_CLASS_CONSTANT

0xffffffff
DW_AT_vtable_elem_location
DW_FORM_CLASS_EXPRLOC
DW_FORM_CLASS_LOCLIST

0xffffffff
