diff options
author | Andrew Fish <afish@apple.com> | 2019-08-15 13:00:31 -0700 |
---|---|---|
committer | Michael D Kinney <michael.d.kinney@intel.com> | 2019-08-19 09:57:28 -0700 |
commit | d47778e52275daa3a6a702e3182dc85e11beadb7 (patch) | |
tree | a49c5ee7c64e3c79034d3978f030f34c24f2c8ce | |
parent | 6ed2c8bed3d213401deff18323c929e4e6743cec (diff) | |
download | edk2-d47778e52275daa3a6a702e3182dc85e11beadb7.zip edk2-d47778e52275daa3a6a702e3182dc85e11beadb7.tar.gz edk2-d47778e52275daa3a6a702e3182dc85e11beadb7.tar.bz2 |
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>
-rw-r--r-- | EmulatorPkg/Sec/Sec.c | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/EmulatorPkg/Sec/Sec.c b/EmulatorPkg/Sec/Sec.c index 7010322..b734d2b 100644 --- a/EmulatorPkg/Sec/Sec.c +++ b/EmulatorPkg/Sec/Sec.c @@ -75,6 +75,7 @@ _ModuleEntryPoint ( EFI_PEI_PPI_DESCRIPTOR *SecPpiList;
UINTN SecReseveredMemorySize;
UINTN Index;
+ EFI_PEI_PPI_DESCRIPTOR PpiArray[10];
EMU_MAGIC_PAGE()->PpiList = PpiList;
ProcessLibraryConstructorList ();
@@ -104,16 +105,13 @@ _ModuleEntryPoint ( SecCoreData->PeiTemporaryRamBase = (VOID *)((UINTN)SecCoreData->PeiTemporaryRamBase + SecReseveredMemorySize);
SecCoreData->PeiTemporaryRamSize -= SecReseveredMemorySize;
#else
- {
- //
- // When I subtrack from SecCoreData->PeiTemporaryRamBase PEI Core crashes? Either there is a bug
- // or I don't understand temp RAM correctly?
- //
- EFI_PEI_PPI_DESCRIPTOR PpiArray[10];
-
- SecPpiList = &PpiArray[0];
- ASSERT (sizeof (PpiArray) >= SecReseveredMemorySize);
- }
+ //
+ // When I subtrack from SecCoreData->PeiTemporaryRamBase PEI Core crashes? Either there is a bug
+ // or I don't understand temp RAM correctly?
+ //
+
+ SecPpiList = &PpiArray[0];
+ ASSERT (sizeof (PpiArray) >= SecReseveredMemorySize);
#endif
// Copy existing list, and append our entries.
CopyMem (SecPpiList, PpiList, sizeof (EFI_PEI_PPI_DESCRIPTOR) * Index);
|