Page MenuHomeFreeBSD

D38273.id116043.diff
No OneTemporary

D38273.id116043.diff

diff --git a/contrib/elftoolchain/libdwarf/dwarf.h b/contrib/elftoolchain/libdwarf/dwarf.h
--- a/contrib/elftoolchain/libdwarf/dwarf.h
+++ b/contrib/elftoolchain/libdwarf/dwarf.h
@@ -90,6 +90,14 @@
#define DW_TAG_type_unit 0x41
#define DW_TAG_rvalue_reference_type 0x42
#define DW_TAG_template_alias 0x43
+#define DW_TAG_coarray_type 0x44
+#define DW_TAG_generic_subrange 0x45
+#define DW_TAG_dynamic_type 0x46
+#define DW_TAG_atomic_type 0x47
+#define DW_TAG_call_site 0x48
+#define DW_TAG_call_site_parameter 0x49
+#define DW_TAG_skeleton_unit 0x4a
+#define DW_TAG_immutable_type 0x4b
#define DW_TAG_lo_user 0x4080
#define DW_TAG_hi_user 0xffff
@@ -205,6 +213,35 @@
#define DW_AT_const_expr 0x6c
#define DW_AT_enum_class 0x6d
#define DW_AT_linkage_name 0x6e
+#define DW_AT_string_length_bit_size 0x6f
+#define DW_AT_string_length_byte_size 0x70
+#define DW_AT_rank 0x71
+#define DW_AT_str_offsets_base 0x72
+#define DW_AT_addr_base 0x73
+#define DW_AT_rnglists_base 0x74
+#define DW_AT_dwo_name 0x76
+#define DW_AT_reference 0x77
+#define DW_AT_rvalue_reference 0x78
+#define DW_AT_macros 0x79
+#define DW_AT_call_all_calls 0x7a
+#define DW_AT_call_all_source_calls 0x7b
+#define DW_AT_call_all_tail_calls 0x7c
+#define DW_AT_call_return_pc 0x7d
+#define DW_AT_call_value 0x7e
+#define DW_AT_call_origin 0x7f
+#define DW_AT_call_parameter 0x80
+#define DW_AT_call_pc 0x81
+#define DW_AT_call_tail_call 0x82
+#define DW_AT_call_target 0x83
+#define DW_AT_call_target_clobbered 0x84
+#define DW_AT_call_data_location 0x85
+#define DW_AT_call_data_value 0x86
+#define DW_AT_noreturn 0x87
+#define DW_AT_alignment 0x88
+#define DW_AT_export_symbols 0x89
+#define DW_AT_deleted 0x8a
+#define DW_AT_defaulted 0x8b
+#define DW_AT_loclists_base 0x8c
#define DW_AT_lo_user 0x2000
#define DW_AT_hi_user 0x3fff
@@ -292,7 +329,25 @@
#define DW_FORM_sec_offset 0x17
#define DW_FORM_exprloc 0x18
#define DW_FORM_flag_present 0x19
+#define DW_FORM_strx 0x1a
+#define DW_FORM_addrx 0x1b
+#define DW_FORM_ref_sup4 0x1c
+#define DW_FORM_strp_sup 0x1d
+#define DW_FORM_data16 0x1e
+#define DW_FORM_line_strp 0x1f
#define DW_FORM_ref_sig8 0x20
+#define DW_FORM_implicit_const 0x21
+#define DW_FORM_loclistx 0x22
+#define DW_FORM_rnglistx 0x23
+#define DW_FORM_ref_sup8 0x24
+#define DW_FORM_ref_strx1 0x25
+#define DW_FORM_ref_strx2 0x26
+#define DW_FORM_ref_strx3 0x27
+#define DW_FORM_ref_strx4 0x28
+#define DW_FORM_ref_addrx1 0x29
+#define DW_FORM_ref_addrx2 0x2a
+#define DW_FORM_ref_addrx3 0x2b
+#define DW_FORM_ref_addrx4 0x2c
#define DW_FORM_GNU_ref_alt 0x1f20
#define DW_FORM_GNU_strp_alt 0x1f21
@@ -450,6 +505,16 @@
#define DW_OP_bit_piece 0x9d
#define DW_OP_implicit_value 0x9e
#define DW_OP_stack_value 0x9f
+#define DW_OP_implicit_pointer 0xa0
+#define DW_OP_addrx 0xa1
+#define DW_OP_constx 0xa2
+#define DW_OP_entry_value 0xa3
+#define DW_OP_const_type 0xa4
+#define DW_OP_regval_type 0xa5
+#define DW_OP_deref_type 0xa6
+#define DW_OP_xderef_type 0xa7
+#define DW_OP_convert 0xa8
+#define DW_OP_reinterpret 0xa9
#define DW_OP_lo_user 0xe0
#define DW_OP_hi_user 0xff
@@ -483,6 +548,9 @@
#define DW_ATE_signed_fixed 0xd
#define DW_ATE_unsigned_fixed 0xe
#define DW_ATE_decimal_float 0xf
+#define DW_ATE_UTF 0x10
+#define DW_ATE_UCS 0x11
+#define DW_ATE_ASCII 0x12
#define DW_ATE_lo_user 0x80
#define DW_ATE_hi_user 0xff
@@ -553,6 +621,8 @@
#define DW_CC_normal 0x01
#define DW_CC_program 0x02
#define DW_CC_nocall 0x03
+#define DW_CC_pass_by_reference 0x04
+#define DW_CC_pass_by_value 0x05
#define DW_CC_lo_user 0x40
#define DW_CC_hi_user 0xff
@@ -649,4 +719,17 @@
#define DW_EH_PE_aligned 0x50
#define DW_EH_PE_omit 0xff
+/*
+ * Compilation unit types. DWARF5 only.
+ */
+
+#define DW_UT_compile 0x01
+#define DW_UT_type 0x02
+#define DW_UT_partial 0x03
+#define DW_UT_skeleton 0x04
+#define DW_UT_split_compile 0x05
+#define DW_UT_split_type 0x06
+#define DW_UT_lo_user 0x80
+#define DW_UT_hi_user 0xff
+
#endif /* !_DWARF_H_ */
diff --git a/contrib/elftoolchain/libdwarf/dwarf_dump.c b/contrib/elftoolchain/libdwarf/dwarf_dump.c
--- a/contrib/elftoolchain/libdwarf/dwarf_dump.c
+++ b/contrib/elftoolchain/libdwarf/dwarf_dump.c
@@ -250,6 +250,64 @@
*s = "DW_AT_visibility"; break;
case DW_AT_vtable_elem_location:
*s = "DW_AT_vtable_elem_location"; break;
+ case DW_AT_string_length_bit_size:
+ *s = "DW_AT_string_length_bit_size"; break;
+ case DW_AT_string_length_byte_size:
+ *s = "DW_AT_string_length_byte_size"; break;
+ case DW_AT_rank:
+ *s = "DW_AT_rank"; break;
+ case DW_AT_str_offsets_base:
+ *s = "DW_AT_str_offsets_base"; break;
+ case DW_AT_addr_base:
+ *s = "DW_AT_addr_base"; break;
+ case DW_AT_rnglists_base:
+ *s = "DW_AT_rnglists_base"; break;
+ case DW_AT_dwo_name:
+ *s = "DW_AT_dwo_name"; break;
+ case DW_AT_reference:
+ *s = "DW_AT_reference"; break;
+ case DW_AT_rvalue_reference:
+ *s = "DW_AT_rvalue_reference"; break;
+ case DW_AT_macros:
+ *s = "DW_AT_macros"; break;
+ case DW_AT_call_all_calls:
+ *s = "DW_AT_call_all_calls"; break;
+ case DW_AT_call_all_source_calls:
+ *s = "DW_AT_call_all_source_calls"; break;
+ case DW_AT_call_all_tail_calls:
+ *s = "DW_AT_call_all_tail_calls"; break;
+ case DW_AT_call_return_pc:
+ *s = "DW_AT_call_return_pc"; break;
+ case DW_AT_call_value:
+ *s = "DW_AT_call_value"; break;
+ case DW_AT_call_origin:
+ *s = "DW_AT_call_origin"; break;
+ case DW_AT_call_parameter:
+ *s = "DW_AT_call_parameter"; break;
+ case DW_AT_call_pc:
+ *s = "DW_AT_call_pc"; break;
+ case DW_AT_call_tail_call:
+ *s = "DW_AT_call_tail_call"; break;
+ case DW_AT_call_target:
+ *s = "DW_AT_call_target"; break;
+ case DW_AT_call_target_clobbered:
+ *s = "DW_AT_call_target_clobbered"; break;
+ case DW_AT_call_data_location:
+ *s = "DW_AT_call_data_location"; break;
+ case DW_AT_call_data_value:
+ *s = "DW_AT_call_data_value"; break;
+ case DW_AT_noreturn:
+ *s = "DW_AT_noreturn"; break;
+ case DW_AT_alignment:
+ *s = "DW_AT_alignment"; break;
+ case DW_AT_export_symbols:
+ *s = "DW_AT_export_symbols"; break;
+ case DW_AT_deleted:
+ *s = "DW_AT_deleted"; break;
+ case DW_AT_defaulted:
+ *s = "DW_AT_defaulted"; break;
+ case DW_AT_loclists_base:
+ *s = "DW_AT_loclists_base"; break;
case DW_AT_sf_names:
*s = "DW_AT_sf_names"; break;
case DW_AT_src_info:
@@ -371,7 +429,7 @@
assert(s != NULL);
- switch(ate) {
+ switch (ate) {
case DW_ATE_address:
*s = "DW_ATE_address"; break;
case DW_ATE_boolean:
@@ -402,6 +460,12 @@
*s = "DW_ATE_unsigned_fixed"; break;
case DW_ATE_decimal_float:
*s = "DW_ATE_decimal_float"; break;
+ case DW_ATE_UTF:
+ *s = "DW_ATE_UTF"; break;
+ case DW_ATE_UCS:
+ *s = "DW_ATE_UCS"; break;
+ case DW_ATE_ASCII:
+ *s = "DW_ATE_ASCII"; break;
case DW_ATE_lo_user:
*s = "DW_ATE_lo_user"; break;
case DW_ATE_hi_user:
@@ -426,6 +490,10 @@
*s = "DW_CC_program"; break;
case DW_CC_nocall:
*s = "DW_CC_nocall"; break;
+ case DW_CC_pass_by_reference:
+ *s = "DW_CC_pass_by_reference"; break;
+ case DW_CC_pass_by_value:
+ *s = "DW_CC_pass_by_value"; break;
case DW_CC_lo_user:
*s = "DW_CC_lo_user"; break;
case DW_CC_hi_user:
@@ -582,6 +650,42 @@
*s = "DW_FORM_strp"; break;
case DW_FORM_udata:
*s = "DW_FORM_udata"; break;
+ case DW_FORM_strx:
+ *s = "DW_FORM_strx"; break;
+ case DW_FORM_addrx:
+ *s = "DW_FORM_addrx"; break;
+ case DW_FORM_ref_sup4:
+ *s = "DW_FORM_ref_sup4"; break;
+ case DW_FORM_strp_sup:
+ *s = "DW_FORM_strp_sup"; break;
+ case DW_FORM_data16:
+ *s = "DW_FORM_data16"; break;
+ case DW_FORM_line_strp:
+ *s = "DW_FORM_line_strp"; break;
+ case DW_FORM_implicit_const:
+ *s = "DW_FORM_implicit_const"; break;
+ case DW_FORM_loclistx:
+ *s = "DW_FORM_loclistx"; break;
+ case DW_FORM_rnglistx:
+ *s = "DW_FORM_rnglistx"; break;
+ case DW_FORM_ref_sup8:
+ *s = "DW_FORM_ref_sup8"; break;
+ case DW_FORM_ref_strx1:
+ *s = "DW_FORM_ref_strx1"; break;
+ case DW_FORM_ref_strx2:
+ *s = "DW_FORM_ref_strx2"; break;
+ case DW_FORM_ref_strx3:
+ *s = "DW_FORM_ref_strx3"; break;
+ case DW_FORM_ref_strx4:
+ *s = "DW_FORM_ref_strx4"; break;
+ case DW_FORM_ref_addrx1:
+ *s = "DW_FORM_ref_addrx1"; break;
+ case DW_FORM_ref_addrx2:
+ *s = "DW_FORM_ref_addrx2"; break;
+ case DW_FORM_ref_addrx3:
+ *s = "DW_FORM_ref_addrx3"; break;
+ case DW_FORM_ref_addrx4:
+ *s = "DW_FORM_ref_addrx4"; break;
default:
return (DW_DLV_NO_ENTRY);
}
@@ -1238,6 +1342,26 @@
*s = "DW_OP_implicit_value"; break;
case DW_OP_stack_value:
*s = "DW_OP_stack_value"; break;
+ case DW_OP_implicit_pointer:
+ *s = "DW_OP_implicit_pointer"; break;
+ case DW_OP_addrx:
+ *s = "DW_OP_addrx"; break;
+ case DW_OP_constx:
+ *s = "DW_OP_constx"; break;
+ case DW_OP_entry_value:
+ *s = "DW_OP_entry_value"; break;
+ case DW_OP_const_type:
+ *s = "DW_OP_const_type"; break;
+ case DW_OP_regval_type:
+ *s = "DW_OP_regval_type"; break;
+ case DW_OP_deref_type:
+ *s = "DW_OP_deref_type"; break;
+ case DW_OP_xderef_type:
+ *s = "DW_OP_xderef_type"; break;
+ case DW_OP_convert:
+ *s = "DW_OP_convert"; break;
+ case DW_OP_reinterpret:
+ *s = "DW_OP_reinterpret"; break;
case DW_OP_GNU_push_tls_address:
*s = "DW_OP_GNU_push_tls_address"; break;
case DW_OP_GNU_uninit:
@@ -1414,6 +1538,22 @@
*s = "DW_TAG_volatile_type"; break;
case DW_TAG_with_stmt:
*s = "DW_TAG_with_stmt"; break;
+ case DW_TAG_coarray_type:
+ *s = "DW_TAG_coarray_type"; break;
+ case DW_TAG_generic_subrange:
+ *s = "DW_TAG_generic_subrange"; break;
+ case DW_TAG_dynamic_type:
+ *s = "DW_TAG_dynamic_type"; break;
+ case DW_TAG_atomic_type:
+ *s = "DW_TAG_atomic_type"; break;
+ case DW_TAG_call_site:
+ *s = "DW_TAG_call_site"; break;
+ case DW_TAG_call_site_parameter:
+ *s = "DW_TAG_call_site_parameter"; break;
+ case DW_TAG_skeleton_unit:
+ *s = "DW_TAG_skeleton_unit"; break;
+ case DW_TAG_immutable_type:
+ *s = "DW_TAG_immutable_type"; break;
case DW_TAG_format_label:
*s = "DW_TAG_format_label"; break;
case DW_TAG_function_template:
@@ -1441,6 +1581,32 @@
return (DW_DLV_OK);
}
+int
+dwarf_get_UT_name(unsigned unit_type, const char **s)
+{
+
+ assert(s != NULL);
+
+ switch (unit_type) {
+ case DW_UT_compile:
+ *s = "DW_UT_compile"; break;
+ case DW_UT_type:
+ *s = "DW_UT_type"; break;
+ case DW_UT_partial:
+ *s = "DW_UT_partial"; break;
+ case DW_UT_skeleton:
+ *s = "DW_UT_skeleton"; break;
+ case DW_UT_split_compile:
+ *s = "DW_UT_split_compile"; break;
+ case DW_UT_split_type:
+ *s = "DW_UT_split_type"; break;
+ default:
+ return (DW_DLV_NO_ENTRY);
+ }
+
+ return (DW_DLV_OK);
+}
+
int
dwarf_get_VIRTUALITY_name(unsigned vir, const char **s)
{
diff --git a/contrib/elftoolchain/libdwarf/dwarf_get_AT_name.3 b/contrib/elftoolchain/libdwarf/dwarf_get_AT_name.3
--- a/contrib/elftoolchain/libdwarf/dwarf_get_AT_name.3
+++ b/contrib/elftoolchain/libdwarf/dwarf_get_AT_name.3
@@ -24,7 +24,7 @@
.\"
.\" $Id: dwarf_get_AT_name.3 3644 2018-10-15 19:55:01Z jkoshy $
.\"
-.Dd April 22, 2011
+.Dd January 30, 2023
.Dt DWARF_GET_AT_NAME 3
.Os
.Sh NAME
@@ -48,6 +48,7 @@
.Nm dwarf_get_OP_name ,
.Nm dwarf_get_ORD_name ,
.Nm dwarf_get_TAG_name ,
+.Nm dwarf_get_UT_name ,
.Nm dwarf_get_VIRTUALITY_name ,
.Nm dwarf_get_VIS_name
.Nd retrieve the symbolic names of DWARF constants
@@ -156,6 +157,11 @@
.Fa "char **str"
.Fc
.Ft int
+.Fo dwarf_get_UT_name
+.Fa "unsigned unit_type"
+.Fa "const char **str"
+.Fc
+.Ft int
.Fo dwarf_get_VIRTUALITY_name
.Fa "unsigned val"
.Fa "char **str"
@@ -241,6 +247,9 @@
.It Fn dwarf_get_TAG_name
.Dv DW_TAG_*
constants.
+.It Fn dwarf_get_UT_name
+.Dv DW_UT_*
+constants.
.It Fn dwarf_get_VIRTUALITY_name
.Dv DW_VIRTUALITY_*
constants.
diff --git a/lib/libdwarf/Makefile b/lib/libdwarf/Makefile
--- a/lib/libdwarf/Makefile
+++ b/lib/libdwarf/Makefile
@@ -281,6 +281,7 @@
dwarf_get_AT_name.3 dwarf_get_OP_name.3 \
dwarf_get_AT_name.3 dwarf_get_ORD_name.3 \
dwarf_get_AT_name.3 dwarf_get_TAG_name.3 \
+ dwarf_get_AT_name.3 dwarf_get_UT_name.3 \
dwarf_get_AT_name.3 dwarf_get_VIRTUALITY_name.3 \
dwarf_get_AT_name.3 dwarf_get_VIS_name.3 \
dwarf_get_cu_die_offset.3 dwarf_get_arange_cu_header_offset.3 \

File Metadata

Mime Type
text/plain
Expires
Mon, Feb 9, 6:23 AM (20 h, 36 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28547522
Default Alt Text
D38273.id116043.diff (11 KB)

Event Timeline