xref: /llvm-project/llvm/test/tools/llvm-objcopy/ELF/preserve-segment-contents.test (revision a7a447be0fa934505f0c423fb97b91a68c1cc715)
11f448149SJames Henderson# We want to preserve areas in segments that are not covered by section headers.
21f448149SJames Henderson# This test shows that we do this for areas at the start of a segment, between
31f448149SJames Henderson# sections in a segment, and after all sections in a segment.
41f448149SJames Henderson# To create inputs with arbitrary data in segments, not covered by sections, we
51f448149SJames Henderson# use yaml2obj to create segments with sections covering all areas, then remove
61f448149SJames Henderson# some sections in those segments, and finally write over the areas of the
71f448149SJames Henderson# removed sections using python.
81f448149SJames Henderson
91f448149SJames Henderson# blob* sections are the sections that will be removed to create unlabelled
101f448149SJames Henderson# areas and then overwritten with data to show we preserve the data.
111f448149SJames Henderson
121f448149SJames Henderson# RUN: yaml2obj %s -o %t.base
131f448149SJames Henderson# RUN: llvm-objcopy %t.base %t.stripped --regex -R blob.*
141f448149SJames Henderson# Show that the removal leaves the bytes as zeroes, as desired, for all our
151f448149SJames Henderson# test cases.
16818ab3d6SGeorgii Rymar# RUN: od -t x1 -j 0x2000 -N 28 %t.stripped | FileCheck %s --ignore-case --check-prefix=CHECK1 -DPATTERN="00 00 00 00"
1742b7cd58SKai Nacke# RUN: od -t x1 -j 0x2100 -N 12 %t.stripped | FileCheck %s --ignore-case --check-prefix=CHECK2 -DPATTERN="00 00 00 00"
1842b7cd58SKai Nacke# RUN: od -t x1 -j 0x2200 -N 4  %t.stripped | FileCheck %s --ignore-case --check-prefix=CHECK3 -DPATTERN="00 00 00 00"
1942b7cd58SKai Nacke# RUN: od -t x1 -j 0x2300 -N 12 %t.stripped | FileCheck %s --ignore-case --check-prefix=CHECK4 -DPATTERN="00 00 00 00"
2042b7cd58SKai Nacke# RUN: od -t x1 -j 0x3000 -N 68 %t.stripped | FileCheck %s --ignore-case --check-prefix=CHECK5 -DPATTERN="00 00 00 00"
2142b7cd58SKai Nacke# RUN: od -t x1 -j 0x4000 -N 60 %t.stripped | FileCheck %s --ignore-case --check-prefix=CHECK6 -DPATTERN="00 00 00 00"
2242b7cd58SKai Nacke# RUN: od -t x1 -j 0x5000 -N 60 %t.stripped | FileCheck %s --ignore-case --check-prefix=CHECK7 -DPATTERN="00 00 00 00"
231f448149SJames Henderson
241f448149SJames Henderson# RUN: cp %t.stripped %t.in
258245140dSAlexandre Ganea# RUN: echo "with open('%/t.in', 'rb+') as input:"                                 > %t.py
261f448149SJames Henderson# RUN: echo "  for offset in ["                                                   >> %t.py
27818ab3d6SGeorgii Rymar# RUN: echo "   0x2000, 0x2008, 0x200C, 0x2018, 0x2104, 0x2300,"                  >> %t.py
281f448149SJames Henderson# RUN: echo "   0x3008, 0x3010, 0x3018, 0x3020, 0x3028, 0x302C, 0x3034, 0x303C,"  >> %t.py
291f448149SJames Henderson# RUN: echo "   0x4000, 0x4008, 0x4010, 0x4014, 0x401C, 0x4024, 0x4034,"          >> %t.py
301f448149SJames Henderson# RUN: echo "   0x5000, 0x5008, 0x5010, 0x501C, 0x5024, 0x502C, 0x5030, 0x5038]:" >> %t.py
311f448149SJames Henderson# RUN: echo "    input.seek(offset)"                                              >> %t.py
328245140dSAlexandre Ganea# RUN: echo "    input.write(bytearray.fromhex('DEADBEEF'))"                      >> %t.py
331f448149SJames Henderson# RUN: %python %t.py
341f448149SJames Henderson# RUN: llvm-objcopy %t.in %t.out
35818ab3d6SGeorgii Rymar# RUN: od -t x1 -j 0x2000 -N 28 %t.out | FileCheck %s --ignore-case --check-prefix=CHECK1 -DPATTERN="de ad be ef"
3642b7cd58SKai Nacke# RUN: od -t x1 -j 0x2100 -N 12 %t.out | FileCheck %s --ignore-case --check-prefix=CHECK2 -DPATTERN="de ad be ef"
3742b7cd58SKai Nacke# RUN: od -t x1 -j 0x2200 -N 4  %t.out | FileCheck %s --ignore-case --check-prefix=CHECK3 -DPATTERN="de ad be ef"
3842b7cd58SKai Nacke# RUN: od -t x1 -j 0x2300 -N 12 %t.out | FileCheck %s --ignore-case --check-prefix=CHECK4 -DPATTERN="de ad be ef"
3942b7cd58SKai Nacke# RUN: od -t x1 -j 0x3000 -N 68 %t.out | FileCheck %s --ignore-case --check-prefix=CHECK5 -DPATTERN="de ad be ef"
4042b7cd58SKai Nacke# RUN: od -t x1 -j 0x4000 -N 60 %t.out | FileCheck %s --ignore-case --check-prefix=CHECK6 -DPATTERN="de ad be ef"
4142b7cd58SKai Nacke# RUN: od -t x1 -j 0x5000 -N 60 %t.out | FileCheck %s --ignore-case --check-prefix=CHECK7 -DPATTERN="de ad be ef"
421f448149SJames Henderson
431f448149SJames Henderson# CHECK1:      [[PATTERN]] 11 22 33 44 [[PATTERN]] [[PATTERN]]
44818ab3d6SGeorgii Rymar# CHECK1-NEXT: 00 00 00 00 55 66 77 88 [[PATTERN]]
451f448149SJames Henderson# CHECK2:      99 00 aa bb [[PATTERN]] cc dd ee ff
461f448149SJames Henderson# CHECK3:      fe fe fe fe
471f448149SJames Henderson# CHECK4:      [[PATTERN]] 00 00 00 00 00 00 00 00
481f448149SJames Henderson# CHECK5:      ff ff ee ee dd dd cc cc [[PATTERN]] bb bb aa aa
491f448149SJames Henderson# CHECK5-NEXT: [[PATTERN]] 00 00 99 99 [[PATTERN]] 88 88 77 77
501f448149SJames Henderson# CHECK5-NEXT: [[PATTERN]] 66 66 55 55 [[PATTERN]] [[PATTERN]]
511f448149SJames Henderson# CHECK5-NEXT: 44 44 33 33 [[PATTERN]] 22 22 11 11 [[PATTERN]]
521f448149SJames Henderson# CHECK5-NEXT: 00 11 22 33
531f448149SJames Henderson# CHECK6:      [[PATTERN]] 44 55 66 77 [[PATTERN]] 88 99 aa bb
541f448149SJames Henderson# CHECK6-NEXT: [[PATTERN]] [[PATTERN]] cc dd ee ff [[PATTERN]]
551f448149SJames Henderson# CHECK6-NEXT: ff ee dd cc [[PATTERN]] bb aa 99 88 77 66 55 44
561f448149SJames Henderson# CHECK6-NEXT: 33 22 11 00 [[PATTERN]] 11 11 11 11
571f448149SJames Henderson# CHECK7:      [[PATTERN]] 12 34 56 78 [[PATTERN]] 90 ab cd ef
581f448149SJames Henderson# CHECK7-NEXT: [[PATTERN]] fe dc ba 09 87 65 43 21 [[PATTERN]]
591f448149SJames Henderson# CHECK7-NEXT: 22 22 22 22 [[PATTERN]] 33 33 33 33 [[PATTERN]]
601f448149SJames Henderson# CHECK7-NEXT: [[PATTERN]] 44 44 44 44 [[PATTERN]]
611f448149SJames Henderson
621f448149SJames Henderson--- !ELF
631f448149SJames HendersonFileHeader:
641f448149SJames Henderson  Class:   ELFCLASS64
651f448149SJames Henderson  Data:    ELFDATA2LSB
661f448149SJames Henderson  Type:    ET_EXEC
671f448149SJames Henderson  Machine: EM_X86_64
681f448149SJames HendersonSections:
691f448149SJames Henderson  - Name: blob1
701f448149SJames Henderson    Type: SHT_PROGBITS
711f448149SJames Henderson    Content: 'abbababa'
721f448149SJames Henderson    Address: 0x2000
731f448149SJames Henderson    AddressAlign: 0x2000
741f448149SJames Henderson  - Name: section1
751f448149SJames Henderson    Type: SHT_PROGBITS
761f448149SJames Henderson    Address: 0x2004
771f448149SJames Henderson    Content: '11223344'
781f448149SJames Henderson  - Name: blob2
791f448149SJames Henderson    Type: SHT_PROGBITS
801f448149SJames Henderson    Content: 'abbababa'
811f448149SJames Henderson    Address: 0x2008
821f448149SJames Henderson  - Name: section2
831f448149SJames Henderson    Type: SHT_NOBITS
841f448149SJames Henderson    Size: 4
851f448149SJames Henderson    Address: 0x200C
861f448149SJames Henderson  - Name: blob3
871f448149SJames Henderson    Type: SHT_PROGBITS
881f448149SJames Henderson    Content: 'abbababa'
891f448149SJames Henderson    Address: 0x2010
901f448149SJames Henderson  - Name: section3
911f448149SJames Henderson    Type: SHT_PROGBITS
921f448149SJames Henderson    Content: '55667788'
931f448149SJames Henderson    Address: 0x2014
941f448149SJames Henderson  - Name: blob4
951f448149SJames Henderson    Type: SHT_PROGBITS
961f448149SJames Henderson    Content: 'abbababa'
971f448149SJames Henderson    Address: 0x2018
981f448149SJames Henderson  - Name: section4
991f448149SJames Henderson    Type: SHT_PROGBITS
1001f448149SJames Henderson    Content: '9900aabb'
1011f448149SJames Henderson    Address: 0x2100
1021f448149SJames Henderson    AddressAlign: 0x100
1031f448149SJames Henderson  - Name: blob5
1041f448149SJames Henderson    Type: SHT_PROGBITS
1051f448149SJames Henderson    Content: 'abbababa'
1061f448149SJames Henderson    Address: 0x2104
1071f448149SJames Henderson  - Name: section5
1081f448149SJames Henderson    Type: SHT_PROGBITS
1091f448149SJames Henderson    Address: 0x2108
1101f448149SJames Henderson    Content: 'ccddeeff'
1111f448149SJames Henderson  - Name: section6
1121f448149SJames Henderson    Type: SHT_PROGBITS
1131f448149SJames Henderson    Content: 'fefefefe'
1141f448149SJames Henderson    Address: 0x2200
1151f448149SJames Henderson    AddressAlign: 0x100
1161f448149SJames Henderson  - Name: blob6
1171f448149SJames Henderson    Type: SHT_PROGBITS
1181f448149SJames Henderson    Content: 'abbababa'
1191f448149SJames Henderson    Address: 0x2300
1201f448149SJames Henderson    AddressAlign: 0x100
1211f448149SJames Henderson  - Name: sectionA
1221f448149SJames Henderson    Type: SHT_PROGBITS
1231f448149SJames Henderson    Content: 'ffffeeee'
1241f448149SJames Henderson    Address: 0x3000
1251f448149SJames Henderson    AddressAlign: 0x1000
1261f448149SJames Henderson  - Name: sectionB
1271f448149SJames Henderson    Type: SHT_PROGBITS
1281f448149SJames Henderson    Content: 'ddddcccc'
1291f448149SJames Henderson    Address: 0x3004
1301f448149SJames Henderson  - Name: blobA
1311f448149SJames Henderson    Type: SHT_PROGBITS
1321f448149SJames Henderson    Content: 'abbababa'
1331f448149SJames Henderson    Address: 0x3008
1341f448149SJames Henderson  - Name: sectionC
1351f448149SJames Henderson    Type: SHT_PROGBITS
1361f448149SJames Henderson    Content: 'bbbbaaaa'
1371f448149SJames Henderson    Address: 0x300C
1381f448149SJames Henderson  - Name: blobB
1391f448149SJames Henderson    Type: SHT_PROGBITS
1401f448149SJames Henderson    Content: 'abbababa'
1411f448149SJames Henderson    Address: 0x3010
1421f448149SJames Henderson  - Name: sectionD
1431f448149SJames Henderson    Type: SHT_PROGBITS
1441f448149SJames Henderson    Content: '00009999'
1451f448149SJames Henderson    Address: 0x3014
1461f448149SJames Henderson  - Name: blobC
1471f448149SJames Henderson    Type: SHT_PROGBITS
1481f448149SJames Henderson    Content: 'abbababa'
1491f448149SJames Henderson    Address: 0x3018
1501f448149SJames Henderson  - Name: sectionE
1511f448149SJames Henderson    Type: SHT_PROGBITS
1521f448149SJames Henderson    Content: '88887777'
1531f448149SJames Henderson    Address: 0x301C
1541f448149SJames Henderson  - Name: blobD
1551f448149SJames Henderson    Type: SHT_PROGBITS
1561f448149SJames Henderson    Content: 'abbababa'
1571f448149SJames Henderson    Address: 0x3020
1581f448149SJames Henderson  - Name: sectionF
1591f448149SJames Henderson    Type: SHT_PROGBITS
1601f448149SJames Henderson    Content: '66665555'
1611f448149SJames Henderson    Address: 0x3024
1621f448149SJames Henderson  - Name: blobE
1631f448149SJames Henderson    Type: SHT_PROGBITS
1641f448149SJames Henderson    Content: 'abbababa'
1651f448149SJames Henderson    Address: 0x3028
1661f448149SJames Henderson  - Name: blobF
1671f448149SJames Henderson    Type: SHT_PROGBITS
1681f448149SJames Henderson    Content: 'abbababa'
1691f448149SJames Henderson    Address: 0x302C
1701f448149SJames Henderson  - Name: sectionG
1711f448149SJames Henderson    Type: SHT_PROGBITS
1721f448149SJames Henderson    Content: '44443333'
1731f448149SJames Henderson    Address: 0x3030
1741f448149SJames Henderson  - Name: blobG
1751f448149SJames Henderson    Type: SHT_PROGBITS
1761f448149SJames Henderson    Content: 'abbababa'
1771f448149SJames Henderson    Address: 0x3034
1781f448149SJames Henderson  - Name: sectionH
1791f448149SJames Henderson    Type: SHT_PROGBITS
1801f448149SJames Henderson    Content: '22221111'
1811f448149SJames Henderson    Address: 0x3038
1821f448149SJames Henderson  - Name: blobH
1831f448149SJames Henderson    Type: SHT_PROGBITS
1841f448149SJames Henderson    Content: 'abbababa'
1851f448149SJames Henderson    Address: 0x303C
1861f448149SJames Henderson  - Name: sectionI
1871f448149SJames Henderson    Type: SHT_PROGBITS
1881f448149SJames Henderson    Content: '00112233'
1891f448149SJames Henderson    Address: 0x3040
1901f448149SJames Henderson  - Name: blobz
1911f448149SJames Henderson    Type: SHT_PROGBITS
1921f448149SJames Henderson    Content: 'abbababa'
1931f448149SJames Henderson    Address: 0x4000
1941f448149SJames Henderson    AddressAlign: 0x1000
1951f448149SJames Henderson  - Name: sectionz
1961f448149SJames Henderson    Type: SHT_PROGBITS
1971f448149SJames Henderson    Content: '44556677'
1981f448149SJames Henderson    Address: 0x4004
1991f448149SJames Henderson  - Name: bloby
2001f448149SJames Henderson    Type: SHT_PROGBITS
2011f448149SJames Henderson    Content: 'abbababa'
2021f448149SJames Henderson    Address: 0x4008
2031f448149SJames Henderson  - Name: sectiony
2041f448149SJames Henderson    Type: SHT_PROGBITS
2051f448149SJames Henderson    Content: '8899aabb'
2061f448149SJames Henderson    Address: 0x400C
2071f448149SJames Henderson  - Name: blobx
2081f448149SJames Henderson    Type: SHT_PROGBITS
2091f448149SJames Henderson    Content: 'abbababa'
2101f448149SJames Henderson    Address: 0x4010
2111f448149SJames Henderson  - Name: blobw
2121f448149SJames Henderson    Type: SHT_PROGBITS
2131f448149SJames Henderson    Content: 'abbababa'
2141f448149SJames Henderson    Address: 0x4014
2151f448149SJames Henderson  - Name: sectionx
2161f448149SJames Henderson    Type: SHT_PROGBITS
2171f448149SJames Henderson    Content: 'ccddeeff'
2181f448149SJames Henderson    Address: 0x4018
2191f448149SJames Henderson  - Name: blobv
2201f448149SJames Henderson    Type: SHT_PROGBITS
2211f448149SJames Henderson    Content: 'abbababa'
2221f448149SJames Henderson    Address: 0x401C
2231f448149SJames Henderson  - Name: sectionw
2241f448149SJames Henderson    Type: SHT_PROGBITS
2251f448149SJames Henderson    Content: 'ffeeddcc'
2261f448149SJames Henderson    Address: 0x4020
2271f448149SJames Henderson  - Name: blobu
2281f448149SJames Henderson    Type: SHT_PROGBITS
2291f448149SJames Henderson    Content: 'abbababa'
2301f448149SJames Henderson    Address: 0x4024
2311f448149SJames Henderson  - Name: sectionv
2321f448149SJames Henderson    Type: SHT_PROGBITS
2331f448149SJames Henderson    Content: 'bbaa9988'
2341f448149SJames Henderson    Address: 0x4028
2351f448149SJames Henderson  - Name: sectionu
2361f448149SJames Henderson    Type: SHT_PROGBITS
2371f448149SJames Henderson    Content: '77665544'
2381f448149SJames Henderson    Address: 0x402C
2391f448149SJames Henderson  - Name: sectiont
2401f448149SJames Henderson    Type: SHT_PROGBITS
2411f448149SJames Henderson    Content: '33221100'
2421f448149SJames Henderson    Address: 0x4030
2431f448149SJames Henderson  - Name: blobt
2441f448149SJames Henderson    Type: SHT_PROGBITS
2451f448149SJames Henderson    Content: 'abbababa'
2461f448149SJames Henderson    Address: 0x4034
2471f448149SJames Henderson  - Name: sections
2481f448149SJames Henderson    Type: SHT_PROGBITS
2491f448149SJames Henderson    Content: '11111111'
2501f448149SJames Henderson    Address: 0x4038
2511f448149SJames Henderson  - Name: bloba
2521f448149SJames Henderson    Type: SHT_PROGBITS
2531f448149SJames Henderson    Content: 'abbababa'
2541f448149SJames Henderson    Address: 0x5000
2551f448149SJames Henderson    AddressAlign: 0x1000
2561f448149SJames Henderson  - Name: sectiona
2571f448149SJames Henderson    Type: SHT_PROGBITS
2581f448149SJames Henderson    Content: '12345678'
2591f448149SJames Henderson    Address: 0x5004
2601f448149SJames Henderson  - Name: blobb
2611f448149SJames Henderson    Type: SHT_PROGBITS
2621f448149SJames Henderson    Content: 'abbababa'
2631f448149SJames Henderson    Address: 0x5008
2641f448149SJames Henderson  - Name: sectionb
2651f448149SJames Henderson    Type: SHT_PROGBITS
2661f448149SJames Henderson    Content: '90abcdef'
2671f448149SJames Henderson    Address: 0x500C
2681f448149SJames Henderson  - Name: blobc
2691f448149SJames Henderson    Type: SHT_PROGBITS
2701f448149SJames Henderson    Content: 'abbababa'
2711f448149SJames Henderson    Address: 0x5010
2721f448149SJames Henderson  - Name: sectionc
2731f448149SJames Henderson    Type: SHT_PROGBITS
2741f448149SJames Henderson    Content: 'fedcba09'
2751f448149SJames Henderson    Address: 0x5014
2761f448149SJames Henderson  - Name: sectiond
2771f448149SJames Henderson    Type: SHT_PROGBITS
2781f448149SJames Henderson    Content: '87654321'
2791f448149SJames Henderson    Address: 0x5018
2801f448149SJames Henderson  - Name: blobd
2811f448149SJames Henderson    Type: SHT_PROGBITS
2821f448149SJames Henderson    Content: 'abbababa'
2831f448149SJames Henderson    Address: 0x501C
2841f448149SJames Henderson  - Name: sectione
2851f448149SJames Henderson    Type: SHT_PROGBITS
2861f448149SJames Henderson    Content: '22222222'
2871f448149SJames Henderson    Address: 0x5020
2881f448149SJames Henderson  - Name: blobe
2891f448149SJames Henderson    Type: SHT_PROGBITS
2901f448149SJames Henderson    Content: 'abbababa'
2911f448149SJames Henderson    Address: 0x5024
2921f448149SJames Henderson  - Name: sectionf
2931f448149SJames Henderson    Type: SHT_PROGBITS
2941f448149SJames Henderson    Content: '33333333'
2951f448149SJames Henderson    Address: 0x5028
2961f448149SJames Henderson  - Name: blobf
2971f448149SJames Henderson    Type: SHT_PROGBITS
2981f448149SJames Henderson    Content: 'abbababa'
2991f448149SJames Henderson    Address: 0x502C
3001f448149SJames Henderson  - Name: blobg
3011f448149SJames Henderson    Type: SHT_PROGBITS
3021f448149SJames Henderson    Content: 'abbababa'
3031f448149SJames Henderson    Address: 0x5030
3041f448149SJames Henderson  - Name: sectiong
3051f448149SJames Henderson    Type: SHT_PROGBITS
3061f448149SJames Henderson    Content: '44444444'
3071f448149SJames Henderson    Address: 0x5034
3081f448149SJames Henderson  - Name: blobh
3091f448149SJames Henderson    Type: SHT_PROGBITS
3101f448149SJames Henderson    Content: 'abbababa'
3111f448149SJames Henderson    Address: 0x5038
3121f448149SJames HendersonProgramHeaders:
3131f448149SJames Henderson  # First segment has unlabelled space at start and end.
3141f448149SJames Henderson  - Type:     0x6ABCDEF0 # Non-specific segment type.
3151f448149SJames Henderson    VAddr:    0x2000
3161f448149SJames Henderson    Align:    0x2000
317*a7a447beSGeorgii Rymar    FirstSec: blob1
318*a7a447beSGeorgii Rymar    LastSec:  blob4
3191f448149SJames Henderson  # Second segment has sections at start and end.
3201f448149SJames Henderson  - Type:     0x6ABCDEF0
3211f448149SJames Henderson    VAddr:    0x2100
3221f448149SJames Henderson    Align:    0x100
323*a7a447beSGeorgii Rymar    FirstSec: section4
324*a7a447beSGeorgii Rymar    LastSec:  section5
3251f448149SJames Henderson  # Third segment is all covered by a section.
3261f448149SJames Henderson  - Type:     0x6ABCDEF0
3271f448149SJames Henderson    VAddr:    0x2200
3281f448149SJames Henderson    Align:    0x100
329*a7a447beSGeorgii Rymar    FirstSec: section6
330*a7a447beSGeorgii Rymar    LastSec:  section6
3311f448149SJames Henderson  # Fourth segment has no sections (after removing blob headers).
3321f448149SJames Henderson  - Type:     0x6ABCDEF0
3331f448149SJames Henderson    VAddr:    0x2300
3341f448149SJames Henderson    Align:    0x100
335*a7a447beSGeorgii Rymar    FirstSec: blob6
336*a7a447beSGeorgii Rymar    LastSec:  blob6
3371f448149SJames Henderson  # Fifth segment is empty.
3381f448149SJames Henderson  - Type:   0x6ABCDEF0
3391f448149SJames Henderson    VAddr:  0x2308
3401f448149SJames Henderson    Offset: 0x2308
3411f448149SJames Henderson  # The next few segments test behaviour of fully nested segments.
3421f448149SJames Henderson  # Sixth segment is the "parent" segment.
3431f448149SJames Henderson  - Type:     0x6ABCDEF0
3441f448149SJames Henderson    VAddr:    0x3000
3451f448149SJames Henderson    Align:    0x1000
346*a7a447beSGeorgii Rymar    FirstSec: sectionA
347*a7a447beSGeorgii Rymar    LastSec:  sectionI
3481f448149SJames Henderson  # Seventh segment is empty and nested.
3491f448149SJames Henderson  - Type:   0x6ABCDEF0
3501f448149SJames Henderson    VAddr:  0x3002
3511f448149SJames Henderson    Offset: 0x3002
3521f448149SJames Henderson  # Eighth segment contains only a section and is nested.
3531f448149SJames Henderson  - Type:     0x6ABCDEF0
3541f448149SJames Henderson    VAddr:    0x3004
355*a7a447beSGeorgii Rymar    FirstSec: sectionB
356*a7a447beSGeorgii Rymar    LastSec:  sectionB
3571f448149SJames Henderson  # Ninth segment contains only unlabelled space and is nested.
3581f448149SJames Henderson  - Type:     0x6ABCDEF0
3591f448149SJames Henderson    VAddr:    0x3008
360*a7a447beSGeorgii Rymar    FirstSec: blobA
361*a7a447beSGeorgii Rymar    LastSec:  blobA
3621f448149SJames Henderson  # Tenth segment contains two sections with space between and is nested.
3631f448149SJames Henderson  - Type:     0x6ABCDEF0
3641f448149SJames Henderson    VAddr:    0x300C
365*a7a447beSGeorgii Rymar    FirstSec: sectionC
366*a7a447beSGeorgii Rymar    LastSec:  sectionD
3671f448149SJames Henderson  # Eleventh segment contains two sections with space between and at ends and is nested.
3681f448149SJames Henderson  - Type:     0x6ABCDEF0
3691f448149SJames Henderson    VAddr:    0x3018
370*a7a447beSGeorgii Rymar    FirstSec: blobC
371*a7a447beSGeorgii Rymar    LastSec:  blobE
3721f448149SJames Henderson  # Twelfth segment contains one section with space at ends adjacent to space in parent segment.
3731f448149SJames Henderson  - Type:     0x6ABCDEF0
3741f448149SJames Henderson    VAddr:    0x302E
3751f448149SJames Henderson    Offset:   0x302E
3761f448149SJames Henderson    FileSize: 8
377*a7a447beSGeorgii Rymar    FirstSec: sectionG
378*a7a447beSGeorgii Rymar    LastSec:  sectionG
3791f448149SJames Henderson  # Thirteenth segment contains overlaps sections at either end in parent segment.
3801f448149SJames Henderson  - Type:     0x6ABCDEF0
3811f448149SJames Henderson    VAddr:    0x303A
3821f448149SJames Henderson    Offset:   0x303A
3831f448149SJames Henderson    FileSize: 0x8
384*a7a447beSGeorgii Rymar    FirstSec: blobH
385*a7a447beSGeorgii Rymar    LastSec:  blobH
3861f448149SJames Henderson
3871f448149SJames Henderson  # The next batch of segments are segments that only partially overlap other segments.
3881f448149SJames Henderson
3891f448149SJames Henderson  # Segment14: |-unlabelled-|-Sec-|
3901f448149SJames Henderson  # Segment15:           |--|-Sec-|-unlabelled-|
3911f448149SJames Henderson  - Type:     0x6ABCDEF0
3921f448149SJames Henderson    VAddr:    0x4000
393*a7a447beSGeorgii Rymar    FirstSec: blobz
394*a7a447beSGeorgii Rymar    LastSec:  sectionz
3951f448149SJames Henderson  - Type:     0x6ABCDEF0
3961f448149SJames Henderson    VAddr:    0x4002
3971f448149SJames Henderson    Offset:   0x4002
398*a7a447beSGeorgii Rymar    FirstSec: sectionz
399*a7a447beSGeorgii Rymar    LastSec:  bloby
4001f448149SJames Henderson
4011f448149SJames Henderson  # Segment16: |-Sec-|--|
4021f448149SJames Henderson  # Segment17:    |--|----unlabelled---|
4031f448149SJames Henderson  - Type:     0x6ABCDEF0
4041f448149SJames Henderson    VAddr:    0x400C
4051f448149SJames Henderson    FileSize: 6
406*a7a447beSGeorgii Rymar    FirstSec: sectiony
407*a7a447beSGeorgii Rymar    LastSec:  sectiony
4081f448149SJames Henderson  - Type:     0x6ABCDEF0
4091f448149SJames Henderson    VAddr:    0x400E
4101f448149SJames Henderson    Offset:   0x400E
411*a7a447beSGeorgii Rymar    FirstSec: blobx
412*a7a447beSGeorgii Rymar    LastSec:  blobx
4131f448149SJames Henderson
4141f448149SJames Henderson  # Segment18: |-unlabelled-|-Sec-|
4151f448149SJames Henderson  # Segment19:              |-Sec-|-unlabelled-|
4161f448149SJames Henderson  - Type:     0x6ABCDEF0
4171f448149SJames Henderson    VAddr:    0x4014
418*a7a447beSGeorgii Rymar    FirstSec: blobw
419*a7a447beSGeorgii Rymar    LastSec:  sectionx
4201f448149SJames Henderson  - Type:     0x6ABCDEF0
4211f448149SJames Henderson    VAddr:    0x4018
422*a7a447beSGeorgii Rymar    FirstSec: sectionx
423*a7a447beSGeorgii Rymar    LastSec:  blobv
4241f448149SJames Henderson
4251f448149SJames Henderson  # Segment20: |-Sec-|
4261f448149SJames Henderson  # Segment21:    |--|-unlabelled-|-Sec-|
4271f448149SJames Henderson  - Type:     0x6ABCDEF0
4281f448149SJames Henderson    VAddr:    0x4020
429*a7a447beSGeorgii Rymar    FirstSec: sectionw
430*a7a447beSGeorgii Rymar    LastSec:  sectionw
431*a7a447beSGeorgii Rymar
4321f448149SJames Henderson  - Type:   0x6ABCDEF0
4331f448149SJames Henderson    VAddr:  0x4022
4341f448149SJames Henderson    Offset: 0x4022
435*a7a447beSGeorgii Rymar    FirstSec: blobu
436*a7a447beSGeorgii Rymar    LastSec:  sectionv
4371f448149SJames Henderson
4381f448149SJames Henderson  # Segment22: |-Sec-|
4391f448149SJames Henderson  # Segment23:    |--|-Sec-|
4401f448149SJames Henderson  - Type:     0x6ABCDEF0
4411f448149SJames Henderson    VAddr:    0x402C
442*a7a447beSGeorgii Rymar    FirstSec: sectionu
443*a7a447beSGeorgii Rymar    LastSec:  sectionu
4441f448149SJames Henderson  - Type:     0x6ABCDEF0
4451f448149SJames Henderson    VAddr:    0x402E
4461f448149SJames Henderson    Offset:   0x402E
447*a7a447beSGeorgii Rymar    FirstSec: sectiont
448*a7a447beSGeorgii Rymar    LastSec:  sectiont
4491f448149SJames Henderson
4501f448149SJames Henderson  # Segment24: |-unlabelled-|--|
4511f448149SJames Henderson  # Segment25:              |--Sec--|
4521f448149SJames Henderson  - Type:     0x6ABCDEF0
4531f448149SJames Henderson    VAddr:    0x4034
4541f448149SJames Henderson    FileSize: 6
455*a7a447beSGeorgii Rymar    FirstSec: blobt
456*a7a447beSGeorgii Rymar    LastSec:  blobt
4571f448149SJames Henderson  - Type:     0x6ABCDEF0
4581f448149SJames Henderson    VAddr:    0x4038
459*a7a447beSGeorgii Rymar    FirstSec: sections
460*a7a447beSGeorgii Rymar    LastSec:  sections
4611f448149SJames Henderson
4621f448149SJames Henderson  # The next batch of segments represent groups of three nested/overlapping segments,
4631f448149SJames Henderson  # with one parent segment containing two overlapping segments.
4641f448149SJames Henderson
4651f448149SJames Henderson  # Segment26: |-unlabelled-|-Sec-|-unlabelled-|
4661f448149SJames Henderson  # Segment27: |------------|--|
4671f448149SJames Henderson  # Segment28:              |-Sec-|------------|
4681f448149SJames Henderson  - Type:     0x6ABCDEF0
4691f448149SJames Henderson    VAddr:    0x5000
4701f448149SJames Henderson    Align:    0x1000
471*a7a447beSGeorgii Rymar    FirstSec: bloba
472*a7a447beSGeorgii Rymar    LastSec:  blobb
4731f448149SJames Henderson  - Type:     0x6ABCDEF0
4741f448149SJames Henderson    VAddr:    0x5000
4751f448149SJames Henderson    FileSize: 6
476*a7a447beSGeorgii Rymar    FirstSec: bloba
477*a7a447beSGeorgii Rymar    LastSec:  bloba
4781f448149SJames Henderson  - Type:     0x6ABCDEF0
4791f448149SJames Henderson    VAddr:    0x5004
480*a7a447beSGeorgii Rymar    FirstSec: sectiona
481*a7a447beSGeorgii Rymar    LastSec:  blobb
4821f448149SJames Henderson
4831f448149SJames Henderson  # Segment29: |-Sec-|-unlabelled-|-Sec-|
4841f448149SJames Henderson  # Segment30: |-Sec-|--------|
4851f448149SJames Henderson  # Segment31:          |---------|-Sec-|
4861f448149SJames Henderson  - Type:     0x6ABCDEF0
4871f448149SJames Henderson    VAddr:    0x500C
488*a7a447beSGeorgii Rymar    FirstSec: sectionb
489*a7a447beSGeorgii Rymar    LastSec:  sectionc
4901f448149SJames Henderson  - Type:     0x6ABCDEF0
4911f448149SJames Henderson    VAddr:    0x500C
4921f448149SJames Henderson    FileSize: 7
493*a7a447beSGeorgii Rymar    FirstSec: sectionb
494*a7a447beSGeorgii Rymar    LastSec:  sectionb
4951f448149SJames Henderson  - Type:     0x6ABCDEF0
4961f448149SJames Henderson    VAddr:    0x5011
4971f448149SJames Henderson    Offset:   0x5011
498*a7a447beSGeorgii Rymar    FirstSec: sectionc
499*a7a447beSGeorgii Rymar    LastSec:  sectionc
5001f448149SJames Henderson
5011f448149SJames Henderson  # Segment32: |-Sec-|-unlabelled-|-Sec-|
5021f448149SJames Henderson  # Segment33: |-Sec-|------------|
5031f448149SJames Henderson  # Segment34:       |------------|-Sec-|
5041f448149SJames Henderson  - Type:    0x6ABCDEF0
5051f448149SJames Henderson    VAddr:   0x5018
506*a7a447beSGeorgii Rymar    FirstSec: sectiond
507*a7a447beSGeorgii Rymar    LastSec:  sectione
5081f448149SJames Henderson  - Type:     0x6ABCDEF0
5091f448149SJames Henderson    VAddr:    0x5018
510*a7a447beSGeorgii Rymar    FirstSec: sectiond
511*a7a447beSGeorgii Rymar    LastSec:  blobd
5121f448149SJames Henderson  - Type:     0x6ABCDEF0
5131f448149SJames Henderson    VAddr:    0x501C
514*a7a447beSGeorgii Rymar    FirstSec: blobd
515*a7a447beSGeorgii Rymar    LastSec:  sectione
5161f448149SJames Henderson
5171f448149SJames Henderson  # Segment35: |-unlabelled-|-Sec-|-unlabelled-|
5181f448149SJames Henderson  # Segment36: |------------|-Sec-|
5191f448149SJames Henderson  # Segment37:              |-Sec-|------------|
5201f448149SJames Henderson  - Type:     0x6ABCDEF0
5211f448149SJames Henderson    VAddr:    0x5024
522*a7a447beSGeorgii Rymar    FirstSec: blobe
523*a7a447beSGeorgii Rymar    LastSec:  blobf
5241f448149SJames Henderson  - Type:     0x6ABCDEF0
5251f448149SJames Henderson    VAddr:    0x5024
526*a7a447beSGeorgii Rymar    FirstSec: blobe
527*a7a447beSGeorgii Rymar    LastSec:  sectionf
5281f448149SJames Henderson  - Type:     0x6ABCDEF0
5291f448149SJames Henderson    VAddr:    0x5028
530*a7a447beSGeorgii Rymar    FirstSec: sectionf
531*a7a447beSGeorgii Rymar    LastSec:  blobf
5321f448149SJames Henderson
5331f448149SJames Henderson  # Segment38: |-unlabelled-|-Sec-|-unlabelled-|
5341f448149SJames Henderson  # Segment39: |------------|---|
5351f448149SJames Henderson  # Segment40:                |---|------------|
5361f448149SJames Henderson  - Type:     0x6ABCDEF0
5371f448149SJames Henderson    VAddr:    0x5030
538*a7a447beSGeorgii Rymar    FirstSec: blobg
539*a7a447beSGeorgii Rymar    LastSec:  blobh
5401f448149SJames Henderson  - Type:     0x6ABCDEF0
5411f448149SJames Henderson    VAddr:    0x5030
5421f448149SJames Henderson    FileSize: 7
543*a7a447beSGeorgii Rymar    FirstSec: blobg
544*a7a447beSGeorgii Rymar    LastSec:  blobg
5451f448149SJames Henderson  - Type:     0x6ABCDEF0
5461f448149SJames Henderson    VAddr:    0x5035
5471f448149SJames Henderson    Offset:   0x5035
548*a7a447beSGeorgii Rymar    FirstSec: blobh
549*a7a447beSGeorgii Rymar    LastSec:  blobh
550