[lld] r190198 - [PECOFF] Fix section alignment bug in ReaderCOFF.

Rui Ueyama ruiu at google.com
Fri Sep 6 13:08:57 PDT 2013


Author: ruiu
Date: Fri Sep  6 15:08:57 2013
New Revision: 190198

URL: http://llvm.org/viewvc/llvm-project?rev=190198&view=rev
Log:
[PECOFF] Fix section alignment bug in ReaderCOFF.

Patch by Ron Ofir.

Modified:
    lld/trunk/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp
    lld/trunk/test/pecoff/lib.test
    lld/trunk/test/pecoff/multi.test

Modified: lld/trunk/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp?rev=190198&r1=190197&r2=190198&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp (original)
+++ lld/trunk/lib/ReaderWriter/PECOFF/ReaderCOFF.cpp Fri Sep  6 15:08:57 2013
@@ -87,8 +87,10 @@ DefinedAtom::ContentPermissions getPermi
 DefinedAtom::Alignment getAlignment(const coff_section *section) {
   if (section->Characteristics & llvm::COFF::IMAGE_SCN_TYPE_NO_PAD)
     return DefinedAtom::Alignment(0);
-  // Bit [20:24] contains section alignment information.
-  int powerOf2 = (section->Characteristics >> 20) & 0xf;
+  // Bit [20:24] contains section alignment information. We need to decrease
+  // the value stored by 1 in order to get the real exponent (e.g, ALIGN_1BYTE
+  // is 0x00100000, but the exponent should be 0)
+  int powerOf2 = ((section->Characteristics >> 20) & 0xf) - 1;
   return DefinedAtom::Alignment(powerOf2);
 }
 

Modified: lld/trunk/test/pecoff/lib.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/pecoff/lib.test?rev=190198&r1=190197&r2=190198&view=diff
==============================================================================
--- lld/trunk/test/pecoff/lib.test (original)
+++ lld/trunk/test/pecoff/lib.test Fri Sep  6 15:08:57 2013
@@ -7,6 +7,6 @@
 
 CHECK: Disassembly of section .text:
 CHECK: .text:
-CHECK:     1000: a1 08 20 40 00      movl 4202504, %eax
+CHECK:     1000: a1 04 20 40 00      movl 4202500, %eax
 CHECK:     1005: 03 05 00 20 40 00   addl 4202496, %eax
 CHECK:     100b: c3                  ret

Modified: lld/trunk/test/pecoff/multi.test
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/test/pecoff/multi.test?rev=190198&r1=190197&r2=190198&view=diff
==============================================================================
--- lld/trunk/test/pecoff/multi.test (original)
+++ lld/trunk/test/pecoff/multi.test Fri Sep  6 15:08:57 2013
@@ -9,6 +9,6 @@
 
 CHECK: Disassembly of section .text:
 CHECK: .text:
-CHECK:     1000: a1 08 20 40 00      movl 4202504, %eax
+CHECK:     1000: a1 04 20 40 00      movl 4202500, %eax
 CHECK:     1005: 03 05 00 20 40 00   addl 4202496, %eax
 CHECK:     100b: c3                  ret





More information about the llvm-commits mailing list