[PATCH] D74879: [llvm-objcopy][test] Improve empty section tests

Fangrui Song via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Wed Feb 19 16:17:38 PST 2020


MaskRay created this revision.
MaskRay added reviewers: grimar, jhenderson, rupprecht.
Herald added subscribers: llvm-commits, abrachet, emaste.
Herald added a reviewer: espindola.
Herald added a reviewer: alexshap.
Herald added a project: LLVM.

Clean up empty-sections.test, and add a test by @jhenderson https://reviews.llvm.org/D74755#1882221

They mostly test the behavior of Object.cpp:sectionWithinSegment : how we attribute sections to segments.
`ParentSegment` can affect some subtle layout decisions.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D74879

Files:
  llvm/test/tools/llvm-objcopy/ELF/empty-section.test


Index: llvm/test/tools/llvm-objcopy/ELF/empty-section.test
===================================================================
--- llvm/test/tools/llvm-objcopy/ELF/empty-section.test
+++ llvm/test/tools/llvm-objcopy/ELF/empty-section.test
@@ -1,6 +1,14 @@
-# RUN: yaml2obj %s -o %t
-# RUN: llvm-objcopy %t %t2
-# RUN: llvm-readobj --sections %t2 | FileCheck %s
+# RUN: yaml2obj --docnum=1 %s -o %t1
+# RUN: llvm-objcopy %t1 %t1.out
+# RUN: llvm-readelf -S %t1.out | FileCheck --check-prefix=CHECK1 %s
+
+# CHECK1:      Name         Type     Address          Off    Size   ES Flg Lk Inf Al
+# CHECK1-NEXT:              NULL     0000000000000000 000000 000000 00      0   0  0
+# CHECK1-NEXT: .text        PROGBITS 0000000000000000 001000 000004 00  AX  0   0  4
+# CHECK1-NEXT: .empty       PROGBITS 0000000000001000 002000 000000 00   A  0   0 4096
+# CHECK1-NEXT: .data        PROGBITS 0000000000001000 002000 000004 00   A  0   0 4096
+# CHECK1-NEXT: .strtab      STRTAB   0000000000000000 002004 000001 00      0   0  1
+# CHECK1-NEXT: .shstrtab    STRTAB   0000000000000000 002005 000026 00      0   0  1
 
 !ELF
 FileHeader:
@@ -28,28 +36,53 @@
     AddressAlign:    0x0000000000001000
     Content:         "00000000"
 
+# RUN: yaml2obj --docnum=2 %s -o %t2
+# RUN: llvm-objcopy %t2 %t2.out
+# RUN: llvm-readelf -S %t2.out | FileCheck --check-prefix=CHECK2 %s
 
-# CHECK:      Name: .text
-# CHECK-NEXT: Type: SHT_PROGBITS
-# CHECK-NEXT: Flags [
-# CHECK-NEXT:   SHF_ALLOC
-# CHECK-NEXT:   SHF_EXECINSTR
-# CHECK-NEXT: ]
+# CHECK2:      Name         Type     Address          Off    Size   ES Flg Lk Inf Al
+# CHECK2-NEXT:              NULL     0000000000000000 000000 000000 00      0   0  0
+# CHECK2-NEXT: .foo         PROGBITS 0000000000000000 000100 000100 00   A  0   0 256
+# CHECK2-NEXT: .empty       PROGBITS 0000000000001000 001000 000000 00   A  0   0  0
+# CHECK2-NEXT: .baz         PROGBITS 0000000000001000 001000 000100 00   A  0   0 4096
 
-# CHECK:      Name: .empty
-# CHECK-NEXT: Type: SHT_PROGBITS
-# CHECK-NEXT: Flags [
-# CHECK-NEXT:   SHF_ALLOC
-# CHECK-NEXT: ]
-# CHECK-NEXT: Address: 0x1000
-# CHECK-NEXT: Offset: 0x2000
-# CHECK-NEXT: Size: 0
-
-# CHECK:      Name: .data
-# CHECK-NEXT: Type: SHT_PROGBITS
-# CHECK-NEXT: Flags [
-# CHECK-NEXT:   SHF_ALLOC
-# CHECK-NEXT: ]
-# CHECK-NEXT: Address: 0x1000
-# CHECK-NEXT: Offset: 0x2000
-# CHECK-NEXT: Size: 4
+--- !ELF
+FileHeader:
+  Class:   ELFCLASS64
+  Data:    ELFDATA2LSB
+  Type:    ET_EXEC
+  Machine: EM_X86_64
+Sections:
+  - Name:         gap
+    Type:         Fill
+    Size:         0xE00
+  - Name:         .foo
+    Type:         SHT_PROGBITS
+    Flags:        [ SHF_ALLOC ]
+    AddressAlign: 0x100
+    Address:      0
+    Size:         0x100
+  - Name:         .empty
+    Type:         SHT_PROGBITS
+    Flags:        [SHF_ALLOC]
+    Address:      0x1000
+  - Name:         .baz
+    Type:         SHT_PROGBITS
+    Flags:         [SHF_ALLOC]
+    AddressAlign: 0x1000
+    Address:      0x1000
+    Size:         0x100
+ProgramHeaders:
+  - Type:  PT_LOAD
+    VAddr: 0
+    PAddr: 0
+    Align: 0x100
+    Sections:
+      - Section: .foo
+  - Type:  PT_LOAD
+    VAddr: 0x1000
+    PAddr: 0x1000
+    Align: 0x1000
+    Sections:
+      - Section: .empty
+      - Section: .baz


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D74879.245551.patch
Type: text/x-patch
Size: 3285 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20200220/79446383/attachment.bin>


More information about the llvm-commits mailing list