[Midnightbsd-cvs] src [8051] trunk/lib/libdwarf: teach libdwarf about the DW_FORM_flag_present dwarf attribute

laffer1 at midnightbsd.org laffer1 at midnightbsd.org
Thu Sep 15 17:21:14 EDT 2016


Revision: 8051
          http://svnweb.midnightbsd.org/src/?rev=8051
Author:   laffer1
Date:     2016-09-15 17:21:14 -0400 (Thu, 15 Sep 2016)
Log Message:
-----------
teach libdwarf about the DW_FORM_flag_present dwarf attribute

Modified Paths:
--------------
    trunk/lib/libdwarf/dwarf.h
    trunk/lib/libdwarf/dwarf_attrval.c
    trunk/lib/libdwarf/dwarf_dump.c
    trunk/lib/libdwarf/dwarf_init.c

Modified: trunk/lib/libdwarf/dwarf.h
===================================================================
--- trunk/lib/libdwarf/dwarf.h	2016-09-15 21:19:15 UTC (rev 8050)
+++ trunk/lib/libdwarf/dwarf.h	2016-09-15 21:21:14 UTC (rev 8051)
@@ -184,6 +184,7 @@
 #define DW_FORM_ref8			0x14
 #define DW_FORM_ref_udata		0x15
 #define DW_FORM_indirect		0x16
+#define DW_FORM_flag_present		0x19
 
 #define DW_OP_addr			0x03
 #define DW_OP_deref			0x06

Modified: trunk/lib/libdwarf/dwarf_attrval.c
===================================================================
--- trunk/lib/libdwarf/dwarf_attrval.c	2016-09-15 21:19:15 UTC (rev 8050)
+++ trunk/lib/libdwarf/dwarf_attrval.c	2016-09-15 21:21:14 UTC (rev 8051)
@@ -101,6 +101,7 @@
 	} else {
 		switch (av->av_form) {
 		case DW_FORM_flag:
+		case DW_FORM_flag_present:
 			*valp = (Dwarf_Bool) av->u[0].u64;
 			break;
 		default:

Modified: trunk/lib/libdwarf/dwarf_dump.c
===================================================================
--- trunk/lib/libdwarf/dwarf_dump.c	2016-09-15 21:19:15 UTC (rev 8050)
+++ trunk/lib/libdwarf/dwarf_dump.c	2016-09-15 21:21:14 UTC (rev 8051)
@@ -240,6 +240,8 @@
 		return "DW_FORM_data8";
 	case DW_FORM_flag:
 		return "DW_FORM_flag";
+	case DW_FORM_flag_present:
+		return "DW_FORM_flag_present";
 	case DW_FORM_indirect:
 		return "DW_FORM_indirect";
 	case DW_FORM_ref1:
@@ -648,6 +650,7 @@
 	case DW_FORM_data4:
 	case DW_FORM_data8:
 	case DW_FORM_flag:
+	case DW_FORM_flag_present:
 		printf("%llu", (unsigned long long) av->u[0].u64);
 		break;
 	case DW_FORM_ref1:

Modified: trunk/lib/libdwarf/dwarf_init.c
===================================================================
--- trunk/lib/libdwarf/dwarf_init.c	2016-09-15 21:19:15 UTC (rev 8050)
+++ trunk/lib/libdwarf/dwarf_init.c	2016-09-15 21:21:14 UTC (rev 8051)
@@ -396,6 +396,10 @@
 		avref.u[1].s = elf_strptr(dbg->dbg_elf,
 		    dbg->dbg_s[DWARF_debug_str].s_shnum, avref.u[0].u64);
 		break;
+	case DW_FORM_flag_present:
+		/* This form has no value encoded in the DIE. */
+		avref.u[0].u64 = 1;
+		break;
 	default:
 		DWARF_SET_ERROR(error, DWARF_E_NOT_IMPLEMENTED);
 		ret = DWARF_E_NOT_IMPLEMENTED;



More information about the Midnightbsd-cvs mailing list