binman: Allow 'fill' entry to have a size of 0
authorSimon Glass <sjg@chromium.org>
Fri, 14 Sep 2018 10:57:08 +0000 (04:57 -0600)
committerSimon Glass <sjg@chromium.org>
Fri, 28 Sep 2018 17:09:01 +0000 (11:09 -0600)
The check for this should be for None, not 0. Fix it and add a test.

Signed-off-by: Simon Glass <sjg@chromium.org>
tools/binman/etype/fill.py
tools/binman/ftest.py
tools/binman/test/80_fill_empty.dts [new file with mode: 0644]

index 7210a8324a0a6168460bf327ba1d85a0b4819292..dcfe978a5bf7a1a521ac067438c036fb49c51dac 100644 (file)
@@ -23,7 +23,7 @@ class Entry_fill(Entry):
     """
     def __init__(self, section, etype, node):
         Entry.__init__(self, section, etype, node)
-        if not self.size:
+        if self.size is None:
             self.Raise("'fill' entry must have a size property")
         self.fill_value = fdt_util.GetByte(self._node, 'fill-byte', 0)
 
index a8456c261570a70d37a6238f5883416e0e2ca26f..7f82264f8ad193e6f658f75cdda14e55ded5ff93 100644 (file)
@@ -1364,6 +1364,11 @@ class TestFunctional(unittest.TestCase):
         self.assertIn("Node '/binman/u-boot': Please use 'offset' instead of "
                       "'pos'", str(e.exception))
 
+    def testFillZero(self):
+        """Test for an fill entry type with a size of 0"""
+        data = self._DoReadFile('80_fill_empty.dts')
+        self.assertEqual(chr(0) * 16, data)
+
 
 if __name__ == "__main__":
     unittest.main()
diff --git a/tools/binman/test/80_fill_empty.dts b/tools/binman/test/80_fill_empty.dts
new file mode 100644 (file)
index 0000000..2b78d3a
--- /dev/null
@@ -0,0 +1,15 @@
+// SPDX-License-Identifier: GPL-2.0+
+/dts-v1/;
+
+/ {
+       #address-cells = <1>;
+       #size-cells = <1>;
+
+       binman {
+               size = <16>;
+               fill {
+                       size = <0>;
+                       fill-byte = [ff];
+               };
+       };
+};