[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