VirtualBox

Ignore:
Timestamp:
Mar 31, 2025 11:31:09 AM (2 weeks ago)
Author:
vboxsync
svn:sync-xref-src-repo-rev:
168237
Message:

Devices/EFI/FirmwareNew: Merge edk2-stable202502 from the vendor branch and make it build for the important platforms, bugref:4643

Location:
trunk/src/VBox/Devices/EFI/FirmwareNew
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/EFI/FirmwareNew

  • trunk/src/VBox/Devices/EFI/FirmwareNew/UefiPayloadPkg/UniversalPayloadBuild.py

    r105670 r108794  
    113113
    114114def BuildUniversalPayload(Args):
     115    DscPath = os.path.normpath(Args.DscPath)
     116    print("Building FIT for DSC file %s"%DscPath)
    115117    BuildTarget = Args.Target
    116118    ToolChain = Args.ToolChain
     
    141143    EntryOutputDir = os.path.join(BuildDir, "{}_{}".format (BuildTarget, PayloadEntryToolChain), os.path.normpath("{}/UefiPayloadPkg/UefiPayloadEntry/{}/DEBUG/{}.dll".format (Args.Arch, UpldEntryFile, UpldEntryFile)))
    142144    EntryModuleInf = os.path.normpath("UefiPayloadPkg/UefiPayloadEntry/{}.inf".format (UpldEntryFile))
    143     DscPath = os.path.normpath("UefiPayloadPkg/UefiPayloadPkg.dsc")
    144145    DxeFvOutputDir = os.path.join(BuildDir, "{}_{}".format (BuildTarget, ToolChain), os.path.normpath("FV/DXEFV.Fv"))
    145146    BdsFvOutputDir = os.path.join(BuildDir, "{}_{}".format (BuildTarget, ToolChain), os.path.normpath("FV/BDSFV.Fv"))
     147    SecFvOutputDir = os.path.join(BuildDir, "{}_{}".format (BuildTarget, ToolChain), os.path.normpath("FV/SECFV.Fv"))
    146148    NetworkFvOutputDir = os.path.join(BuildDir, "{}_{}".format (BuildTarget, ToolChain), os.path.normpath("FV/NETWORKFV.Fv"))
    147149    PayloadReportPath = os.path.join(BuildDir, "UefiUniversalPayload.txt")
     
    212214            ['uefi_fv',        os.path.join(BuildDir, "{}_{}".format (BuildTarget, ToolChain), os.path.normpath("FV/DXEFV.Fv"))    ],
    213215            ['bds_fv',         os.path.join(BuildDir, "{}_{}".format (BuildTarget, ToolChain), os.path.normpath("FV/BDSFV.Fv"))    ],
     216            ['sec_fv',         os.path.join(BuildDir, "{}_{}".format (BuildTarget, ToolChain), os.path.normpath("FV/SECFV.Fv"))    ],
    214217            ['network_fv',     os.path.join(BuildDir, "{}_{}".format (BuildTarget, ToolChain), os.path.normpath("FV/NETWORKFV.Fv"))],
    215218        ]
     
    234237        fit_image_info_header.UefifvPath    = DxeFvOutputDir
    235238        fit_image_info_header.BdsfvPath     = BdsFvOutputDir
     239        fit_image_info_header.SecfvPath     = SecFvOutputDir
    236240        fit_image_info_header.NetworkfvPath = NetworkFvOutputDir
    237241        fit_image_info_header.DataOffset    = 0x1000
     
    263267        RelocBinary     = b''
    264268        PeCoff = pefile.PE (TargetRebaseFile)
    265         for reloc in PeCoff.DIRECTORY_ENTRY_BASERELOC:
    266             for entry in reloc.entries:
    267                 if (entry.type == 0):
    268                     continue
    269                 Type = entry.type
    270                 Offset = entry.rva + fit_image_info_header.DataOffset
    271                 RelocBinary += Type.to_bytes (8, 'little') + Offset.to_bytes (8, 'little')
     269        if hasattr(PeCoff, 'DIRECTORY_ENTRY_BASERELOC'):
     270            for reloc in PeCoff.DIRECTORY_ENTRY_BASERELOC:
     271                for entry in reloc.entries:
     272                    if (entry.type == 0):
     273                        continue
     274                    Type = entry.type
     275                    Offset = entry.rva + fit_image_info_header.DataOffset
     276                    RelocBinary += Offset.to_bytes (8, 'little') + Type.to_bytes (8, 'little')
    272277        RelocBinary += b'\x00' * (0x1000 - (len(RelocBinary) % 0x1000))
    273278
     
    322327    parser.add_argument("-f", "--Fit", action='store_true', help='Build UniversalPayload file as UniversalPayload.fit', default=False)
    323328    parser.add_argument('-l', "--LoadAddress", type=int, help='Specify payload load address', default =0x000800000)
     329    parser.add_argument('-c', '--DscPath', type=str, default="UefiPayloadPkg/UefiPayloadPkg.dsc", help='Path to the DSC file')
    324330
    325331    args = parser.parse_args()
Note: See TracChangeset for help on using the changeset viewer.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette