]> git.proxmox.com Git - mirror_edk2.git/commitdiff
Hot fixing for the bug that GenFw can not convert ELF to PE format correctly, the...
authorklu2 <klu2@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 21 Jul 2009 16:56:35 +0000 (16:56 +0000)
committerklu2 <klu2@6f19259b-4bc3-4df7-8a09-765794883524>
Tue, 21 Jul 2009 16:56:35 +0000 (16:56 +0000)
git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@8976 6f19259b-4bc3-4df7-8a09-765794883524

17 files changed:
BaseTools/Bin/Win32/BootSectImage.exe
BaseTools/Bin/Win32/EfiLdrImage.exe
BaseTools/Bin/Win32/EfiRom.exe
BaseTools/Bin/Win32/GenBootSector.exe
BaseTools/Bin/Win32/GenCrc32.exe
BaseTools/Bin/Win32/GenFfs.exe
BaseTools/Bin/Win32/GenFv.exe
BaseTools/Bin/Win32/GenFw.exe
BaseTools/Bin/Win32/GenPage.exe
BaseTools/Bin/Win32/GenSec.exe
BaseTools/Bin/Win32/GenVtf.exe
BaseTools/Bin/Win32/LzmaCompress.exe
BaseTools/Bin/Win32/Split.exe
BaseTools/Bin/Win32/TianoCompress.exe
BaseTools/Bin/Win32/VfrCompile.exe
BaseTools/Bin/Win32/VolInfo.exe
BaseTools/Source/C/GenFw/GenFw.c

index a0cf0fd3880fe59968143fad33bac394c3e2ed58..966832de3206f6855500b5e5f9f472a62a635ad0 100755 (executable)
Binary files a/BaseTools/Bin/Win32/BootSectImage.exe and b/BaseTools/Bin/Win32/BootSectImage.exe differ
index 57662bf0a309da1bc9ffbaec29342e113ba511af..89c655d3dcf9035f1a0d7237367ecd6887b72a91 100755 (executable)
Binary files a/BaseTools/Bin/Win32/EfiLdrImage.exe and b/BaseTools/Bin/Win32/EfiLdrImage.exe differ
index 9ca2fb26dc01737e552fdfc55796de7ad5589ae5..643162e87b761d39cb7511e5e0057b7a31f45da3 100755 (executable)
Binary files a/BaseTools/Bin/Win32/EfiRom.exe and b/BaseTools/Bin/Win32/EfiRom.exe differ
index 08180b4ae4c09c41fc00aebe239cfe58e3e9f595..48a17af7e6280c0a1c0bef08fc3f2faefe73abc3 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenBootSector.exe and b/BaseTools/Bin/Win32/GenBootSector.exe differ
index 1b9020ec52ff2518600e68f1107725d328ecc888..01234aff5f61ba0c1c8eab9a7a8d3d7651827953 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenCrc32.exe and b/BaseTools/Bin/Win32/GenCrc32.exe differ
index 3ffc0fa7eeb25fb0d89f63ebe8a12c832c3f529e..3ee7925217bdb84b443fb3f3471eca1d28ca45d5 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenFfs.exe and b/BaseTools/Bin/Win32/GenFfs.exe differ
index a01bf7edecf428af1e432ec0fac90de46849dc48..6011dd317693b049c4f7a981957913c61c6bc3d2 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenFv.exe and b/BaseTools/Bin/Win32/GenFv.exe differ
index 0b6333a46430c585b113b7baf5d5f295f1f65ad0..f2b04ed3695fa6c4e11e6d62d24c4a4367b2ea0b 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenFw.exe and b/BaseTools/Bin/Win32/GenFw.exe differ
index 9a1a566ddffdee6f9e1455da1a33a0c9a375c29a..41ac4348e1bc0ec4e0a3c313592f8e8336337abb 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenPage.exe and b/BaseTools/Bin/Win32/GenPage.exe differ
index aafcdcc5e0df61f949b3b0138b954996c392a284..0c828b89191cde669e6efb765917c631f7707df7 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenSec.exe and b/BaseTools/Bin/Win32/GenSec.exe differ
index 26e904afb43345f8212eb4b0b8cef111037ab477..32eb2c1c48a416ad4b79c75681a73a2400c1e938 100755 (executable)
Binary files a/BaseTools/Bin/Win32/GenVtf.exe and b/BaseTools/Bin/Win32/GenVtf.exe differ
index ce231f8b7baceeeb7c9417bcc13ee613bee3a3fa..8ca0bbc214e8b421b4ac79938329116c04a3c01e 100644 (file)
Binary files a/BaseTools/Bin/Win32/LzmaCompress.exe and b/BaseTools/Bin/Win32/LzmaCompress.exe differ
index 222eccf017d5d7de35c1fc56fcb080d62a86b84d..4b01ebab3f3f607e778bd9686de5a3df61d2dbbf 100755 (executable)
Binary files a/BaseTools/Bin/Win32/Split.exe and b/BaseTools/Bin/Win32/Split.exe differ
index 04114bdc7bacf22aa522c88c400632c370fa6ad1..b95b67f7cb77eb936acd417ac0a8dff04bbb9547 100755 (executable)
Binary files a/BaseTools/Bin/Win32/TianoCompress.exe and b/BaseTools/Bin/Win32/TianoCompress.exe differ
index 32334155a87450de9f450263c944551bdfede2ef..e9b9977627d92faaf29e3a4d20eae5483eef3afa 100755 (executable)
Binary files a/BaseTools/Bin/Win32/VfrCompile.exe and b/BaseTools/Bin/Win32/VfrCompile.exe differ
index 6e501746c80fc68c82575905828372b7869c0201..ebbe39809fca19de60dc3e9e37e1f26a3238f111 100755 (executable)
Binary files a/BaseTools/Bin/Win32/VolInfo.exe and b/BaseTools/Bin/Win32/VolInfo.exe differ
index 2278948b3d874555b2aab2571c5a479a7e52f087..d570f633d531a76f7e5f3eac67ac47a3b43b8d2d 100644 (file)
@@ -583,7 +583,21 @@ ScanSections(
   //\r
   CoffOffset = sizeof(EFI_IMAGE_DOS_HEADER) + 0x40;\r
   NtHdrOffset = CoffOffset;\r
   //\r
   CoffOffset = sizeof(EFI_IMAGE_DOS_HEADER) + 0x40;\r
   NtHdrOffset = CoffOffset;\r
-  CoffOffset += sizeof(EFI_IMAGE_OPTIONAL_HEADER_UNION);\r
+  switch (Ehdr->e_machine) {\r
+  case EM_386:\r
+  case EM_ARM:\r
+    CoffOffset += sizeof (EFI_IMAGE_NT_HEADERS32);\r
+       break;\r
+  case EM_X86_64:\r
+  case EM_IA_64:\r
+       CoffOffset += sizeof (EFI_IMAGE_NT_HEADERS64);\r
+       break;\r
+  default:\r
+    VerboseMsg ("%s unknown e_machine type. Assume IA-32", (UINTN)Ehdr->e_machine);\r
+       CoffOffset += sizeof (EFI_IMAGE_NT_HEADERS32);\r
+       break;\r
+  }\r
+\r
   TableOffset = CoffOffset;\r
   CoffOffset += CoffNbrSections * sizeof(EFI_IMAGE_SECTION_HEADER);\r
 \r
   TableOffset = CoffOffset;\r
   CoffOffset += CoffNbrSections * sizeof(EFI_IMAGE_SECTION_HEADER);\r
 \r
@@ -1144,6 +1158,7 @@ ConvertElf (
   //\r
   // Compute sections new address.\r
   //\r
   //\r
   // Compute sections new address.\r
   //\r
+  \r
   ScanSections();\r
 \r
   VerboseMsg ("Compute sections new address.");\r
   ScanSections();\r
 \r
   VerboseMsg ("Compute sections new address.");\r
@@ -2660,9 +2675,12 @@ Returns:
   //\r
   // Init variable.\r
   //\r
   //\r
   // Init variable.\r
   //\r
-  DebugDirectoryEntryRva    = 0;\r
-  ExportDirectoryEntryRva   = 0;\r
-  ResourceDirectoryEntryRva = 0;\r
+  DebugDirectoryEntryRva           = 0;\r
+  ExportDirectoryEntryRva          = 0;\r
+  ResourceDirectoryEntryRva        = 0;\r
+  DebugDirectoryEntryFileOffset    = 0;\r
+  ExportDirectoryEntryFileOffset   = 0;\r
+  ResourceDirectoryEntryFileOffset = 0;\r
   DosHdr   = (EFI_IMAGE_DOS_HEADER *)  FileBuffer;\r
   FileHdr  = (EFI_IMAGE_FILE_HEADER *) (FileBuffer + DosHdr->e_lfanew + sizeof (UINT32));\r
 \r
   DosHdr   = (EFI_IMAGE_DOS_HEADER *)  FileBuffer;\r
   FileHdr  = (EFI_IMAGE_FILE_HEADER *) (FileBuffer + DosHdr->e_lfanew + sizeof (UINT32));\r
 \r
@@ -2745,17 +2763,17 @@ Returns:
   //\r
   FileHdr->TimeDateStamp = 0;\r
 \r
   //\r
   FileHdr->TimeDateStamp = 0;\r
 \r
-  if (ExportDirectoryEntryRva != 0) {\r
+  if (ExportDirectoryEntryFileOffset != 0) {\r
     NewTimeStamp  = (UINT32 *) (FileBuffer + ExportDirectoryEntryFileOffset + sizeof (UINT32));\r
     *NewTimeStamp = 0;\r
   }\r
 \r
     NewTimeStamp  = (UINT32 *) (FileBuffer + ExportDirectoryEntryFileOffset + sizeof (UINT32));\r
     *NewTimeStamp = 0;\r
   }\r
 \r
-  if (ResourceDirectoryEntryRva != 0) {\r
+  if (ResourceDirectoryEntryFileOffset != 0) {\r
     NewTimeStamp  = (UINT32 *) (FileBuffer + ResourceDirectoryEntryFileOffset + sizeof (UINT32));\r
     *NewTimeStamp = 0;\r
   }\r
 \r
     NewTimeStamp  = (UINT32 *) (FileBuffer + ResourceDirectoryEntryFileOffset + sizeof (UINT32));\r
     *NewTimeStamp = 0;\r
   }\r
 \r
-  if (DebugDirectoryEntryRva != 0) {\r
+  if (DebugDirectoryEntryFileOffset != 0) {\r
     DebugEntry = (EFI_IMAGE_DEBUG_DIRECTORY_ENTRY *) (FileBuffer + DebugDirectoryEntryFileOffset);\r
     DebugEntry->TimeDateStamp = 0;\r
     if (ZeroDebugFlag) {\r
     DebugEntry = (EFI_IMAGE_DEBUG_DIRECTORY_ENTRY *) (FileBuffer + DebugDirectoryEntryFileOffset);\r
     DebugEntry->TimeDateStamp = 0;\r
     if (ZeroDebugFlag) {\r