mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-27 17:41:34 +00:00
binman: Drop CheckEntries()
This method introduces a separation between packing and checking that is different for sections. In order to handle compression properly, we need to be able to deal with a section's size being smaller than the uncompressed size of its contents. It is easier to make this work if everything happens in the Pack() method. The only real user of CheckEntries() is entry_Section and it can call it directly. Drop the call from 'control' and handle it locally. Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
parent
93f3c2ea14
commit
0b65769c2e
3 changed files with 13 additions and 14 deletions
tools/binman
|
@ -712,40 +712,38 @@ size of an entry. The 'current' image offset is passed in, and the function
|
|||
returns the offset immediately after the entry being packed. The default
|
||||
implementation of Pack() is usually sufficient.
|
||||
|
||||
Note: for sections, this also sets the size of the entry to be large enough
|
||||
for all entries it contains.
|
||||
Note: for sections, this also checks that the entries do not overlap, nor extend
|
||||
outside the section. If the section does not have a defined size, the size is
|
||||
set large enough to hold all the entries.
|
||||
|
||||
6. CheckEntries() - checks that the entries do not overlap, nor extend
|
||||
outside the image.
|
||||
|
||||
7. SetImagePos() - sets the image position of every entry. This is the absolute
|
||||
6. SetImagePos() - sets the image position of every entry. This is the absolute
|
||||
position 'image-pos', as opposed to 'offset' which is relative to the containing
|
||||
section. This must be done after all offsets are known, which is why it is quite
|
||||
late in the ordering.
|
||||
|
||||
8. SetCalculatedProperties() - update any calculated properties in the device
|
||||
7. SetCalculatedProperties() - update any calculated properties in the device
|
||||
tree. This sets the correct 'offset' and 'size' vaues, for example.
|
||||
|
||||
9. ProcessEntryContents() - this calls Entry.ProcessContents() on each entry.
|
||||
8. ProcessEntryContents() - this calls Entry.ProcessContents() on each entry.
|
||||
The default implementatoin does nothing. This can be overriden to adjust the
|
||||
contents of an entry in some way. For example, it would be possible to create
|
||||
an entry containing a hash of the contents of some other entries. At this
|
||||
stage the offset and size of entries should not be adjusted unless absolutely
|
||||
necessary, since it requires a repack (going back to PackEntries()).
|
||||
|
||||
10. ResetForPack() - if the ProcessEntryContents() step failed, in that an entry
|
||||
9. ResetForPack() - if the ProcessEntryContents() step failed, in that an entry
|
||||
has changed its size, then there is no alternative but to go back to step 5 and
|
||||
try again, repacking the entries with the updated size. ResetForPack() removes
|
||||
the fixed offset/size values added by binman, so that the packing can start from
|
||||
scratch.
|
||||
|
||||
11. WriteSymbols() - write the value of symbols into the U-Boot SPL binary.
|
||||
10. WriteSymbols() - write the value of symbols into the U-Boot SPL binary.
|
||||
See 'Access to binman entry offsets at run time' below for a description of
|
||||
what happens in this stage.
|
||||
|
||||
12. BuildImage() - builds the image and writes it to a file
|
||||
11. BuildImage() - builds the image and writes it to a file
|
||||
|
||||
13. WriteMap() - writes a text file containing a map of the image. This is the
|
||||
12. WriteMap() - writes a text file containing a map of the image. This is the
|
||||
final step.
|
||||
|
||||
|
||||
|
|
|
@ -513,7 +513,6 @@ def ProcessImage(image, update_fdt, write_map, get_contents=True,
|
|||
for pack_pass in range(passes):
|
||||
try:
|
||||
image.PackEntries()
|
||||
image.CheckEntries()
|
||||
except Exception as e:
|
||||
if write_map:
|
||||
fname = image.WriteMap()
|
||||
|
|
|
@ -267,7 +267,9 @@ class Entry_section(Entry):
|
|||
size = self.CheckSize()
|
||||
self.size = size
|
||||
|
||||
return super().Pack(offset)
|
||||
offset = super().Pack(offset)
|
||||
self.CheckEntries()
|
||||
return offset
|
||||
|
||||
def _PackEntries(self):
|
||||
"""Pack all entries into the section"""
|
||||
|
|
Loading…
Add table
Reference in a new issue