using RepeatUntilExcluding for the Dwarf_abbrev_declaration struct - so now no accounting for the empty element is needed when iterating over it
diff --git a/elftools/dwarf/abbrevtable.py b/elftools/dwarf/abbrevtable.py
index ad25aeb..44ccdd5 100644
--- a/elftools/dwarf/abbrevtable.py
+++ b/elftools/dwarf/abbrevtable.py
@@ -73,9 +73,6 @@
             (name, form) pairs.
         """
         for attr_spec in self['attr_spec']:
-            # Ignore the terminating 'null' spec
-            if attr_spec.name == 'DW_AT_null':
-                break
             yield attr_spec.name, attr_spec.form
             
     def __getitem__(self, entry):
diff --git a/elftools/dwarf/structs.py b/elftools/dwarf/structs.py
index ebf34c6..2c00325 100644
--- a/elftools/dwarf/structs.py
+++ b/elftools/dwarf/structs.py
@@ -150,7 +150,7 @@
         self.Dwarf_abbrev_declaration = Struct('Dwarf_abbrev_entry',
             Enum(self.Dwarf_uleb128('tag'), **ENUM_DW_TAG),
             Enum(self.Dwarf_uint8('children_flag'), **ENUM_DW_CHILDREN),
-            RepeatUntil(
+            RepeatUntilExcluding(
                 lambda obj, ctx: 
                     obj.name == 'DW_AT_null' and obj.form == 'DW_FORM_null',
                 Struct('attr_spec',