Changeset 105670 in vbox for trunk/src/VBox/Devices/EFI/FirmwareNew/IntelFsp2Pkg/Tools/SplitFspBin.py
- Timestamp:
- Aug 14, 2024 1:16:30 PM (7 months ago)
- svn:sync-xref-src-repo-rev:
- 164367
- Location:
- trunk/src/VBox/Devices/EFI/FirmwareNew
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/EFI/FirmwareNew
-
Property svn:mergeinfo
changed from (toggle deleted branches)
to (toggle deleted branches)/vendor/edk2/current 103735-103757,103769-103776,129194-159268 /vendor/edk2/current 103735-103757,103769-103776,129194-164365
-
Property svn:mergeinfo
changed from (toggle deleted branches)
-
trunk/src/VBox/Devices/EFI/FirmwareNew/IntelFsp2Pkg/Tools/SplitFspBin.py
r99404 r105670 470 470 self.FvExtHdr = None 471 471 self.FfsList = [] 472 self.ChildFvList = [] 472 473 473 474 def ParseFv(self): … … 484 485 else: 485 486 ffs = FirmwareFile (offset, self.FvData[offset:offset + int(ffshdr.Size)]) 486 ffs.ParseFfs() 487 self.FfsList.append(ffs) 487 # check if there is child fv 488 childfvfound = 0 489 if (ffs.FfsHdr.Type == EFI_FV_FILETYPE.FIRMWARE_VOLUME_IMAGE): 490 csoffset = offset + sizeof (EFI_FFS_FILE_HEADER) 491 csoffset = AlignPtr(csoffset, 4) 492 # find fv section 493 while csoffset < (offset + int(ffs.FfsHdr.Size)): 494 cshdr = EFI_COMMON_SECTION_HEADER.from_buffer (self.FvData, csoffset) 495 if (cshdr.Type == EFI_SECTION_TYPE.FIRMWARE_VOLUME_IMAGE): 496 childfvfound = 1 497 break 498 else: 499 # check next section 500 csoffset += int(cshdr.Size) 501 csoffset = AlignPtr(csoffset, 4) 502 if (childfvfound): 503 childfvoffset = csoffset + sizeof (EFI_COMMON_SECTION_HEADER) 504 childfvhdr = EFI_FIRMWARE_VOLUME_HEADER.from_buffer (self.FvData, childfvoffset) 505 childfv = FirmwareVolume (childfvoffset, self.FvData[childfvoffset:childfvoffset + int(childfvhdr.FvLength)]) 506 childfv.ParseFv () 507 self.ChildFvList.append(childfv) 508 else: 509 ffs.ParseFfs() 510 self.FfsList.append(ffs) 488 511 offset += int(ffshdr.Size) 489 512 offset = AlignPtr(offset) … … 790 813 hfsp.close() 791 814 815 def GetImageFromFv (fd, parentfvoffset, fv, imglist): 816 for ffs in fv.FfsList: 817 for sec in ffs.SecList: 818 if sec.SecHdr.Type in [EFI_SECTION_TYPE.TE, EFI_SECTION_TYPE.PE32]: # TE or PE32 819 offset = fd.Offset + parentfvoffset + fv.Offset + ffs.Offset + sec.Offset + sizeof(sec.SecHdr) 820 imglist.append ((offset, len(sec.SecData) - sizeof(sec.SecHdr))) 821 792 822 def RebaseFspBin (FspBinary, FspComponent, FspBase, OutputDir, OutputFile): 793 823 fd = FirmwareDevice(0, FspBinary) … … 833 863 for fvidx in fsp.FvIdxList: 834 864 fv = fd.FvList[fvidx] 835 for ffs in fv.FfsList:836 for sec in ffs.SecList:837 if sec.SecHdr.Type in [EFI_SECTION_TYPE.TE, EFI_SECTION_TYPE.PE32]: # TE or PE32838 offset = fd.Offset + fv.Offset + ffs.Offset + sec.Offset + sizeof(sec.SecHdr)839 imglist.append ((offset, len(sec.SecData) - sizeof(sec.SecHdr)))865 GetImageFromFv (fd, 0, fv, imglist) 866 # get image from child fv 867 for childfv in fv.ChildFvList: 868 print ("Get image from child fv of fv%d, parent fv offset: 0x%x" % (fvidx, fv.Offset)) 869 GetImageFromFv (fd, fv.Offset, childfv, imglist) 840 870 841 871 fcount = 0
Note:
See TracChangeset
for help on using the changeset viewer.