[gdb/symtab] Handle DW_AT_decl_file with form DW_FORM_implicit_const
[binutils-gdb.git] / gdb / dwarf2 / attribute.c
index 0bbd0dad3f82d666dfbf4ce77a3f127667ebff1f..6b8d5419178f313402e558e463b5df8bb2aad840 100644 (file)
@@ -1,6 +1,6 @@
 /* DWARF attributes
 
-   Copyright (C) 1994-2020 Free Software Foundation, Inc.
+   Copyright (C) 1994-2021 Free Software Foundation, Inc.
 
    Adapted by Gary Funck (gary@intrepid.com), Intrepid Technology,
    Inc.  with support from Florida State University (under contract
@@ -107,7 +107,7 @@ bool
 attribute::form_is_section_offset () const
 {
   return (form == DW_FORM_data4
-          || form == DW_FORM_data8
+         || form == DW_FORM_data8
          || form == DW_FORM_sec_offset
          || form == DW_FORM_loclistx);
 }
@@ -179,6 +179,7 @@ attribute::form_is_unsigned () const
          || form == DW_FORM_flag_present
          || form == DW_FORM_udata
          || form == DW_FORM_rnglistx
+         || form == DW_FORM_loclistx
          || form == DW_FORM_ref1
          || form == DW_FORM_ref2
          || form == DW_FORM_ref4
@@ -188,16 +189,27 @@ attribute::form_is_unsigned () const
 
 /* See attribute.h.  */
 
+bool
+attribute::form_is_signed () const
+{
+  return form == DW_FORM_sdata || form == DW_FORM_implicit_const;
+}
+
+/* See attribute.h.  */
+
 bool
 attribute::form_requires_reprocessing () const
 {
-  return (form == DW_FORM_strx1
+  return (form == DW_FORM_strx
+         || form == DW_FORM_strx1
          || form == DW_FORM_strx2
          || form == DW_FORM_strx3
          || form == DW_FORM_strx4
          || form == DW_FORM_GNU_str_index
          || form == DW_FORM_addrx
-         || form == DW_FORM_GNU_addr_index);
+         || form == DW_FORM_GNU_addr_index
+         || form == DW_FORM_rnglistx
+         || form == DW_FORM_loclistx);
 }
 
 /* See attribute.h.  */