From 31e8a47b62a4f3dc45d8f9bbf3529a188e867a87 Mon Sep 17 00:00:00 2001 From: Vitaly Cheptsov Date: Wed, 2 Dec 2020 02:26:51 +0800 Subject: MdeModulePkg: Fix undefined reference to memcpy with XCODE5 REF: https://bugzilla.tianocore.org/show_bug.cgi?id=3098 XCODE5 toolchain in NOOPT mode generates memcpy when trying to copy PEI_CORE_FV_HANDLE structure. This breaks OVMF compilation with XCODE5. Cc: Jian J Wang Cc: Hao A Wu Cc: Jordan Justen Cc: Laszlo Ersek Cc: Ard Biesheuvel Signed-off-by: Vitaly Cheptsov Reviewed-by: Liming Gao Reviewed-by: Michael D Kinney --- MdeModulePkg/Core/Pei/Dispatcher/Dispatcher.c | 4 ++-- MdeModulePkg/Core/Pei/PeiMain.h | 2 +- MdeModulePkg/Core/Pei/Ppi/Ppi.c | 10 +++++----- 3 files changed, 8 insertions(+), 8 deletions(-) (limited to 'MdeModulePkg') diff --git a/MdeModulePkg/Core/Pei/Dispatcher/Dispatcher.c b/MdeModulePkg/Core/Pei/Dispatcher/Dispatcher.c index b9a279ec73..3369585bcc 100644 --- a/MdeModulePkg/Core/Pei/Dispatcher/Dispatcher.c +++ b/MdeModulePkg/Core/Pei/Dispatcher/Dispatcher.c @@ -1256,13 +1256,13 @@ EvacuateTempRam ( } for (FvIndex = 0; FvIndex < Private->FvCount; FvIndex++) { if (Private->Fv[FvIndex].FvHandle == PeiCoreFvHandle.FvHandle) { - PeiCoreFvHandle = Private->Fv[FvIndex]; + CopyMem (&PeiCoreFvHandle, &Private->Fv[FvIndex], sizeof (PEI_CORE_FV_HANDLE)); break; } } Status = EFI_SUCCESS; - ConvertPeiCorePpiPointers (Private, PeiCoreFvHandle); + ConvertPeiCorePpiPointers (Private, &PeiCoreFvHandle); for (FvIndex = 0; FvIndex < Private->FvCount; FvIndex++) { FvHeader = Private->Fv[FvIndex].FvHeader; diff --git a/MdeModulePkg/Core/Pei/PeiMain.h b/MdeModulePkg/Core/Pei/PeiMain.h index c27e8fc33b..daa48b4c5f 100644 --- a/MdeModulePkg/Core/Pei/PeiMain.h +++ b/MdeModulePkg/Core/Pei/PeiMain.h @@ -542,7 +542,7 @@ ConvertPpiPointersFv ( VOID ConvertPeiCorePpiPointers ( IN PEI_CORE_INSTANCE *PrivateData, - PEI_CORE_FV_HANDLE CoreFvHandle + IN PEI_CORE_FV_HANDLE *CoreFvHandle ); /** diff --git a/MdeModulePkg/Core/Pei/Ppi/Ppi.c b/MdeModulePkg/Core/Pei/Ppi/Ppi.c index 541047d98a..0ad71d116f 100644 --- a/MdeModulePkg/Core/Pei/Ppi/Ppi.c +++ b/MdeModulePkg/Core/Pei/Ppi/Ppi.c @@ -1062,7 +1062,7 @@ ProcessPpiListFromSec ( VOID ConvertPeiCorePpiPointers ( IN PEI_CORE_INSTANCE *PrivateData, - PEI_CORE_FV_HANDLE CoreFvHandle + IN PEI_CORE_FV_HANDLE *CoreFvHandle ) { EFI_FV_FILE_INFO FileInfo; @@ -1079,16 +1079,16 @@ ConvertPeiCorePpiPointers ( // // Find the PEI Core in the BFV in temporary memory. // - Status = CoreFvHandle.FvPpi->FindFileByType ( - CoreFvHandle.FvPpi, + Status = CoreFvHandle->FvPpi->FindFileByType ( + CoreFvHandle->FvPpi, EFI_FV_FILETYPE_PEI_CORE, - CoreFvHandle.FvHandle, + CoreFvHandle->FvHandle, &PeiCoreFileHandle ); ASSERT_EFI_ERROR (Status); if (!EFI_ERROR (Status)) { - Status = CoreFvHandle.FvPpi->GetFileInfo (CoreFvHandle.FvPpi, PeiCoreFileHandle, &FileInfo); + Status = CoreFvHandle->FvPpi->GetFileInfo (CoreFvHandle->FvPpi, PeiCoreFileHandle, &FileInfo); ASSERT_EFI_ERROR (Status); Status = PeiGetPe32Data (PeiCoreFileHandle, &PeiCoreImageBase); -- cgit v1.2.3