Thanks Ard, Your patch fixes the build but introduces a new issue (pointer arithmetic). I pushed your change with the correct fix in SVN rev17410. Thanks again for the fix!
-----Original Message----- From: Ard Biesheuvel [mailto:ard.biesheu...@linaro.org] Sent: 11 May 2015 08:36 To: edk2-devel@lists.sourceforge.net; Olivier Martin Cc: Ard Biesheuvel Subject: [PATCH] ArmPkg: update BdsLib to updated definition of EFI_LOAD_OPTION Since there is now a formal definition of EFI_LOAD_OPTION, we can no longer typedef it as a UINT8*. So update the code to use the common definition, which is not a pointer type, hence the additional changes to the C code. Contributed-under: TianoCore Contribution Agreement 1.0 Signed-off-by: Ard Biesheuvel <ard.biesheu...@linaro.org> --- Hello Olivier, This fixes the currently broken build for me. Regards, Ard. ArmPkg/Include/Library/BdsLib.h | 4 +--- ArmPkg/Library/BdsLib/BdsLoadOption.c | 8 ++++---- ArmPlatformPkg/Bds/BootOption.c | 6 +++--- 3 files changed, 8 insertions(+), 10 deletions(-) diff --git a/ArmPkg/Include/Library/BdsLib.h b/ArmPkg/Include/Library/BdsLib.h index eb7f8f293fb1..c6416db8ae79 100644 --- a/ArmPkg/Include/Library/BdsLib.h +++ b/ArmPkg/Include/Library/BdsLib.h @@ -15,14 +15,12 @@ #ifndef __BDS_ENTRY_H__ #define __BDS_ENTRY_H__ -typedef UINT8* EFI_LOAD_OPTION; - /** This is defined by the UEFI specs, don't change it **/ typedef struct { UINT16 LoadOptionIndex; - EFI_LOAD_OPTION LoadOption; + EFI_LOAD_OPTION *LoadOption; UINTN LoadOptionSize; UINT32 Attributes; diff --git a/ArmPkg/Library/BdsLib/BdsLoadOption.c b/ArmPkg/Library/BdsLib/BdsLoadOption.c index be5ed41980a3..a87e7a0ff62c 100644 --- a/ArmPkg/Library/BdsLib/BdsLoadOption.c +++ b/ArmPkg/Library/BdsLib/BdsLoadOption.c @@ -16,7 +16,7 @@ EFI_STATUS BootOptionParseLoadOption ( - IN EFI_LOAD_OPTION EfiLoadOption, + IN EFI_LOAD_OPTION *EfiLoadOption, IN UINTN EfiLoadOptionSize, IN OUT BDS_LOAD_OPTION **BdsLoadOption ) @@ -73,7 +73,7 @@ BootOptionFromLoadOptionVariable ( ) { EFI_STATUS Status; - EFI_LOAD_OPTION EfiLoadOption; + EFI_LOAD_OPTION *EfiLoadOption; UINTN EfiLoadOptionSize; Status = GetGlobalEnvironmentVariable (BootVariableName, NULL, &EfiLoadOptionSize, (VOID**)&EfiLoadOption); @@ -141,12 +141,12 @@ BootOptionToLoadOptionVariable ( // Allocate the memory for the EFI Load Option BdsLoadOption->LoadOptionSize = sizeof(UINT32) + sizeof(UINT16) + DescriptionSize + BdsLoadOption->FilePathListLength + BdsLoadOption->OptionalDataSize; - BdsLoadOption->LoadOption = (EFI_LOAD_OPTION)AllocateZeroPool (BdsLoadOption->LoadOptionSize); + BdsLoadOption->LoadOption = (EFI_LOAD_OPTION *)AllocateZeroPool + (BdsLoadOption->LoadOptionSize); if (BdsLoadOption->LoadOption == NULL) { return EFI_OUT_OF_RESOURCES; } - EfiLoadOptionPtr = BdsLoadOption->LoadOption; + EfiLoadOptionPtr = (UINT8 *) BdsLoadOption->LoadOption; // // Populate the EFI Load Option and BDS Boot Option structures diff --git a/ArmPlatformPkg/Bds/BootOption.c b/ArmPlatformPkg/Bds/BootOption.c index 889040e3b63a..bb218f82aaf4 100644 --- a/ArmPlatformPkg/Bds/BootOption.c +++ b/ArmPlatformPkg/Bds/BootOption.c @@ -141,7 +141,7 @@ BootOptionSetFields ( IN UINTN OptionalDataSize ) { - EFI_LOAD_OPTION EfiLoadOption; + EFI_LOAD_OPTION *EfiLoadOption; UINTN EfiLoadOptionSize; UINTN BootDescriptionSize; UINT16 FilePathListLength; @@ -168,8 +168,8 @@ BootOptionSetFields ( // Allocate the memory for the EFI Load Option EfiLoadOptionSize = sizeof(UINT32) + sizeof(UINT16) + BootDescriptionSize + FilePathListLength + OptionalDataSize; - EfiLoadOption = (EFI_LOAD_OPTION)AllocatePool(EfiLoadOptionSize); - EfiLoadOptionPtr = EfiLoadOption; + EfiLoadOption = (EFI_LOAD_OPTION *)AllocatePool(EfiLoadOptionSize); + EfiLoadOptionPtr = (UINT8 *)EfiLoadOption; // // Populate the EFI Load Option and BDS Boot Option structures -- 1.9.1 -- IMPORTANT NOTICE: The contents of this email and any attachments are confidential and may also be privileged. If you are not the intended recipient, please notify the sender immediately and do not disclose the contents to any other person, use it for any purpose, or store or copy the information in any medium. Thank you. ARM Limited, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ, Registered in England & Wales, Company No: 2557590 ARM Holdings plc, Registered office 110 Fulbourn Road, Cambridge CB1 9NJ, Registered in England & Wales, Company No: 2548782 ------------------------------------------------------------------------------ One dashboard for servers and applications across Physical-Virtual-Cloud Widest out-of-the-box monitoring support with 50+ applications Performance metrics, stats and reports that give you Actionable Insights Deep dive visibility with transaction tracing using APM Insight. http://ad.doubleclick.net/ddm/clk/290420510;117567292;y _______________________________________________ edk2-devel mailing list edk2-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/edk2-devel