]> git.ipfire.org Git - thirdparty/elfutils.git/commitdiff
dwarflint: Add DW_FORM_indirect to DWARF 2
authorPetr Machata <pmachata@redhat.com>
Sat, 9 Oct 2010 17:20:56 +0000 (19:20 +0200)
committerPetr Machata <pmachata@redhat.com>
Sat, 9 Oct 2010 17:20:56 +0000 (19:20 +0200)
- add cl_indirect to facilitate the indirect form.  Make this the implicit
  class of all attributes.

dwarflint/dwarf_2.cc
dwarflint/dwarf_version.cc
dwarflint/dwarf_version.hh

index f3c4aec60f7f16ee10858dd666d1d84e09967b12..69c45953cd7050be3d5646af55c09346a15f7f64 100644 (file)
@@ -155,6 +155,8 @@ namespace
       add (offset_form (DW_FORM_strp, cl_string));
       add (address_form (DW_FORM_addr, cl_address));
       add (address_form (DW_FORM_ref_addr, cl_reference));
+
+      add (form (DW_FORM_indirect, cl_indirect, fw_uleb, sc_value));
     }
   };
 
index 66e85e4377eef21d05d1bd81f8c659aaf43c4593..dc8aab37c427d883c1d208e6e00b77dfe1c8f3c1 100644 (file)
@@ -97,9 +97,19 @@ form::width (cu const *cu) const
     return static_cast<form_width_t> (_m_width);
 }
 
-attribute::attribute (int a_name, dw_class_set a_classes)
+namespace
+{
+  dw_class_set
+  include_indirect (dw_class_set a_classes)
+  {
+    a_classes.set (cl_indirect);
+    return a_classes;
+  }
+}
+
+attribute::attribute (int a_name, dw_class_set const &a_classes)
   : _m_name (a_name)
-  , _m_classes (a_classes)
+  , _m_classes (include_indirect (a_classes))
 {}
 
 
index dd1fd45bb0a681d481f24fffd83aae3dbb1b49dc..8108b42b23709c1c15162d743fdabf94ab0bab68 100644 (file)
@@ -33,6 +33,7 @@
 
 enum dw_class
   {
+    cl_indirect,
     cl_address,
     cl_block,
     cl_constant,
@@ -137,7 +138,8 @@ class attribute
   dw_class_set const _m_classes;
 
 public:
-  attribute (int a_name, dw_class_set a_classes);
+  /// NB this ctor automatically adds cl_indirect to a_classes.
+  attribute (int a_name, dw_class_set const &a_classes);
 
   int
   name () const