mirror of https://github.com/acidanthera/audk.git
EmulatorPkg/Sec: Change scope of PpiArray[10]
The local variable PpiArray[10] is declared in the middle of the SEC module _ModuleEntryPoint() with its own scope. However, PpiArray has a dangling reference to its location on the stack after the scope is closed. This causes issues with some compilers (e.g. XCODE5). The fix is to move the declaration of PpiArray[10] to the beginning of the function, so it is scoped correctly for all references to this local variable and references to its location. Cc: Jordan Justen <jordan.l.justen@intel.com> Cc: Ray Ni <ray.ni@intel.com> Cc: Michael D Kinney <michael.d.kinney@intel.com> Signed-off-by: Andrew Fish <afish@apple.com> Reviewed-by: Michael D Kinney <michael.d.kinney@intel.com> Reviewed-by: Jordan Justen <jordan.l.justen@intel.com> Tested-by: Andrew Fish <afish@apple.com>
This commit is contained in:
parent
6ed2c8bed3
commit
d47778e522
|
@ -75,6 +75,7 @@ _ModuleEntryPoint (
|
||||||
EFI_PEI_PPI_DESCRIPTOR *SecPpiList;
|
EFI_PEI_PPI_DESCRIPTOR *SecPpiList;
|
||||||
UINTN SecReseveredMemorySize;
|
UINTN SecReseveredMemorySize;
|
||||||
UINTN Index;
|
UINTN Index;
|
||||||
|
EFI_PEI_PPI_DESCRIPTOR PpiArray[10];
|
||||||
|
|
||||||
EMU_MAGIC_PAGE()->PpiList = PpiList;
|
EMU_MAGIC_PAGE()->PpiList = PpiList;
|
||||||
ProcessLibraryConstructorList ();
|
ProcessLibraryConstructorList ();
|
||||||
|
@ -104,16 +105,13 @@ _ModuleEntryPoint (
|
||||||
SecCoreData->PeiTemporaryRamBase = (VOID *)((UINTN)SecCoreData->PeiTemporaryRamBase + SecReseveredMemorySize);
|
SecCoreData->PeiTemporaryRamBase = (VOID *)((UINTN)SecCoreData->PeiTemporaryRamBase + SecReseveredMemorySize);
|
||||||
SecCoreData->PeiTemporaryRamSize -= SecReseveredMemorySize;
|
SecCoreData->PeiTemporaryRamSize -= SecReseveredMemorySize;
|
||||||
#else
|
#else
|
||||||
{
|
//
|
||||||
//
|
// When I subtrack from SecCoreData->PeiTemporaryRamBase PEI Core crashes? Either there is a bug
|
||||||
// When I subtrack from SecCoreData->PeiTemporaryRamBase PEI Core crashes? Either there is a bug
|
// or I don't understand temp RAM correctly?
|
||||||
// or I don't understand temp RAM correctly?
|
//
|
||||||
//
|
|
||||||
EFI_PEI_PPI_DESCRIPTOR PpiArray[10];
|
|
||||||
|
|
||||||
SecPpiList = &PpiArray[0];
|
SecPpiList = &PpiArray[0];
|
||||||
ASSERT (sizeof (PpiArray) >= SecReseveredMemorySize);
|
ASSERT (sizeof (PpiArray) >= SecReseveredMemorySize);
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
// Copy existing list, and append our entries.
|
// Copy existing list, and append our entries.
|
||||||
CopyMem (SecPpiList, PpiList, sizeof (EFI_PEI_PPI_DESCRIPTOR) * Index);
|
CopyMem (SecPpiList, PpiList, sizeof (EFI_PEI_PPI_DESCRIPTOR) * Index);
|
||||||
|
|
Loading…
Reference in New Issue