VirtualBox

Ignore:
Timestamp:
Apr 14, 2023 3:17:44 PM (21 months ago)
Author:
vboxsync
Message:

Devices/EFI/FirmwareNew: Update to edk2-stable202302 and make it build, 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/ShellPkg/Library/UefiShellDebug1CommandsLib/Comp.c

    r89983 r99404  
    1010#include "UefiShellDebug1CommandsLib.h"
    1111
    12 STATIC CONST SHELL_PARAM_ITEM ParamList[] = {
    13   {L"-n", TypeValue},
    14   {L"-s", TypeValue},
    15   {NULL,  TypeMax}
    16   };
     12STATIC CONST SHELL_PARAM_ITEM  ParamList[] = {
     13  { L"-n", TypeValue },
     14  { L"-s", TypeValue },
     15  { NULL,  TypeMax   }
     16};
    1717
    1818typedef enum {
     
    2626//
    2727typedef struct {
    28   UINT8 *Data;     // dynamically allocated buffer
    29   UINTN Allocated; // the allocated size of Data
    30   UINTN Next;      // next position in Data to fetch a byte at
    31   UINTN Left;      // number of bytes left in Data for fetching at Next
     28  UINT8    *Data;     // dynamically allocated buffer
     29  UINTN    Allocated; // the allocated size of Data
     30  UINTN    Next;      // next position in Data to fetch a byte at
     31  UINTN    Left;      // number of bytes left in Data for fetching at Next
    3232} FILE_BUFFER;
    3333
     
    4444**/
    4545VOID
    46 PrintDifferentPoint(
     46PrintDifferentPoint (
    4747  CONST CHAR16  *FileName,
    4848  CHAR16        *FileTag,
     
    5353  )
    5454{
    55   UINTN Index;
     55  UINTN  Index;
    5656
    5757  ShellPrintEx (-1, -1, L"%s: %s\r\n  %08x:", FileTag, FileName, Address);
     
    7474  //
    7575  for (Index = 0; Index < BufferSize; Index++) {
    76     if (Buffer[Index] >= 0x20 && Buffer[Index] <= 0x7E) {
     76    if ((Buffer[Index] >= 0x20) && (Buffer[Index] <= 0x7E)) {
    7777      ShellPrintEx (-1, -1, L"%c", Buffer[Index]);
    7878    } else {
     
    9898VOID
    9999FileBufferInit (
    100   OUT FILE_BUFFER *FileBuffer
     100  OUT FILE_BUFFER  *FileBuffer
    101101  )
    102102{
     
    117117VOID
    118118FileBufferUninit (
    119   IN OUT FILE_BUFFER *FileBuffer
     119  IN OUT FILE_BUFFER  *FileBuffer
    120120  )
    121121{
     
    155155EFI_STATUS
    156156FileBufferReadByte (
    157   IN     SHELL_FILE_HANDLE FileHandle,
    158   IN OUT FILE_BUFFER       *FileBuffer,
    159      OUT UINTN             *BytesRead,
    160      OUT UINT8             *Byte
     157  IN     SHELL_FILE_HANDLE  FileHandle,
     158  IN OUT FILE_BUFFER        *FileBuffer,
     159  OUT UINTN                 *BytesRead,
     160  OUT UINT8                 *Byte
    161161  )
    162162{
    163   UINTN      ReadSize;
    164   EFI_STATUS Status;
     163  UINTN       ReadSize;
     164  EFI_STATUS  Status;
    165165
    166166  if (FileBuffer->Left == 0) {
    167167    ReadSize = FileBuffer->Allocated;
    168     Status = gEfiShellProtocol->ReadFile (FileHandle, &ReadSize,
    169                                   FileBuffer->Data);
     168    Status   = gEfiShellProtocol->ReadFile (
     169                                    FileHandle,
     170                                    &ReadSize,
     171                                    FileBuffer->Data
     172                                    );
    170173    if (EFI_ERROR (Status)) {
    171174      return Status;
    172175    }
     176
    173177    if (ReadSize == 0) {
    174178      *BytesRead = 0;
    175179      return EFI_SUCCESS;
    176180    }
     181
    177182    FileBuffer->Next = 0;
    178183    FileBuffer->Left = ReadSize;
     
    200205  )
    201206{
    202   EFI_STATUS          Status;
    203   LIST_ENTRY          *Package;
    204   CHAR16              *ProblemParam;
    205   CHAR16              *FileName1;
    206   CHAR16              *FileName2;
    207   CONST CHAR16        *TempParam;
    208   SHELL_STATUS        ShellStatus;
    209   SHELL_FILE_HANDLE   FileHandle1;
    210   SHELL_FILE_HANDLE   FileHandle2;
    211   UINT64              Size1;
    212   UINT64              Size2;
    213   UINT64              DifferentBytes;
    214   UINT64              DifferentCount;
    215   UINT8               DiffPointNumber;
    216   UINT8               OneByteFromFile1;
    217   UINT8               OneByteFromFile2;
    218   UINT8               *DataFromFile1;
    219   UINT8               *DataFromFile2;
    220   FILE_BUFFER         FileBuffer1;
    221   FILE_BUFFER         FileBuffer2;
    222   UINTN               InsertPosition1;
    223   UINTN               InsertPosition2;
    224   UINTN               DataSizeFromFile1;
    225   UINTN               DataSizeFromFile2;
    226   UINTN               TempAddress;
    227   UINTN               Index;
    228   UINTN               DiffPointAddress;
    229   READ_STATUS         ReadStatus;
    230 
    231   ShellStatus         = SHELL_SUCCESS;
    232   Status              = EFI_SUCCESS;
    233   FileName1           = NULL;
    234   FileName2           = NULL;
    235   FileHandle1         = NULL;
    236   FileHandle2         = NULL;
    237   DataFromFile1       = NULL;
    238   DataFromFile2       = NULL;
    239   ReadStatus          = OutOfDiffPoint;
    240   DifferentCount      = 10;
    241   DifferentBytes      = 4;
    242   DiffPointNumber     = 0;
    243   InsertPosition1     = 0;
    244   InsertPosition2     = 0;
    245   TempAddress         = 0;
    246   DiffPointAddress    = 0;
     207  EFI_STATUS         Status;
     208  LIST_ENTRY         *Package;
     209  CHAR16             *ProblemParam;
     210  CHAR16             *FileName1;
     211  CHAR16             *FileName2;
     212  CONST CHAR16       *TempParam;
     213  SHELL_STATUS       ShellStatus;
     214  SHELL_FILE_HANDLE  FileHandle1;
     215  SHELL_FILE_HANDLE  FileHandle2;
     216  UINT64             Size1;
     217  UINT64             Size2;
     218  UINT64             DifferentBytes;
     219  UINT64             DifferentCount;
     220  UINT8              DiffPointNumber;
     221  UINT8              OneByteFromFile1;
     222  UINT8              OneByteFromFile2;
     223  UINT8              *DataFromFile1;
     224  UINT8              *DataFromFile2;
     225  FILE_BUFFER        FileBuffer1;
     226  FILE_BUFFER        FileBuffer2;
     227  UINTN              InsertPosition1;
     228  UINTN              InsertPosition2;
     229  UINTN              DataSizeFromFile1;
     230  UINTN              DataSizeFromFile2;
     231  UINTN              TempAddress;
     232  UINTN              Index;
     233  UINTN              DiffPointAddress;
     234  READ_STATUS        ReadStatus;
     235
     236  ShellStatus      = SHELL_SUCCESS;
     237  Status           = EFI_SUCCESS;
     238  FileName1        = NULL;
     239  FileName2        = NULL;
     240  FileHandle1      = NULL;
     241  FileHandle2      = NULL;
     242  DataFromFile1    = NULL;
     243  DataFromFile2    = NULL;
     244  ReadStatus       = OutOfDiffPoint;
     245  DifferentCount   = 10;
     246  DifferentBytes   = 4;
     247  DiffPointNumber  = 0;
     248  InsertPosition1  = 0;
     249  InsertPosition2  = 0;
     250  TempAddress      = 0;
     251  DiffPointAddress = 0;
    247252
    248253  //
    249254  // initialize the shell lib (we must be in non-auto-init...)
    250255  //
    251   Status = ShellInitialize();
    252   ASSERT_EFI_ERROR(Status);
    253 
    254   Status = CommandInit();
    255   ASSERT_EFI_ERROR(Status);
     256  Status = ShellInitialize ();
     257  ASSERT_EFI_ERROR (Status);
     258
     259  Status = CommandInit ();
     260  ASSERT_EFI_ERROR (Status);
    256261
    257262  //
     
    259264  //
    260265  Status = ShellCommandLineParse (ParamList, &Package, &ProblemParam, TRUE);
    261   if (EFI_ERROR(Status)) {
    262     if (Status == EFI_VOLUME_CORRUPTED && ProblemParam != NULL) {
    263       ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellDebug1HiiHandle, L"comp", ProblemParam);
    264       FreePool(ProblemParam);
     266  if (EFI_ERROR (Status)) {
     267    if ((Status == EFI_VOLUME_CORRUPTED) && (ProblemParam != NULL)) {
     268      ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM), gShellDebug1HiiHandle, L"comp", ProblemParam);
     269      FreePool (ProblemParam);
    265270      ShellStatus = SHELL_INVALID_PARAMETER;
    266271    } else {
    267       ASSERT(FALSE);
     272      ASSERT (FALSE);
    268273    }
    269274  } else {
    270     if (ShellCommandLineGetCount(Package) > 3) {
    271       ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle, L"comp");
     275    if (ShellCommandLineGetCount (Package) > 3) {
     276      ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_MANY), gShellDebug1HiiHandle, L"comp");
    272277      ShellStatus = SHELL_INVALID_PARAMETER;
    273     } else if (ShellCommandLineGetCount(Package) < 3) {
    274       ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellDebug1HiiHandle, L"comp");
     278    } else if (ShellCommandLineGetCount (Package) < 3) {
     279      ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_TOO_FEW), gShellDebug1HiiHandle, L"comp");
    275280      ShellStatus = SHELL_INVALID_PARAMETER;
    276281    } else {
    277       TempParam = ShellCommandLineGetRawValue(Package, 1);
    278       ASSERT(TempParam != NULL);
    279       FileName1 = ShellFindFilePath(TempParam);
     282      TempParam = ShellCommandLineGetRawValue (Package, 1);
     283      ASSERT (TempParam != NULL);
     284      FileName1 = ShellFindFilePath (TempParam);
    280285      if (FileName1 == NULL) {
    281         ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_FILE_FIND_FAIL), gShellDebug1HiiHandle, L"comp", TempParam);
     286        ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_FILE_FIND_FAIL), gShellDebug1HiiHandle, L"comp", TempParam);
    282287        ShellStatus = SHELL_NOT_FOUND;
    283288      } else {
    284         Status = ShellOpenFileByName(FileName1, &FileHandle1, EFI_FILE_MODE_READ, 0);
    285         if (EFI_ERROR(Status)) {
    286           ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellDebug1HiiHandle, L"comp", TempParam);
     289        Status = ShellOpenFileByName (FileName1, &FileHandle1, EFI_FILE_MODE_READ, 0);
     290        if (EFI_ERROR (Status)) {
     291          ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellDebug1HiiHandle, L"comp", TempParam);
    287292          ShellStatus = SHELL_NOT_FOUND;
    288293        }
    289294      }
    290       TempParam = ShellCommandLineGetRawValue(Package, 2);
    291       ASSERT(TempParam != NULL);
    292       FileName2 = ShellFindFilePath(TempParam);
     295
     296      TempParam = ShellCommandLineGetRawValue (Package, 2);
     297      ASSERT (TempParam != NULL);
     298      FileName2 = ShellFindFilePath (TempParam);
    293299      if (FileName2 == NULL) {
    294         ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_FILE_FIND_FAIL), gShellDebug1HiiHandle, L"comp", TempParam);
     300        ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_FILE_FIND_FAIL), gShellDebug1HiiHandle, L"comp", TempParam);
    295301        ShellStatus = SHELL_NOT_FOUND;
    296302      } else {
    297         Status = ShellOpenFileByName(FileName2, &FileHandle2, EFI_FILE_MODE_READ, 0);
    298         if (EFI_ERROR(Status)) {
    299           ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellDebug1HiiHandle, L"comp", TempParam);
     303        Status = ShellOpenFileByName (FileName2, &FileHandle2, EFI_FILE_MODE_READ, 0);
     304        if (EFI_ERROR (Status)) {
     305          ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_FILE_OPEN_FAIL), gShellDebug1HiiHandle, L"comp", TempParam);
    300306          ShellStatus = SHELL_NOT_FOUND;
    301307        }
    302308      }
     309
    303310      if (ShellStatus == SHELL_SUCCESS) {
    304         Status = gEfiShellProtocol->GetFileSize(FileHandle1, &Size1);
    305         ASSERT_EFI_ERROR(Status);
    306         Status = gEfiShellProtocol->GetFileSize(FileHandle2, &Size2);
    307         ASSERT_EFI_ERROR(Status);
     311        Status = gEfiShellProtocol->GetFileSize (FileHandle1, &Size1);
     312        ASSERT_EFI_ERROR (Status);
     313        Status = gEfiShellProtocol->GetFileSize (FileHandle2, &Size2);
     314        ASSERT_EFI_ERROR (Status);
    308315
    309316        if (ShellCommandLineGetFlag (Package, L"-n")) {
     
    317324            } else {
    318325              Status = ShellConvertStringToUint64 (TempParam, &DifferentCount, FALSE, TRUE);
    319               if (EFI_ERROR(Status) || DifferentCount == 0) {
     326              if (EFI_ERROR (Status) || (DifferentCount == 0)) {
    320327                ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM_VAL), gShellDebug1HiiHandle, L"comp", TempParam, L"-n");
    321328                ShellStatus = SHELL_INVALID_PARAMETER;
     
    332339          } else {
    333340            Status = ShellConvertStringToUint64 (TempParam, &DifferentBytes, FALSE, TRUE);
    334             if (EFI_ERROR(Status) || DifferentBytes == 0) {
     341            if (EFI_ERROR (Status) || (DifferentBytes == 0)) {
    335342              ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_GEN_PROBLEM_VAL), gShellDebug1HiiHandle, L"comp", TempParam, L"-s");
    336343              ShellStatus = SHELL_INVALID_PARAMETER;
     
    349356        FileBufferInit (&FileBuffer1);
    350357        FileBufferInit (&FileBuffer2);
    351         if (DataFromFile1 == NULL || DataFromFile2 == NULL ||
    352             FileBuffer1.Data == NULL || FileBuffer2.Data == NULL) {
     358        if ((DataFromFile1 == NULL) || (DataFromFile2 == NULL) ||
     359            (FileBuffer1.Data == NULL) || (FileBuffer2.Data == NULL))
     360        {
    353361          ShellStatus = SHELL_OUT_OF_RESOURCES;
    354362          SHELL_FREE_NON_NULL (DataFromFile1);
     
    363371          DataSizeFromFile1 = 1;
    364372          DataSizeFromFile2 = 1;
    365           OneByteFromFile1 = 0;
    366           OneByteFromFile2 = 0;
    367           Status = FileBufferReadByte (FileHandle1, &FileBuffer1,
    368                      &DataSizeFromFile1, &OneByteFromFile1);
     373          OneByteFromFile1  = 0;
     374          OneByteFromFile2  = 0;
     375          Status            = FileBufferReadByte (
     376                                FileHandle1,
     377                                &FileBuffer1,
     378                                &DataSizeFromFile1,
     379                                &OneByteFromFile1
     380                                );
    369381          ASSERT_EFI_ERROR (Status);
    370           Status = FileBufferReadByte (FileHandle2, &FileBuffer2,
    371                      &DataSizeFromFile2, &OneByteFromFile2);
     382          Status = FileBufferReadByte (
     383                     FileHandle2,
     384                     &FileBuffer2,
     385                     &DataSizeFromFile2,
     386                     &OneByteFromFile2
     387                     );
    372388          ASSERT_EFI_ERROR (Status);
    373389
     
    379395          //   So the previous different point is the last one, then break the while block.
    380396          //
    381           if ( (DataSizeFromFile1 == 0 && InsertPosition1 == 0 && DataSizeFromFile2 == 0 && InsertPosition2 == 0) ||
    382                (ReadStatus == InPrevDiffPoint && (DataSizeFromFile1 == 0 || DataSizeFromFile2 == 0))
    383              ) {
     397          if (((DataSizeFromFile1 == 0) && (InsertPosition1 == 0) && (DataSizeFromFile2 == 0) && (InsertPosition2 == 0)) ||
     398              ((ReadStatus == InPrevDiffPoint) && ((DataSizeFromFile1 == 0) || (DataSizeFromFile2 == 0)))
     399              )
     400          {
    384401            break;
    385402          }
     
    387404          if (ReadStatus == OutOfDiffPoint) {
    388405            if (OneByteFromFile1 != OneByteFromFile2) {
    389               ReadStatus = InDiffPoint;
     406              ReadStatus       = InDiffPoint;
    390407              DiffPointAddress = TempAddress;
    391408              if (DataSizeFromFile1 == 1) {
    392409                DataFromFile1[InsertPosition1++] = OneByteFromFile1;
    393410              }
     411
    394412              if (DataSizeFromFile2 == 1) {
    395413                DataFromFile2[InsertPosition2++] = OneByteFromFile2;
     
    400418              DataFromFile1[InsertPosition1++] = OneByteFromFile1;
    401419            }
     420
    402421            if (DataSizeFromFile2 == 1) {
    403422              DataFromFile2[InsertPosition2++] = OneByteFromFile2;
     
    412431          // ReadStatus should be always equal InDiffPoint.
    413432          //
    414           if ( InsertPosition1 == DifferentBytes ||
    415                InsertPosition2 == DifferentBytes ||
    416                (DataSizeFromFile1 == 0 && DataSizeFromFile2 == 0)
    417              ) {
    418 
     433          if ((InsertPosition1 == DifferentBytes) ||
     434              (InsertPosition2 == DifferentBytes) ||
     435              ((DataSizeFromFile1 == 0) && (DataSizeFromFile2 == 0))
     436              )
     437          {
    419438            ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_COMP_DIFFERENCE_POINT), gShellDebug1HiiHandle, ++DiffPointNumber);
    420439            PrintDifferentPoint (FileName1, L"File1", DataFromFile1, InsertPosition1, DiffPointAddress, DifferentBytes);
     
    424443            // One of two buffuers is empty, it means this is the last different point.
    425444            //
    426             if (InsertPosition1 == 0 || InsertPosition2 == 0) {
     445            if ((InsertPosition1 == 0) || (InsertPosition2 == 0)) {
    427446              break;
    428447            }
     
    439458              // Try to find a new different point in the rest of DataFromFile.
    440459              //
    441               for (; Index < MAX (InsertPosition1,InsertPosition2); Index++) {
     460              for ( ; Index < MAX (InsertPosition1, InsertPosition2); Index++) {
    442461                if (DataFromFile1[Index] != DataFromFile2[Index]) {
    443                   ReadStatus = InDiffPoint;
     462                  ReadStatus        = InDiffPoint;
    444463                  DiffPointAddress += Index;
    445464                  break;
     
    470489
    471490        if (DiffPointNumber == 0) {
    472           ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_COMP_FOOTER_PASS), gShellDebug1HiiHandle);
     491          ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_COMP_FOOTER_PASS), gShellDebug1HiiHandle);
    473492        } else {
    474493          ShellStatus = SHELL_NOT_EQUAL;
    475           ShellPrintHiiEx(-1, -1, NULL, STRING_TOKEN (STR_COMP_FOOTER_FAIL), gShellDebug1HiiHandle);
     494          ShellPrintHiiEx (-1, -1, NULL, STRING_TOKEN (STR_COMP_FOOTER_FAIL), gShellDebug1HiiHandle);
    476495        }
    477496      }
     
    480499    ShellCommandLineFreeVarList (Package);
    481500  }
    482   SHELL_FREE_NON_NULL(FileName1);
    483   SHELL_FREE_NON_NULL(FileName2);
     501
     502  SHELL_FREE_NON_NULL (FileName1);
     503  SHELL_FREE_NON_NULL (FileName2);
    484504
    485505  if (FileHandle1 != NULL) {
    486     gEfiShellProtocol->CloseFile(FileHandle1);
    487   }
     506    gEfiShellProtocol->CloseFile (FileHandle1);
     507  }
     508
    488509  if (FileHandle2 != NULL) {
    489     gEfiShellProtocol->CloseFile(FileHandle2);
     510    gEfiShellProtocol->CloseFile (FileHandle2);
    490511  }
    491512
Note: See TracChangeset for help on using the changeset viewer.

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