From 1d6992b936def4fa9bd8a9b64877b063eddd1d5d Mon Sep 17 00:00:00 2001 From: klu2 Date: Thu, 5 Apr 2007 07:04:33 +0000 Subject: [PATCH] The alignment of data section also meet with the requirement of section itself. git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@2536 6f19259b-4bc3-4df7-8a09-765794883524 --- Tools/CCode/Source/FwImage/fwimage.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/Tools/CCode/Source/FwImage/fwimage.c b/Tools/CCode/Source/FwImage/fwimage.c index a4ae10c4c2..11090952cd 100644 --- a/Tools/CCode/Source/FwImage/fwimage.c +++ b/Tools/CCode/Source/FwImage/fwimage.c @@ -337,9 +337,11 @@ ScanSections( Elf_Shdr *shdr = GetShdrByIndex(i); if (IsTextShdr(shdr)) { // - // Align the coff offset + // Align the coff offset to meet with the alignment requirement of section + // itself. // CoffOffset = (CoffOffset + shdr->sh_addralign - 1) & ~(shdr->sh_addralign - 1); + /* Relocate entry. */ if ((Ehdr->e_entry >= shdr->sh_addr) && (Ehdr->e_entry < shdr->sh_addr + shdr->sh_size)) { @@ -357,7 +359,13 @@ ScanSections( DataOffset = CoffOffset; for (i = 0; i < Ehdr->e_shnum; i++) { Elf_Shdr *shdr = GetShdrByIndex(i); - if (IsDataShdr(shdr)) { + if (IsDataShdr(shdr)) { + // + // Align the coff offset to meet with the alignment requirement of section + // itself. + // + CoffOffset = (CoffOffset + shdr->sh_addralign - 1) & ~(shdr->sh_addralign - 1); + CoffSectionsOffset[i] = CoffOffset; CoffOffset += shdr->sh_size; } -- 2.39.2