[PATCH] D46419: Object: Align resource sections correctly.

Peter Collingbourne via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu May 3 20:48:34 PDT 2018


pcc created this revision.
pcc added reviewers: hans, ruiu.
Herald added a subscriber: hiraditya.

Previously we were using the default alignment, i.e. an alignment
of 16. This was more aligned than we needed to be and didn't match
cvtres's behaviour. This change sets the alignment to 1, as cvtres
does.


https://reviews.llvm.org/D46419

Files:
  llvm/lib/Object/WindowsResource.cpp
  llvm/test/tools/llvm-cvtres/object.test


Index: llvm/test/tools/llvm-cvtres/object.test
===================================================================
--- llvm/test/tools/llvm-cvtres/object.test
+++ llvm/test/tools/llvm-cvtres/object.test
@@ -9,6 +9,7 @@
 
 RUN: llvm-cvtres /verbose /out:%t %p/Inputs/test_resource.res
 RUN: llvm-readobj -coff-resources -section-data %t | FileCheck %s
+RUN: obj2yaml %t | FileCheck --check-prefix=SECTIONS %s
 
 CHECK:     Resources [
 CHECK-NEXT:  Total Number of Resources: 8
@@ -258,3 +259,11 @@
 CHECK-NEXT:    0770: 69742063 6F6E7461 696E7320 6D616E79  |it contains many|
 CHECK-NEXT:    0780: 20737472 696E6773 00000000 00000000  | strings........|
 CHECK-NEXT:  )
+
+SECTIONS:      - Name:            '.rsrc$01'
+SECTIONS-NEXT:   Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
+SECTIONS-NEXT:   Alignment:       1
+
+SECTIONS:      - Name:            '.rsrc$02'
+SECTIONS-NEXT:   Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
+SECTIONS-NEXT:   Alignment:       1
Index: llvm/lib/Object/WindowsResource.cpp
===================================================================
--- llvm/lib/Object/WindowsResource.cpp
+++ llvm/lib/Object/WindowsResource.cpp
@@ -465,8 +465,9 @@
   SectionOneHeader->PointerToLinenumbers = 0;
   SectionOneHeader->NumberOfRelocations = Data.size();
   SectionOneHeader->NumberOfLinenumbers = 0;
-  SectionOneHeader->Characteristics += COFF::IMAGE_SCN_CNT_INITIALIZED_DATA;
-  SectionOneHeader->Characteristics += COFF::IMAGE_SCN_MEM_READ;
+  SectionOneHeader->Characteristics = COFF::IMAGE_SCN_CNT_INITIALIZED_DATA |
+                                      COFF::IMAGE_SCN_MEM_READ |
+                                      COFF::IMAGE_SCN_ALIGN_1BYTES;
 }
 
 void WindowsResourceCOFFWriter::writeSecondSectionHeader() {
@@ -483,8 +484,9 @@
   SectionTwoHeader->PointerToLinenumbers = 0;
   SectionTwoHeader->NumberOfRelocations = 0;
   SectionTwoHeader->NumberOfLinenumbers = 0;
-  SectionTwoHeader->Characteristics = COFF::IMAGE_SCN_CNT_INITIALIZED_DATA;
-  SectionTwoHeader->Characteristics += COFF::IMAGE_SCN_MEM_READ;
+  SectionTwoHeader->Characteristics = COFF::IMAGE_SCN_CNT_INITIALIZED_DATA |
+                                      COFF::IMAGE_SCN_MEM_READ |
+                                      COFF::IMAGE_SCN_ALIGN_1BYTES;
 }
 
 void WindowsResourceCOFFWriter::writeFirstSection() {


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D46419.145142.patch
Type: text/x-patch
Size: 2379 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20180504/7d658e65/attachment.bin>


More information about the llvm-commits mailing list