Revision: 18539
          http://sourceforge.net/p/edk2/code/18539
Author:   abiesheuvel
Date:     2015-09-24 19:35:10 +0000 (Thu, 24 Sep 2015)
Log Message:
-----------
BaseTools/GenFw: remove ARM and RVCT references from ELF64 code

ARM and RVCT apply to 32-bit code only, so remove any references
to them (including the workaround for the linker) from the 64-bit
version of ElfConvert.c

Contributed-under: TianoCore Contribution Agreement 1.0
Signed-off-by: Ard Biesheuvel <[email protected]>
Reviewed-by: Leif Lindholm <[email protected]>

Modified Paths:
--------------
    trunk/edk2/BaseTools/Source/C/GenFw/Elf64Convert.c

Modified: trunk/edk2/BaseTools/Source/C/GenFw/Elf64Convert.c
===================================================================
--- trunk/edk2/BaseTools/Source/C/GenFw/Elf64Convert.c  2015-09-24 17:05:39 UTC 
(rev 18538)
+++ trunk/edk2/BaseTools/Source/C/GenFw/Elf64Convert.c  2015-09-24 19:35:10 UTC 
(rev 18539)
@@ -334,12 +334,8 @@
         if ((shdr->sh_addr & (shdr->sh_addralign - 1)) == 0) {
           // if the section address is aligned we must align PE/COFF
           mCoffOffset = (UINT32) ((mCoffOffset + shdr->sh_addralign - 1) & 
~(shdr->sh_addralign - 1));
-        } else if ((shdr->sh_addr % shdr->sh_addralign) != (mCoffOffset % 
shdr->sh_addralign)) {
-          // ARM RVCT tools have behavior outside of the ELF specification to 
try
-          // and make images smaller.  If sh_addr is not aligned to 
sh_addralign
-          // then the section needs to preserve sh_addr MOD sh_addralign.
-          // Normally doing nothing here works great.
-          Error (NULL, 0, 3000, "Invalid", "Unsupported section alignment.");
+        } else {
+          Error (NULL, 0, 3000, "Invalid", "Section address not aligned to its 
own alignment.");
         }
       }
 
@@ -369,11 +365,8 @@
   }
 
   mDebugOffset = DebugRvaAlign(mCoffOffset);
+  mCoffOffset = CoffAlign(mCoffOffset);
 
-  if (mEhdr->e_machine != EM_ARM) {
-    mCoffOffset = CoffAlign(mCoffOffset);
-  }
-
   if (SectionCount > 1 && mOutImageType == FW_EFI_IMAGE) {
     Warning (NULL, 0, 0, NULL, "Mulitple sections in %s are merged into 1 text 
section. Source level debug might not work correctly.", mInImageName);
   }
@@ -392,12 +385,8 @@
         if ((shdr->sh_addr & (shdr->sh_addralign - 1)) == 0) {
           // if the section address is aligned we must align PE/COFF
           mCoffOffset = (UINT32) ((mCoffOffset + shdr->sh_addralign - 1) & 
~(shdr->sh_addralign - 1));
-        } else if ((shdr->sh_addr % shdr->sh_addralign) != (mCoffOffset % 
shdr->sh_addralign)) {
-          // ARM RVCT tools have behavior outside of the ELF specification to 
try
-          // and make images smaller.  If sh_addr is not aligned to 
sh_addralign
-          // then the section needs to preserve sh_addr MOD sh_addralign.
-          // Normally doing nothing here works great.
-          Error (NULL, 0, 3000, "Invalid", "Unsupported section alignment.");
+        } else {
+          Error (NULL, 0, 3000, "Invalid", "Section address not aligned to its 
own alignment.");
         }
       }
 
@@ -448,12 +437,8 @@
         if ((shdr->sh_addr & (shdr->sh_addralign - 1)) == 0) {
           // if the section address is aligned we must align PE/COFF
           mCoffOffset = (UINT32) ((mCoffOffset + shdr->sh_addralign - 1) & 
~(shdr->sh_addralign - 1));
-        } else if ((shdr->sh_addr % shdr->sh_addralign) != (mCoffOffset % 
shdr->sh_addralign)) {
-          // ARM RVCT tools have behavior outside of the ELF specification to 
try
-          // and make images smaller.  If sh_addr is not aligned to 
sh_addralign
-          // then the section needs to preserve sh_addr MOD sh_addralign.
-          // Normally doing nothing here works great.
-          Error (NULL, 0, 3000, "Invalid", "Unsupported section alignment.");
+        } else {
+          Error (NULL, 0, 3000, "Invalid", "Section address not aligned to its 
own alignment.");
         }
       }
       if (shdr->sh_size != 0) {


------------------------------------------------------------------------------
_______________________________________________
edk2-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/edk2-commits

Reply via email to