]> git.ipfire.org Git - thirdparty/elfutils.git/commitdiff
Add `attr' parameter to form_constaint_t::satisfied
authorPetr Machata <pmachata@redhat.com>
Thu, 20 Aug 2009 12:03:52 +0000 (14:03 +0200)
committerPetr Machata <pmachata@redhat.com>
Thu, 20 Aug 2009 12:03:52 +0000 (14:03 +0200)
libdw/c++/dwarf_output
libdw/c++/output-shape.cc

index 5ce90bd49b77bac40fc124b0a7cbe56bf3663aa4..66c736dcd4c3316d2a3799103b5c3d6b3810a45e 100644 (file)
@@ -939,6 +939,7 @@ namespace elfutils
        virtual ~form_constraint_t () {}
        // xxx will also need an attribute or whatever
        virtual bool satisfied (dwarf_output::debug_info_entry const &die,
+                               int attr,
                                dwarf_output::attr_value const &value) const = 0;
        virtual bool equal (form_constraint_t const *other) const = 0;
       };
index 9b3de9bf070a77be59bfbb0871668779ac767791..eb5230a71cf5aa5c51b27fb5093554732dd80a99 100644 (file)
@@ -63,6 +63,7 @@ namespace
     : public dwarf_output_collector::shape_type::form_constraint_t
   {
     virtual bool satisfied (__unused dwarf_output::debug_info_entry const &die,
+                           __unused int attr,
                            __unused dwarf_output::attr_value const &value) const
     {
       return true;
@@ -78,22 +79,23 @@ namespace
   }
 
 
-  struct cu_local_constraint_t
+  struct cu_local_ref_constraint_t
     : public dwarf_output_collector::shape_type::form_constraint_t
   {
     virtual bool satisfied (__unused dwarf_output::debug_info_entry const &die,
+                           __unused int attr,
                            __unused dwarf_output::attr_value const &value) const
     {
       return true; // xxx
     }
 
     virtual bool equal (form_constraint_t const *other) const;
-  } cu_local_constraint;
+  } cu_local_ref_constraint;
 
   bool
-  cu_local_constraint_t::equal (form_constraint_t const *other) const
+  cu_local_ref_constraint_t::equal (form_constraint_t const *other) const
   {
-    return other == &cu_local_constraint;
+    return other == &cu_local_ref_constraint;
   }
 
 
@@ -101,6 +103,7 @@ namespace
     : public dwarf_output_collector::shape_type::form_constraint_t
   {
     virtual bool satisfied (__unused dwarf_output::debug_info_entry const &die,
+                           __unused int attr,
                            __unused dwarf_output::attr_value const &value) const
     {
       return true; // xxx
@@ -128,10 +131,11 @@ namespace
     {}
 
     virtual bool satisfied (dwarf_output::debug_info_entry const &die,
+                           int attr,
                            dwarf_output::attr_value const &value) const
     {
-      return a->satisfied (die, value)
-       && b->satisfied (die, value);
+      return a->satisfied (die, attr, value)
+       && b->satisfied (die, attr, value);
     }
 
     virtual bool equal (form_constraint_t const *other) const
@@ -162,11 +166,11 @@ namespace
     {
       typedef dwarf_output_collector::shape_type::candidate_form
        candidate_form;
-      static constraint_and local_noreloc_constaint (&cu_local_constraint,
+      static constraint_and local_noreloc_constaint (&cu_local_ref_constraint,
                                                     &noreloc_constraint);
       add (DW_FORM_ref_addr);
-      add (candidate_form (DW_FORM_ref8, &cu_local_constraint));
-      add (candidate_form (DW_FORM_ref4, &cu_local_constraint));
+      add (candidate_form (DW_FORM_ref8, &cu_local_ref_constraint));
+      add (candidate_form (DW_FORM_ref4, &cu_local_ref_constraint));
       add (candidate_form (DW_FORM_ref2, &local_noreloc_constaint));
       add (candidate_form (DW_FORM_ref1, &local_noreloc_constaint));
       add (candidate_form (DW_FORM_ref_udata, &local_noreloc_constaint));
@@ -808,7 +812,7 @@ dwarf_output_collector::shape_info::instantiate
                  for (shape_type::candidate_form_vec::const_iterator ct
                         = candidates.begin ();
                       ct != candidates.end (); ++ct)
-                   if (ct->constraint->satisfied (die, value))
+                   if (ct->constraint->satisfied (die, name, value))
                      {
                        form = ct->form;
                        break;
@@ -825,7 +829,7 @@ dwarf_output_collector::shape_info::instantiate
                  for (shape_type::candidate_form_vec::const_iterator ct
                         = candidates.begin ();
                       ct != candidates.end (); ++ct)
-                   if (ct->constraint->satisfied (die, value)
+                   if (ct->constraint->satisfied (die, name, value)
                        && numerical_value_fits_form (opt_val, ct->form,
                                                      addr_64, dwarf_64))
                      {