X-Git-Url: https://git.proxmox.com/?p=mirror_edk2.git;a=blobdiff_plain;f=BaseTools%2FSource%2FC%2FGenFv%2FGenFv.c;h=77537552bd40fcc2e32938cb3d6b30902e243984;hp=be3184031056a53dcea2bd3d6e8116a332d32fda;hb=f7496d717357b9af78414d19679b073403812340;hpb=39456d00f36e04b7e7efb208f350f4e83b6c3531 diff --git a/BaseTools/Source/C/GenFv/GenFv.c b/BaseTools/Source/C/GenFv/GenFv.c index be31840310..77537552bd 100644 --- a/BaseTools/Source/C/GenFv/GenFv.c +++ b/BaseTools/Source/C/GenFv/GenFv.c @@ -1,17 +1,17 @@ /** @file - This contains all code necessary to build the GenFvImage.exe utility. + This contains all code necessary to build the GenFvImage.exe utility. This utility relies heavily on the GenFvImage Lib. Definitions for both - can be found in the Tiano Firmware Volume Generation Utility + can be found in the Tiano Firmware Volume Generation Utility Specification, review draft. -Copyright (c) 2007 - 2017, Intel Corporation. All rights reserved.
-This program and the accompanying materials -are licensed and made available under the terms and conditions of the BSD License -which accompanies this distribution. The full text of the license may be found at -http://opensource.org/licenses/bsd-license.php - -THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, -WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. +Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.
+This program and the accompanying materials +are licensed and made available under the terms and conditions of the BSD License +which accompanies this distribution. The full text of the license may be found at +http://opensource.org/licenses/bsd-license.php + +THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, +WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. **/ @@ -38,7 +38,7 @@ EFI_GUID mEfiFirmwareFileSystem2Guid = EFI_FIRMWARE_FILE_SYSTEM2_GUID; EFI_GUID mEfiFirmwareFileSystem3Guid = EFI_FIRMWARE_FILE_SYSTEM3_GUID; STATIC -VOID +VOID Version ( VOID ) @@ -62,7 +62,7 @@ Returns: } STATIC -VOID +VOID Usage ( VOID ) @@ -86,11 +86,11 @@ Returns: // Summary usage // fprintf (stdout, "\nUsage: %s [options]\n\n", UTILITY_NAME); - + // // Copyright declaration - // - fprintf (stdout, "Copyright (c) 2007 - 2014, Intel Corporation. All rights reserved.\n\n"); + // + fprintf (stdout, "Copyright (c) 2007 - 2018, Intel Corporation. All rights reserved.\n\n"); // // Details Option @@ -128,7 +128,7 @@ Returns: FV base address when current FV base address is set.\n"); fprintf (stdout, " -m logfile, --map logfile\n\ Logfile is the output fv map file name. if it is not\n\ - given, the FvName.map will be the default map file name\n"); + given, the FvName.map will be the default map file name\n"); fprintf (stdout, " -g Guid, --guid Guid\n\ GuidValue is one specific capsule guid value\n\ or fv file system guid value.\n\ @@ -141,7 +141,7 @@ Returns: Capsule OEM Flag is an integer between 0x0000 and 0xffff\n"); fprintf (stdout, " --capheadsize HeadSize\n\ HeadSize is one HEX or DEC format value\n\ - HeadSize is required by Capsule Image.\n"); + HeadSize is required by Capsule Image.\n"); fprintf (stdout, " -c, --capsule Create Capsule Image.\n"); fprintf (stdout, " -p, --dump Dump Capsule Image header.\n"); fprintf (stdout, " -v, --verbose Turn on verbose output with informational messages.\n"); @@ -170,14 +170,14 @@ Arguments: FvInfFileName The name of an FV image description file or Capsule Image. Arguments come in pair in any order. - -I FvInfFileName + -I FvInfFileName Returns: EFI_SUCCESS No error conditions detected. EFI_INVALID_PARAMETER One or more of the input parameters is invalid. - EFI_OUT_OF_RESOURCES A resource required by the utility was unavailable. - Most commonly this will be memory allocation + EFI_OUT_OF_RESOURCES A resource required by the utility was unavailable. + Most commonly this will be memory allocation or file creation. EFI_LOAD_ERROR GenFvImage.lib could not be loaded. EFI_ABORTED Error executing the GenFvImage lib. @@ -216,7 +216,7 @@ Returns: Status = EFI_SUCCESS; SetUtilityName (UTILITY_NAME); - + if (argc == 1) { Error (NULL, 0, 1001, "Missing options", "No input options specified."); Usage (); @@ -227,13 +227,13 @@ Returns: // Init global data to Zero // memset (&mFvDataInfo, 0, sizeof (FV_INFO)); - memset (&mCapDataInfo, 0, sizeof (CAP_INFO)); + memset (&mCapDataInfo, 0, sizeof (CAP_INFO)); // // Set the default FvGuid // memcpy (&mFvDataInfo.FvFileSystemGuid, &mEfiFirmwareFileSystem2Guid, sizeof (EFI_GUID)); mFvDataInfo.ForceRebase = -1; - + // // Parse command line // @@ -243,12 +243,12 @@ Returns: if ((stricmp (argv[0], "-h") == 0) || (stricmp (argv[0], "--help") == 0)) { Version (); Usage (); - return STATUS_SUCCESS; + return STATUS_SUCCESS; } if (stricmp (argv[0], "--version") == 0) { Version (); - return STATUS_SUCCESS; + return STATUS_SUCCESS; } while (argc > 0) { @@ -260,7 +260,7 @@ Returns: } argc -= 2; argv += 2; - continue; + continue; } if ((stricmp (argv[0], "-a") == 0) || (stricmp (argv[0], "--addrfile") == 0)) { @@ -271,7 +271,7 @@ Returns: } argc -= 2; argv += 2; - continue; + continue; } if ((stricmp (argv[0], "-o") == 0) || (stricmp (argv[0], "--outputfile") == 0)) { @@ -282,54 +282,54 @@ Returns: } argc -= 2; argv += 2; - continue; + continue; } if ((stricmp (argv[0], "-r") == 0) || (stricmp (argv[0], "--baseaddr") == 0)) { Status = AsciiStringToUint64 (argv[1], FALSE, &TempNumber); if (EFI_ERROR (Status)) { Error (NULL, 0, 1003, "Invalid option value", "%s = %s", argv[0], argv[1]); - return STATUS_ERROR; + return STATUS_ERROR; } mFvDataInfo.BaseAddress = TempNumber; mFvDataInfo.BaseAddressSet = TRUE; argc -= 2; argv += 2; - continue; + continue; } if ((stricmp (argv[0], "-b") == 0) || (stricmp (argv[0], "--blocksize") == 0)) { Status = AsciiStringToUint64 (argv[1], FALSE, &TempNumber); if (EFI_ERROR (Status)) { Error (NULL, 0, 1003, "Invalid option value", "%s = %s", argv[0], argv[1]); - return STATUS_ERROR; + return STATUS_ERROR; } if (TempNumber == 0) { Error (NULL, 0, 1003, "Invalid option value", "Fv block size can't be be set to zero"); - return STATUS_ERROR; + return STATUS_ERROR; } mFvDataInfo.FvBlocks[0].Length = (UINT32) TempNumber; DebugMsg (NULL, 0, 9, "FV Block Size", "%s = 0x%llx", EFI_BLOCK_SIZE_STRING, (unsigned long long) TempNumber); argc -= 2; argv += 2; - continue; + continue; } if ((stricmp (argv[0], "-n") == 0) || (stricmp (argv[0], "--numberblock") == 0)) { Status = AsciiStringToUint64 (argv[1], FALSE, &TempNumber); if (EFI_ERROR (Status)) { Error (NULL, 0, 1003, "Invalid option value", "%s = %s", argv[0], argv[1]); - return STATUS_ERROR; + return STATUS_ERROR; } if (TempNumber == 0) { Error (NULL, 0, 1003, "Invalid option value", "Fv block number can't be set to zero"); - return STATUS_ERROR; + return STATUS_ERROR; } mFvDataInfo.FvBlocks[0].NumBlocks = (UINT32) TempNumber; DebugMsg (NULL, 0, 9, "FV Number Block", "%s = 0x%llx", EFI_NUM_BLOCKS_STRING, (unsigned long long) TempNumber); argc -= 2; argv += 2; - continue; + continue; } if ((strcmp (argv[0], "-f") == 0) || (stricmp (argv[0], "--ffsfile") == 0)) { @@ -348,38 +348,38 @@ Returns: argv += 2; if (argc > 0) { - if ((stricmp (argv[0], "-s") == 0) || (stricmp (argv[0], "--filetakensize") == 0)) { - if (argv[1] == NULL) { - Error (NULL, 0, 1003, "Invalid option value", "Ffsfile Size can't be null"); - return STATUS_ERROR; - } - Status = AsciiStringToUint64 (argv[1], FALSE, &TempNumber); - if (EFI_ERROR (Status)) { - Error (NULL, 0, 1003, "Invalid option value", "%s = %s", argv[0], argv[1]); - return STATUS_ERROR; - } - mFvDataInfo.SizeofFvFiles[Index] = (UINT32) TempNumber; - DebugMsg (NULL, 0, 9, "FV component file size", "the %uth size is %s", (unsigned) Index + 1, argv[1]); - argc -= 2; - argv += 2; + if ((stricmp (argv[0], "-s") == 0) || (stricmp (argv[0], "--filetakensize") == 0)) { + if (argv[1] == NULL) { + Error (NULL, 0, 1003, "Invalid option value", "Ffsfile Size can't be null"); + return STATUS_ERROR; + } + Status = AsciiStringToUint64 (argv[1], FALSE, &TempNumber); + if (EFI_ERROR (Status)) { + Error (NULL, 0, 1003, "Invalid option value", "%s = %s", argv[0], argv[1]); + return STATUS_ERROR; + } + mFvDataInfo.SizeofFvFiles[Index] = (UINT32) TempNumber; + DebugMsg (NULL, 0, 9, "FV component file size", "the %uth size is %s", (unsigned) Index + 1, argv[1]); + argc -= 2; + argv += 2; } } Index ++; - continue; + continue; } if ((stricmp (argv[0], "-s") == 0) || (stricmp (argv[0], "--filetakensize") == 0)) { Error (NULL, 0, 1003, "Invalid option", "It must be specified together with -f option to specify the file size."); - return STATUS_ERROR; + return STATUS_ERROR; } if ((stricmp (argv[0], "-c") == 0) || (stricmp (argv[0], "--capsule") == 0)) { CapsuleFlag = TRUE; argc --; argv ++; - continue; + continue; } - + if ((strcmp (argv[0], "-F") == 0) || (stricmp (argv[0], "--force-rebase") == 0)) { if (argv[1] == NULL) { Error (NULL, 0, 1003, "Invalid option value", "Froce rebase flag can't be null"); @@ -397,8 +397,8 @@ Returns: argc -= 2; argv += 2; - continue; - } + continue; + } if (stricmp (argv[0], "--capheadsize") == 0) { // @@ -407,13 +407,13 @@ Returns: Status = AsciiStringToUint64 (argv[1], FALSE, &TempNumber); if (EFI_ERROR (Status)) { Error (NULL, 0, 1003, "Invalid option value", "%s = %s", argv[0], argv[1]); - return STATUS_ERROR; + return STATUS_ERROR; } mCapDataInfo.HeaderSize = (UINT32) TempNumber; DebugMsg (NULL, 0, 9, "Capsule Header size", "%s = 0x%llx", EFI_CAPSULE_HEADER_SIZE_STRING, (unsigned long long) TempNumber); argc -= 2; argv += 2; - continue; + continue; } if (stricmp (argv[0], "--capflag") == 0) { @@ -437,7 +437,7 @@ Returns: DebugMsg (NULL, 0, 9, "Capsule Flag", argv[1]); argc -= 2; argv += 2; - continue; + continue; } if (stricmp (argv[0], "--capoemflag") == 0) { @@ -468,7 +468,7 @@ Returns: DebugMsg (NULL, 0, 9, "Capsule Guid", "%s = %s", EFI_CAPSULE_GUID_STRING, argv[1]); argc -= 2; argv += 2; - continue; + continue; } if ((stricmp (argv[0], "-g") == 0) || (stricmp (argv[0], "--guid") == 0)) { @@ -486,7 +486,7 @@ Returns: DebugMsg (NULL, 0, 9, "FV Guid", "%s = %s", EFI_FV_FILESYSTEMGUID_STRING, argv[1]); argc -= 2; argv += 2; - continue; + continue; } if (stricmp (argv[0], "--FvNameGuid") == 0) { @@ -502,14 +502,14 @@ Returns: DebugMsg (NULL, 0, 9, "FV Name Guid", "%s = %s", EFI_FV_NAMEGUID_STRING, argv[1]); argc -= 2; argv += 2; - continue; + continue; } if ((stricmp (argv[0], "-p") == 0) || (stricmp (argv[0], "--dump") == 0)) { DumpCapsule = TRUE; argc --; argv ++; - continue; + continue; } if ((stricmp (argv[0], "-m") == 0) || (stricmp (argv[0], "--map") == 0)) { @@ -520,7 +520,7 @@ Returns: } argc -= 2; argv += 2; - continue; + continue; } if ((stricmp (argv[0], "-v") == 0) || (stricmp (argv[0], "--verbose") == 0)) { @@ -564,7 +564,7 @@ Returns: } VerboseMsg ("%s tool start.", UTILITY_NAME); - + // // check input parameter, InfFileName can be NULL // @@ -581,7 +581,7 @@ Returns: if (OutFileName != NULL) { VerboseMsg ("the output file name is %s", OutFileName); } - + // // Read the INF file image // @@ -591,7 +591,7 @@ Returns: return STATUS_ERROR; } } - + if (DumpCapsule) { VerboseMsg ("Dump the capsule header information for the input capsule image %s", InfFileName); // @@ -636,7 +636,7 @@ Returns: } Status = GenerateCapImage ( - InfFileImage, + InfFileImage, InfFileSize, OutFileName ); @@ -667,7 +667,7 @@ Returns: if (InfFileImage != NULL) { free (InfFileImage); } - + // // update boot driver address and runtime driver address in address file // @@ -689,7 +689,7 @@ Returns: fflush (FpFile); fclose (FpFile); } - + if (Status == EFI_SUCCESS) { DebugMsg (NULL, 0, 9, "The Total Fv Size", "%s = 0x%x", EFI_FV_TOTAL_SIZE_STRING, (unsigned) mFvTotalSize); DebugMsg (NULL, 0, 9, "The used Fv Size", "%s = 0x%x", EFI_FV_TAKEN_SIZE_STRING, (unsigned) mFvTakenSize);