From d34689b44a1ca9f159a8ad981574acc3d85488d9 Mon Sep 17 00:00:00 2001 From: andrewfish Date: Thu, 15 Jul 2010 03:29:53 +0000 Subject: Some more 64-bit fixes. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@10653 6f19259b-4bc3-4df7-8a09-765794883524 --- UnixPkg/Sec/SecMain.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) (limited to 'UnixPkg/Sec/SecMain.c') diff --git a/UnixPkg/Sec/SecMain.c b/UnixPkg/Sec/SecMain.c index ef195abe60..b232f5f549 100644 --- a/UnixPkg/Sec/SecMain.c +++ b/UnixPkg/Sec/SecMain.c @@ -236,7 +236,7 @@ Returns: InitialStackMemorySize = STACK_SIZE; InitialStackMemory = (UINTN)MapMemory(0, (UINT32) InitialStackMemorySize, - PROT_READ | PROT_WRITE, + PROT_READ | PROT_WRITE | PROT_EXEC, MAP_ANONYMOUS | MAP_PRIVATE); if (InitialStackMemory == 0) { printf ("ERROR : Can not open SecStack Exiting\n"); @@ -716,18 +716,26 @@ Returns: if (EFI_ERROR (Status)) { return Status; } + + // // Allocate space in UNIX (not emulator) memory. Extra space is for alignment // - ImageContext.ImageAddress = (EFI_PHYSICAL_ADDRESS) (UINTN) malloc ((UINTN) (ImageContext.ImageSize + (ImageContext.SectionAlignment * 2))); + ImageContext.ImageAddress = (EFI_PHYSICAL_ADDRESS) (UINTN) MapMemory ( + 0, + (UINT32) (ImageContext.ImageSize + (ImageContext.SectionAlignment * 2)), + PROT_READ | PROT_WRITE | PROT_EXEC, + MAP_ANONYMOUS | MAP_PRIVATE + ); if (ImageContext.ImageAddress == 0) { return EFI_OUT_OF_RESOURCES; } + // // Align buffer on section boundry // ImageContext.ImageAddress += ImageContext.SectionAlignment - 1; - ImageContext.ImageAddress &= ~(ImageContext.SectionAlignment - 1); + ImageContext.ImageAddress &= ~((EFI_PHYSICAL_ADDRESS)(ImageContext.SectionAlignment - 1)); Status = PeCoffLoaderLoadImage (&ImageContext); @@ -1123,7 +1131,7 @@ SecPeCoffRelocateImageExtraAction ( // GdbTempFile = fopen (gGdbWorkingFileName, "w"); if (GdbTempFile != NULL) { - fprintf (GdbTempFile, "add-symbol-file %s 0x%x\n", ImageContext->PdbPointer, (unsigned int)(ImageContext->ImageAddress + ImageContext->SizeOfHeaders)); + fprintf (GdbTempFile, "add-symbol-file %s 0x%08lx\n", ImageContext->PdbPointer, (long unsigned int)(ImageContext->ImageAddress + ImageContext->SizeOfHeaders)); fclose (GdbTempFile); // -- cgit v1.2.3