diff options
-rw-r--r-- | gdb/dwarf2/attribute.c | 2 | ||||
-rw-r--r-- | gdb/dwarf2/attribute.h | 13 |
2 files changed, 9 insertions, 6 deletions
diff --git a/gdb/dwarf2/attribute.c b/gdb/dwarf2/attribute.c index f777c14..3eb32b6 100644 --- a/gdb/dwarf2/attribute.c +++ b/gdb/dwarf2/attribute.c @@ -189,7 +189,7 @@ attribute::form_is_unsigned () const /* See attribute.h. */ bool -attribute::form_is_signed () const +attribute::form_is_strictly_signed () const { return form == DW_FORM_sdata || form == DW_FORM_implicit_const; } diff --git a/gdb/dwarf2/attribute.h b/gdb/dwarf2/attribute.h index 115d006..6332b39 100644 --- a/gdb/dwarf2/attribute.h +++ b/gdb/dwarf2/attribute.h @@ -69,7 +69,7 @@ struct attribute form. */ LONGEST as_signed () const { - gdb_assert (form_is_signed ()); + gdb_assert (form_is_strictly_signed ()); return u.snd; } @@ -97,7 +97,7 @@ struct attribute { if (form_is_unsigned ()) return true; - if (form_is_signed ()) + if (form_is_strictly_signed ()) return as_signed () >= 0; return false; } @@ -108,7 +108,7 @@ struct attribute { if (form_is_unsigned ()) return as_unsigned (); - if (form_is_signed ()) + if (form_is_strictly_signed ()) return (ULONGEST)as_signed (); gdb_assert (false); } @@ -168,8 +168,11 @@ struct attribute /* Check if the attribute's form is an unsigned integer form. */ bool form_is_unsigned () const; - /* Check if the attribute's form is a signed integer form. */ - bool form_is_signed () const; + /* Check if the attribute's form is a signed integer form. This + only returns true for forms that are strictly signed -- that is, + for a context-dependent form like DW_FORM_data1, this returns + false. */ + bool form_is_strictly_signed () const; /* Check if the attribute's form is a form that requires "reprocessing". */ |