diff options
author | Kai Wang <kaiw@FreeBSD.org> | 2014-01-18 17:59:22 +0000 |
---|---|---|
committer | Kai Wang <kaiw@FreeBSD.org> | 2014-01-18 17:59:22 +0000 |
commit | 9c016dc4b2445d76ba4b508aed574550457dd9e7 (patch) | |
tree | eecd4c978728e64dfa91d251e704ab440ad81272 | |
parent | 1201c6fd2725b43972488766a6f3754f4e71b065 (diff) | |
download | src-9c016dc4b2445d76ba4b508aed574550457dd9e7.tar.gz src-9c016dc4b2445d76ba4b508aed574550457dd9e7.zip |
API dwarf_attrval_flag() should properly handle an attribute with
(DWARF4) form DW_FORM_flag_present which implicitly indicates the
presence of the attribute. Manual page is updated to reflect this
change.
Note that this was previously fixed in the old libdwarf.
Notes
Notes:
svn path=/projects/elftoolchain/; revision=260855
-rw-r--r-- | contrib/elftoolchain/libdwarf/dwarf_attrval.c | 1 | ||||
-rw-r--r-- | contrib/elftoolchain/libdwarf/dwarf_attrval_signed.3 | 29 |
2 files changed, 23 insertions, 7 deletions
diff --git a/contrib/elftoolchain/libdwarf/dwarf_attrval.c b/contrib/elftoolchain/libdwarf/dwarf_attrval.c index 0f17016ad810..31d19f7b8b21 100644 --- a/contrib/elftoolchain/libdwarf/dwarf_attrval.c +++ b/contrib/elftoolchain/libdwarf/dwarf_attrval.c @@ -50,6 +50,7 @@ dwarf_attrval_flag(Dwarf_Die die, Dwarf_Half attr, Dwarf_Bool *valp, Dwarf_Error switch (at->at_form) { case DW_FORM_flag: + case DW_FORM_flag_present: *valp = (Dwarf_Bool) (!!at->u[0].u64); break; default: diff --git a/contrib/elftoolchain/libdwarf/dwarf_attrval_signed.3 b/contrib/elftoolchain/libdwarf/dwarf_attrval_signed.3 index 9646990fc2de..5888d08001a4 100644 --- a/contrib/elftoolchain/libdwarf/dwarf_attrval_signed.3 +++ b/contrib/elftoolchain/libdwarf/dwarf_attrval_signed.3 @@ -24,7 +24,7 @@ .\" .\" $Id: dwarf_attrval_signed.3 2072 2011-10-27 03:26:49Z jkoshy $ .\" -.Dd January 29, 2011 +.Dd January 18, 2014 .Os .Dt DWARF_ATTRVAL_SIGNED 3 .Sh NAME @@ -84,13 +84,28 @@ Function .Fn dwarf_attrval_flag sets the location pointed to by argument .Ar ret -to 1 if the attribute named by argument +to either 0 or 1. If the form of the attribute named by argument .Ar attr -has a non-zero value, or to 0 otherwise. -The form of the attribute named by argument +is +.Dv DW_FORM_flag , +function +.Fn dwarf_attrval_flag +sets the location pointed to by argument +.Ar ret +to 1 if the attribute has a non-zero value, or to 0 otherwise. +If the form of the attribute named by argument .Ar attr -must be -.Dv DW_FORM_flag . +is +.Dv DW_FORM_flag_present , +function +.Fn dwarf_attrval_flag +unconditionally sets the location pointed to by argument +.Ar ret +to 1. +The form of the attribute must be one of +.Dv DW_FORM_flag +or +.Dv DW_FORM_flag_present . .Pp Function .Fn dwarf_attrval_signed @@ -122,7 +137,7 @@ attribute named by argument The form of the attribute must be one of .Dv DW_FORM_string or -.Dv DW_FORM_strp . +.Dv DW_FORM_strp . .Pp Function .Fn dwarf_attrval_unsigned |