]> git.proxmox.com Git - mirror_edk2.git/commitdiff
OvmfPkg: Fix GCC49 build hang in PeiCore
authorRuiyu Ni <ruiyu.ni@intel.com>
Thu, 9 Jul 2015 08:55:23 +0000 (08:55 +0000)
committerlersek <lersek@Edk2>
Thu, 9 Jul 2015 08:55:23 +0000 (08:55 +0000)
PeiCore hang when loads a PEIM whose section alignment requirement is 0x40
but the actual base address is 0x20 aligned.

The issue is caused by the following facts, in order:

1. GCC49 requires the section alignment of .data to be 0x40. So a new link
   script gcc4.9-ld-script was added for GCC49 to specify the 0x40
   alignment.

2. GenFw tool was enhanced to sync ELF's section alignment to PE header.
   Before the enhancement, the section alignment of converted PE image
   always equals to 0x20.

If only with #1 change, GCC49 build image won't hang in PeiCore because
the converted PE image still claims 0x20 section alignment which is
aligned to the align setting set in FDF file. But later with #2 change,
the converted PE image starts to claims 0x40 section alignment, while
build tool still puts the PEIM in 0x20 aligned address, resulting the
PeCoffLoaderLoadImage() reports IMAGE_ERROR_INVALID_SECTION_ALIGNMENT
error.

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ruiyu Ni <ruiyu.ni@intel.com>
Reviewed-by: Liming Gao <liming.gao@intel.com>
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
git-svn-id: https://svn.code.sf.net/p/edk2/code/trunk/edk2@17902 6f19259b-4bc3-4df7-8a09-765794883524

OvmfPkg/OvmfPkgIa32.fdf
OvmfPkg/OvmfPkgIa32X64.fdf
OvmfPkg/OvmfPkgX64.fdf

index 24ad0bf09b032c3e615a59133ed44414f1cef617..d11325e53be4c7d2858757a93c39e1055528d3cd 100644 (file)
@@ -389,7 +389,7 @@ FILE FV_IMAGE = 9E21FD93-9C72-4c15-8C4B-E77F1DB2D792 {
 \r
 [Rule.Common.PEI_CORE]\r
   FILE PEI_CORE = $(NAMED_GUID) {\r
-    PE32     PE32   Align=32    $(INF_OUTPUT)/$(MODULE_NAME).efi\r
+    PE32     PE32   Align=Auto    $(INF_OUTPUT)/$(MODULE_NAME).efi\r
     UI       STRING ="$(MODULE_NAME)" Optional\r
     VERSION  STRING ="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)\r
   }\r
@@ -397,7 +397,7 @@ FILE FV_IMAGE = 9E21FD93-9C72-4c15-8C4B-E77F1DB2D792 {
 [Rule.Common.PEIM]\r
   FILE PEIM = $(NAMED_GUID) {\r
      PEI_DEPEX PEI_DEPEX Optional        $(INF_OUTPUT)/$(MODULE_NAME).depex\r
-     PE32      PE32   Align=32           $(INF_OUTPUT)/$(MODULE_NAME).efi\r
+     PE32      PE32   Align=Auto         $(INF_OUTPUT)/$(MODULE_NAME).efi\r
      UI       STRING="$(MODULE_NAME)" Optional\r
      VERSION  STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)\r
   }\r
index 5f98be8e8f233a00d88c3697b72afee7e6edb118..015aca475906b51e4ed4b657ab82c3d8cfb7d8a5 100644 (file)
@@ -389,7 +389,7 @@ FILE FV_IMAGE = 9E21FD93-9C72-4c15-8C4B-E77F1DB2D792 {
 \r
 [Rule.Common.PEI_CORE]\r
   FILE PEI_CORE = $(NAMED_GUID) {\r
-    PE32     PE32   Align=32    $(INF_OUTPUT)/$(MODULE_NAME).efi\r
+    PE32     PE32   Align=Auto    $(INF_OUTPUT)/$(MODULE_NAME).efi\r
     UI       STRING ="$(MODULE_NAME)" Optional\r
     VERSION  STRING ="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)\r
   }\r
@@ -397,7 +397,7 @@ FILE FV_IMAGE = 9E21FD93-9C72-4c15-8C4B-E77F1DB2D792 {
 [Rule.Common.PEIM]\r
   FILE PEIM = $(NAMED_GUID) {\r
      PEI_DEPEX PEI_DEPEX Optional        $(INF_OUTPUT)/$(MODULE_NAME).depex\r
-     PE32      PE32   Align=32           $(INF_OUTPUT)/$(MODULE_NAME).efi\r
+     PE32      PE32   Align=Auto         $(INF_OUTPUT)/$(MODULE_NAME).efi\r
      UI       STRING="$(MODULE_NAME)" Optional\r
      VERSION  STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)\r
   }\r
index 11e74e7ed2cd92bfa45c03e36198754ba237e899..f43d3ddc2b7b152d0d818d9373f51523e552a12a 100644 (file)
@@ -389,7 +389,7 @@ FILE FV_IMAGE = 9E21FD93-9C72-4c15-8C4B-E77F1DB2D792 {
 \r
 [Rule.Common.PEI_CORE]\r
   FILE PEI_CORE = $(NAMED_GUID) {\r
-    PE32     PE32   Align=32    $(INF_OUTPUT)/$(MODULE_NAME).efi\r
+    PE32     PE32   Align=Auto    $(INF_OUTPUT)/$(MODULE_NAME).efi\r
     UI       STRING ="$(MODULE_NAME)" Optional\r
     VERSION  STRING ="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)\r
   }\r
@@ -397,7 +397,7 @@ FILE FV_IMAGE = 9E21FD93-9C72-4c15-8C4B-E77F1DB2D792 {
 [Rule.Common.PEIM]\r
   FILE PEIM = $(NAMED_GUID) {\r
      PEI_DEPEX PEI_DEPEX Optional        $(INF_OUTPUT)/$(MODULE_NAME).depex\r
-     PE32      PE32   Align=32           $(INF_OUTPUT)/$(MODULE_NAME).efi\r
+     PE32      PE32   Align=Auto         $(INF_OUTPUT)/$(MODULE_NAME).efi\r
      UI       STRING="$(MODULE_NAME)" Optional\r
      VERSION  STRING="$(INF_VERSION)" Optional BUILD_NUM=$(BUILD_NUMBER)\r
   }\r