binman: Replace FILENAME_ALIGN 16 with ATTRIBUTE_ALIGN 4
cbfsutil changed to 4-byte alignment for filenames instead of 16. Adjust the binman implementation to do the same. This mirrors commit 5779ca718c in coreboot. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
@@ -42,7 +42,7 @@ HEADER_VERSION2 = 0x31313132
|
|||||||
FILE_HEADER_FORMAT = b'>8sIIII'
|
FILE_HEADER_FORMAT = b'>8sIIII'
|
||||||
FILE_HEADER_LEN = 0x18
|
FILE_HEADER_LEN = 0x18
|
||||||
FILE_MAGIC = b'LARCHIVE'
|
FILE_MAGIC = b'LARCHIVE'
|
||||||
FILENAME_ALIGN = 16 # Filename lengths are aligned to this
|
ATTRIBUTE_ALIGN = 4 # All attribute sizes must be divisible by this
|
||||||
|
|
||||||
# A stage header containing information about 'stage' files
|
# A stage header containing information about 'stage' files
|
||||||
# Yes this is correct: this header is in litte-endian format
|
# Yes this is correct: this header is in litte-endian format
|
||||||
@@ -186,7 +186,7 @@ def _pack_string(instr):
|
|||||||
String with required padding (at least one 0x00 byte) at the end
|
String with required padding (at least one 0x00 byte) at the end
|
||||||
"""
|
"""
|
||||||
val = tools.to_bytes(instr)
|
val = tools.to_bytes(instr)
|
||||||
pad_len = align_int(len(val) + 1, FILENAME_ALIGN)
|
pad_len = align_int(len(val) + 1, ATTRIBUTE_ALIGN)
|
||||||
return val + tools.get_bytes(0, pad_len - len(val))
|
return val + tools.get_bytes(0, pad_len - len(val))
|
||||||
|
|
||||||
|
|
||||||
@@ -300,7 +300,7 @@ class CbfsFile(object):
|
|||||||
CbfsFile object containing the file information
|
CbfsFile object containing the file information
|
||||||
"""
|
"""
|
||||||
cfile = CbfsFile('', TYPE_EMPTY, b'', None)
|
cfile = CbfsFile('', TYPE_EMPTY, b'', None)
|
||||||
cfile.size = space_to_use - FILE_HEADER_LEN - FILENAME_ALIGN
|
cfile.size = space_to_use - FILE_HEADER_LEN - ATTRIBUTE_ALIGN
|
||||||
cfile.erase_byte = erase_byte
|
cfile.erase_byte = erase_byte
|
||||||
return cfile
|
return cfile
|
||||||
|
|
||||||
@@ -859,8 +859,8 @@ class CbfsReader(object):
|
|||||||
"""
|
"""
|
||||||
val = b''
|
val = b''
|
||||||
while True:
|
while True:
|
||||||
data = fd.read(FILENAME_ALIGN)
|
data = fd.read(ATTRIBUTE_ALIGN)
|
||||||
if len(data) < FILENAME_ALIGN:
|
if len(data) < ATTRIBUTE_ALIGN:
|
||||||
return None
|
return None
|
||||||
pos = data.find(b'\0')
|
pos = data.find(b'\0')
|
||||||
if pos == -1:
|
if pos == -1:
|
||||||
|
@@ -96,7 +96,7 @@ class TestCbfs(unittest.TestCase):
|
|||||||
self.assertEqual(arch, cbfs.arch)
|
self.assertEqual(arch, cbfs.arch)
|
||||||
return cbfs
|
return cbfs
|
||||||
|
|
||||||
def _check_uboot(self, cbfs, ftype=cbfs_util.TYPE_RAW, offset=0x28,
|
def _check_uboot(self, cbfs, ftype=cbfs_util.TYPE_RAW, offset=0x20,
|
||||||
data=U_BOOT_DATA, cbfs_offset=None):
|
data=U_BOOT_DATA, cbfs_offset=None):
|
||||||
"""Check that the U-Boot file is as expected
|
"""Check that the U-Boot file is as expected
|
||||||
|
|
||||||
@@ -122,7 +122,7 @@ class TestCbfs(unittest.TestCase):
|
|||||||
self.assertEqual(len(data), cfile.memlen)
|
self.assertEqual(len(data), cfile.memlen)
|
||||||
return cfile
|
return cfile
|
||||||
|
|
||||||
def _check_dtb(self, cbfs, offset=0x28, data=U_BOOT_DTB_DATA,
|
def _check_dtb(self, cbfs, offset=0x24, data=U_BOOT_DTB_DATA,
|
||||||
cbfs_offset=None):
|
cbfs_offset=None):
|
||||||
"""Check that the U-Boot dtb file is as expected
|
"""Check that the U-Boot dtb file is as expected
|
||||||
|
|
||||||
@@ -437,8 +437,9 @@ class TestCbfs(unittest.TestCase):
|
|||||||
pos = fd.tell()
|
pos = fd.tell()
|
||||||
|
|
||||||
# Create a new CBFS with only the first 4 bytes of the compression tag,
|
# Create a new CBFS with only the first 4 bytes of the compression tag,
|
||||||
# then try to read the file
|
# then try to read the file. Note that the tag gets pushed out 4 bytes
|
||||||
tag_pos = pos + cbfs_util.FILE_HEADER_LEN + cbfs_util.FILENAME_ALIGN
|
tag_pos = (4 + pos + cbfs_util.FILE_HEADER_LEN +
|
||||||
|
cbfs_util.ATTRIBUTE_ALIGN)
|
||||||
newdata = data[:tag_pos + 4]
|
newdata = data[:tag_pos + 4]
|
||||||
with test_util.capture_sys_output() as (stdout, _stderr):
|
with test_util.capture_sys_output() as (stdout, _stderr):
|
||||||
with io.BytesIO(newdata) as fd:
|
with io.BytesIO(newdata) as fd:
|
||||||
@@ -489,7 +490,7 @@ class TestCbfs(unittest.TestCase):
|
|||||||
load = 0xfef20000
|
load = 0xfef20000
|
||||||
entry = load + 2
|
entry = load + 2
|
||||||
|
|
||||||
cfile = self._check_uboot(cbfs, cbfs_util.TYPE_STAGE, offset=0x28,
|
cfile = self._check_uboot(cbfs, cbfs_util.TYPE_STAGE, offset=0x20,
|
||||||
data=U_BOOT_DATA + U_BOOT_DTB_DATA)
|
data=U_BOOT_DATA + U_BOOT_DTB_DATA)
|
||||||
|
|
||||||
self.assertEqual(entry, cfile.entry)
|
self.assertEqual(entry, cfile.entry)
|
||||||
@@ -520,7 +521,7 @@ class TestCbfs(unittest.TestCase):
|
|||||||
self.assertIn('u-boot', cbfs.files)
|
self.assertIn('u-boot', cbfs.files)
|
||||||
cfile = cbfs.files['u-boot']
|
cfile = cbfs.files['u-boot']
|
||||||
self.assertEqual(cfile.name, 'u-boot')
|
self.assertEqual(cfile.name, 'u-boot')
|
||||||
self.assertEqual(cfile.offset, 56)
|
self.assertEqual(cfile.offset, 0x30)
|
||||||
self.assertEqual(cfile.data, COMPRESS_DATA)
|
self.assertEqual(cfile.data, COMPRESS_DATA)
|
||||||
self.assertEqual(cfile.ftype, cbfs_util.TYPE_RAW)
|
self.assertEqual(cfile.ftype, cbfs_util.TYPE_RAW)
|
||||||
self.assertEqual(cfile.compress, cbfs_util.COMPRESS_LZ4)
|
self.assertEqual(cfile.compress, cbfs_util.COMPRESS_LZ4)
|
||||||
@@ -529,7 +530,7 @@ class TestCbfs(unittest.TestCase):
|
|||||||
self.assertIn('u-boot-dtb', cbfs.files)
|
self.assertIn('u-boot-dtb', cbfs.files)
|
||||||
cfile = cbfs.files['u-boot-dtb']
|
cfile = cbfs.files['u-boot-dtb']
|
||||||
self.assertEqual(cfile.name, 'u-boot-dtb')
|
self.assertEqual(cfile.name, 'u-boot-dtb')
|
||||||
self.assertEqual(cfile.offset, 56)
|
self.assertEqual(cfile.offset, 0x34)
|
||||||
self.assertEqual(cfile.data, COMPRESS_DATA)
|
self.assertEqual(cfile.data, COMPRESS_DATA)
|
||||||
self.assertEqual(cfile.ftype, cbfs_util.TYPE_RAW)
|
self.assertEqual(cfile.ftype, cbfs_util.TYPE_RAW)
|
||||||
self.assertEqual(cfile.compress, cbfs_util.COMPRESS_LZMA)
|
self.assertEqual(cfile.compress, cbfs_util.COMPRESS_LZMA)
|
||||||
@@ -598,8 +599,8 @@ class TestCbfs(unittest.TestCase):
|
|||||||
data = cbw.get_data()
|
data = cbw.get_data()
|
||||||
|
|
||||||
cbfs = cbfs_util.CbfsReader(data)
|
cbfs = cbfs_util.CbfsReader(data)
|
||||||
self.assertEqual(0x28, cbfs.files['u-boot'].cbfs_offset)
|
self.assertEqual(0x20, cbfs.files['u-boot'].cbfs_offset)
|
||||||
self.assertEqual(0x68, cbfs.files['u-boot-dtb'].cbfs_offset)
|
self.assertEqual(0x64, cbfs.files['u-boot-dtb'].cbfs_offset)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
@@ -2667,12 +2667,12 @@ class TestFunctional(unittest.TestCase):
|
|||||||
'cbfs:offset': 0,
|
'cbfs:offset': 0,
|
||||||
'cbfs:size': len(data),
|
'cbfs:size': len(data),
|
||||||
'cbfs:image-pos': 0,
|
'cbfs:image-pos': 0,
|
||||||
'cbfs/u-boot:offset': 0x38,
|
'cbfs/u-boot:offset': 0x30,
|
||||||
'cbfs/u-boot:uncomp-size': len(U_BOOT_DATA),
|
'cbfs/u-boot:uncomp-size': len(U_BOOT_DATA),
|
||||||
'cbfs/u-boot:image-pos': 0x38,
|
'cbfs/u-boot:image-pos': 0x30,
|
||||||
'cbfs/u-boot-dtb:offset': 0xa8,
|
'cbfs/u-boot-dtb:offset': 0xa4,
|
||||||
'cbfs/u-boot-dtb:size': len(U_BOOT_DATA),
|
'cbfs/u-boot-dtb:size': len(U_BOOT_DATA),
|
||||||
'cbfs/u-boot-dtb:image-pos': 0xa8,
|
'cbfs/u-boot-dtb:image-pos': 0xa4,
|
||||||
}, props)
|
}, props)
|
||||||
|
|
||||||
def testCbfsBadType(self):
|
def testCbfsBadType(self):
|
||||||
@@ -2854,7 +2854,7 @@ class TestFunctional(unittest.TestCase):
|
|||||||
' u-boot 0 4 u-boot 0',
|
' u-boot 0 4 u-boot 0',
|
||||||
' section 100 %x section 100' % section_size,
|
' section 100 %x section 100' % section_size,
|
||||||
' cbfs 100 400 cbfs 0',
|
' cbfs 100 400 cbfs 0',
|
||||||
' u-boot 128 4 u-boot 28',
|
' u-boot 120 4 u-boot 20',
|
||||||
' u-boot-dtb 180 105 u-boot-dtb 80 3c9',
|
' u-boot-dtb 180 105 u-boot-dtb 80 3c9',
|
||||||
' u-boot-dtb 500 %x u-boot-dtb 400 3c9' % fdt_size,
|
' u-boot-dtb 500 %x u-boot-dtb 400 3c9' % fdt_size,
|
||||||
' fdtmap %x 3bd fdtmap %x' %
|
' fdtmap %x 3bd fdtmap %x' %
|
||||||
|
Reference in New Issue
Block a user