llvm.org GIT mirror llvm / 894e54f test / tools / llvm-objcopy / ELF / segment-shift-section-remove.test
894e54f

Tree @894e54f (Download .tar.gz)

segment-shift-section-remove.test @894e54fraw · history · blame

# RUN: yaml2obj %s -o %t
# RUN: llvm-objcopy -R .text2 %t %t2
# RUN: llvm-readobj --file-headers --sections --program-headers %t2 | FileCheck %s

!ELF
FileHeader:
  Class:           ELFCLASS64
  Data:            ELFDATA2LSB
  Type:            ET_EXEC
  Machine:         EM_X86_64
Sections:
  - Name:            .text
    Type:            SHT_PROGBITS
    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
    Address:         0x1000
    AddressAlign:    0x1000
    Size:            0x1000
  - Name:            .text2
    Type:            SHT_PROGBITS
    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
    Address:         0x2000
    AddressAlign:    0x1000
    Size:            0x1000
  - Name:            .text3
    Type:            SHT_PROGBITS
    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
    Address:         0x3000
    AddressAlign:    0x1000
    Size:            0x1000
ProgramHeaders:
  - Type: PT_LOAD
    Flags: [ PF_R ]
    VAddr: 0x1000
    PAddr: 0x1000
    Sections:
      - Section: .text
  - Type: PT_LOAD
    Flags: [ PF_X, PF_R ]
    VAddr: 0x3000
    PAddr: 0x3000
    Sections:
      - Section: .text3

#CHECK: SectionHeaderCount: 6

# CHECK:           Sections [
# CHECK-NEXT:        Section {
# CHECK-NEXT:          Index: 0
# CHECK-NEXT:          Name:  (0)
# CHECK-NEXT:          Type: SHT_NULL (0x0)
# CHECK-NEXT:          Flags [ (0x0)
# CHECK-NEXT:          ]
# CHECK-NEXT:          Address: 0x0
# CHECK-NEXT:          Offset: 0x0
# CHECK-NEXT:          Size: 0
# CHECK-NEXT:          Link: 0
# CHECK-NEXT:          Info: 0
# CHECK-NEXT:          AddressAlignment: 0
# CHECK-NEXT:          EntrySize: 0
# CHECK-NEXT:        }
# CHECK-NEXT:        Section {
# CHECK-NEXT:          Index: 1
# CHECK-NEXT:          Name: .text
# CHECK-NEXT:          Type: SHT_PROGBITS (0x1)
# CHECK-NEXT:          Flags [ (0x6)
# CHECK-NEXT:            SHF_ALLOC (0x2)
# CHECK-NEXT:            SHF_EXECINSTR (0x4)
# CHECK-NEXT:          ]
# CHECK-NEXT:          Address: 0x1000
# CHECK-NEXT:          Offset: 0x1000
# CHECK-NEXT:          Size: 4096
# CHECK-NEXT:          Link: 0
# CHECK-NEXT:          Info: 0
# CHECK-NEXT:          AddressAlignment: 4096
# CHECK-NEXT:          EntrySize: 0
# CHECK-NEXT:        }
# CHECK-NEXT:        Section {
# CHECK-NEXT:          Index: 2
# CHECK-NEXT:          Name: .text3
# CHECK-NEXT:          Type: SHT_PROGBITS (0x1)
# CHECK-NEXT:          Flags [ (0x6)
# CHECK-NEXT:            SHF_ALLOC (0x2)
# CHECK-NEXT:            SHF_EXECINSTR (0x4)
# CHECK-NEXT:          ]
# CHECK-NEXT:          Address: 0x3000
# CHECK-NEXT:          Offset: 0x2000
# CHECK-NEXT:          Size: 4096
# CHECK-NEXT:          Link: 0
# CHECK-NEXT:          Info: 0
# CHECK-NEXT:          AddressAlignment: 4096
# CHECK-NEXT:          EntrySize: 0
# CHECK-NEXT:        }
# CHECK-NEXT:        Section {
# CHECK-NEXT:          Index: 3
# CHECK-NEXT:          Name: .symtab
# CHECK-NEXT:          Type: SHT_SYMTAB (0x2)
# CHECK-NEXT:          Flags [ (0x0)
# CHECK-NEXT:          ]
# CHECK-NEXT:          Address: 0x0
# CHECK-NEXT:          Offset: 0x3000
# CHECK-NEXT:          Size: 24
# CHECK-NEXT:          Link: 4
# CHECK-NEXT:          Info: 1
# CHECK-NEXT:          AddressAlignment: 8
# CHECK-NEXT:          EntrySize: 24
# CHECK-NEXT:        }
# CHECK-NEXT:        Section {
# CHECK-NEXT:          Index: 4
# CHECK-NEXT:          Name: .strtab
# CHECK-NEXT:          Type: SHT_STRTAB (0x3)
# CHECK-NEXT:          Flags [ (0x0)
# CHECK-NEXT:          ]
# CHECK-NEXT:          Address: 0x0
# CHECK-NEXT:          Offset: 0x3018
# CHECK-NEXT:          Size:
# CHECK-NEXT:          Link: 0
# CHECK-NEXT:          Info: 0
# CHECK-NEXT:          AddressAlignment: 1
# CHECK-NEXT:          EntrySize: 0
# CHECK-NEXT:        }
# CHECK-NEXT:        Section {
# CHECK-NEXT:          Index: 5
# CHECK-NEXT:          Name: .shstrtab
# CHECK-NEXT:          Type: SHT_STRTAB (0x3)
# CHECK-NEXT:          Flags [ (0x0)
# CHECK-NEXT:          ]
# CHECK-NEXT:          Address: 0x0
# CHECK-NEXT:          Offset:
# CHECK-NEXT:          Size:
# CHECK-NEXT:          Link: 0
# CHECK-NEXT:          Info: 0
# CHECK-NEXT:          AddressAlignment: 1
# CHECK-NEXT:          EntrySize: 0
# CHECK-NEXT:        }
# CHECK-NEXT:      ]


# CHECK:     ProgramHeaders [
# CHECK-NEXT:  ProgramHeader {
# CHECK-NEXT:    Type: PT_LOAD (0x1)
# CHECK-NEXT:    Offset: 0x1000
# CHECK-NEXT:    VirtualAddress: 0x1000
# CHECK-NEXT:    PhysicalAddress: 0x1000
# CHECK-NEXT:    FileSize: 4096
# CHECK-NEXT:    MemSize: 4096
# CHECK-NEXT:    Flags [ (0x4)
# CHECK-NEXT:      PF_R (0x4)
# CHECK-NEXT:    ]
# CHECK-NEXT:    Alignment: 4096
# CHECK-NEXT:  }
# CHECK-NEXT:  ProgramHeader {
# CHECK-NEXT:    Type: PT_LOAD (0x1)
# CHECK-NEXT:    Offset: 0x2000
# CHECK-NEXT:    VirtualAddress: 0x3000
# CHECK-NEXT:    PhysicalAddress: 0x3000
# CHECK-NEXT:    FileSize: 4096
# CHECK-NEXT:    MemSize: 4096
# CHECK-NEXT:    Flags [ (0x5)
# CHECK-NEXT:      PF_R (0x4)
# CHECK-NEXT:      PF_X (0x1)
# CHECK-NEXT:    ]
# CHECK-NEXT:    Alignment: 4096
# CHECK-NEXT:  }
# CHECK-NEXT:]