reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced
    1
    2
    3
    4
    5
    6
    7
    8
    9
   10
   11
   12
   13
   14
   15
   16
   17
   18
   19
   20
   21
   22
   23
   24
   25
   26
   27
   28
   29
   30
   31
   32
   33
   34
   35
   36
   37
   38
   39
   40
   41
   42
   43
   44
   45
   46
   47
   48
   49
   50
   51
   52
   53
   54
   55
   56
   57
   58
   59
   60
   61
   62
   63
   64
   65
   66
   67
   68
   69
   70
   71
   72
   73
   74
   75
   76
   77
   78
   79
   80
   81
   82
   83
   84
   85
   86
   87
   88
   89
   90
   91
   92
   93
   94
   95
   96
   97
   98
   99
  100
  101
  102
  103
  104
  105
  106
  107
  108
  109
  110
  111
  112
  113
  114
  115
  116
  117
  118
  119
  120
  121
  122
  123
  124
  125
  126
  127
  128
  129
  130
  131
  132
  133
  134
  135
  136
  137
  138
  139
# 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
## TODO (grimar): without the following line (i.e. without an empty symbol table),
## llvm-objcopy adds an empty .strtab section. It doesn't look correct.
Symbols: []

#CHECK: SectionHeaderCount: 4

# 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: .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:]