forked from OSchip/llvm-project
				
			
		
			
				
	
	
		
			292 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
			
		
		
	
	
			292 lines
		
	
	
		
			8.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
## This test verifies that llvm-objcopy copies an executable properly. It
 | 
						|
## uses llvm-readobj instead of cmp because some parts of the object
 | 
						|
## (e.g., the string table) are not identical; the output file is correct but
 | 
						|
## some offsets differ from the input file.
 | 
						|
# RUN: yaml2obj %s -o %t
 | 
						|
# RUN: llvm-objcopy %t %t2
 | 
						|
# RUN: llvm-readobj --file-headers --sections %t2 | FileCheck %s
 | 
						|
 | 
						|
--- !mach-o
 | 
						|
FileHeader:
 | 
						|
  magic:           0xFEEDFACF
 | 
						|
  cputype:         0x01000007
 | 
						|
  cpusubtype:      0x80000003
 | 
						|
  filetype:        0x00000002
 | 
						|
  ncmds:           15
 | 
						|
  sizeofcmds:      976
 | 
						|
  flags:           0x00200085
 | 
						|
  reserved:        0x00000000
 | 
						|
LoadCommands:
 | 
						|
  - cmd:             LC_SEGMENT_64
 | 
						|
    cmdsize:         72
 | 
						|
    segname:         __PAGEZERO
 | 
						|
    vmaddr:          0
 | 
						|
    vmsize:          4294967296
 | 
						|
    fileoff:         0
 | 
						|
    filesize:        0
 | 
						|
    maxprot:         0
 | 
						|
    initprot:        0
 | 
						|
    nsects:          0
 | 
						|
    flags:           0
 | 
						|
  - cmd:             LC_SEGMENT_64
 | 
						|
    cmdsize:         232
 | 
						|
    segname:         __TEXT
 | 
						|
    vmaddr:          4294967296
 | 
						|
    vmsize:          4096
 | 
						|
    fileoff:         0
 | 
						|
    filesize:        4096
 | 
						|
    maxprot:         7
 | 
						|
    initprot:        5
 | 
						|
    nsects:          2
 | 
						|
    flags:           0
 | 
						|
    Sections:
 | 
						|
      - sectname:        __text
 | 
						|
        segname:         __TEXT
 | 
						|
        addr:            0x0000000100000F70
 | 
						|
        size:            58
 | 
						|
        offset:          0x00000F70
 | 
						|
        align:           4
 | 
						|
        reloff:          0x00000000
 | 
						|
        nreloc:          0
 | 
						|
        flags:           0x80000400
 | 
						|
        reserved1:       0x00000000
 | 
						|
        reserved2:       0x00000000
 | 
						|
        reserved3:       0x00000000
 | 
						|
      - sectname:        __unwind_info
 | 
						|
        segname:         __TEXT
 | 
						|
        addr:            0x0000000100000FAC
 | 
						|
        size:            72
 | 
						|
        offset:          0x00000FAC
 | 
						|
        align:           2
 | 
						|
        reloff:          0x00000000
 | 
						|
        nreloc:          0
 | 
						|
        flags:           0x00000000
 | 
						|
        reserved1:       0x00000000
 | 
						|
        reserved2:       0x00000000
 | 
						|
        reserved3:       0x00000000
 | 
						|
  - cmd:             LC_SEGMENT_64
 | 
						|
    cmdsize:         232
 | 
						|
    segname:         __DATA
 | 
						|
    vmaddr:          4294971392
 | 
						|
    vmsize:          4096
 | 
						|
    fileoff:         4096
 | 
						|
    filesize:        4096
 | 
						|
    maxprot:         7
 | 
						|
    initprot:        3
 | 
						|
    nsects:          2
 | 
						|
    flags:           0
 | 
						|
    Sections:
 | 
						|
      - sectname:        __data
 | 
						|
        segname:         __DATA
 | 
						|
        addr:            0x0000000100001000
 | 
						|
        size:            4
 | 
						|
        offset:          0x00001000
 | 
						|
        align:           2
 | 
						|
        reloff:          0x00000000
 | 
						|
        nreloc:          0
 | 
						|
        flags:           0x00000000
 | 
						|
        reserved1:       0x00000000
 | 
						|
        reserved2:       0x00000000
 | 
						|
        reserved3:       0x00000000
 | 
						|
      - sectname:        __common
 | 
						|
        segname:         __DATA
 | 
						|
        addr:            0x0000000100001004
 | 
						|
        size:            4
 | 
						|
        offset:          0x00000000
 | 
						|
        align:           2
 | 
						|
        reloff:          0x00000000
 | 
						|
        nreloc:          0
 | 
						|
        flags:           0x00000001
 | 
						|
        reserved1:       0x00000000
 | 
						|
        reserved2:       0x00000000
 | 
						|
        reserved3:       0x00000000
 | 
						|
  - cmd:             LC_SEGMENT_64
 | 
						|
    cmdsize:         72
 | 
						|
    segname:         __LINKEDIT
 | 
						|
    vmaddr:          4294975488
 | 
						|
    vmsize:          4096
 | 
						|
    fileoff:         8192
 | 
						|
    filesize:        232
 | 
						|
    maxprot:         7
 | 
						|
    initprot:        1
 | 
						|
    nsects:          0
 | 
						|
    flags:           0
 | 
						|
  - cmd:             LC_DYLD_INFO_ONLY
 | 
						|
    cmdsize:         48
 | 
						|
    rebase_off:      0
 | 
						|
    rebase_size:     0
 | 
						|
    bind_off:        0
 | 
						|
    bind_size:       0
 | 
						|
    weak_bind_off:   0
 | 
						|
    weak_bind_size:  0
 | 
						|
    lazy_bind_off:   0
 | 
						|
    lazy_bind_size:  0
 | 
						|
    export_off:      8192
 | 
						|
    export_size:     72
 | 
						|
  - cmd:             LC_SYMTAB
 | 
						|
    cmdsize:         24
 | 
						|
    symoff:          8272
 | 
						|
    nsyms:           6
 | 
						|
    stroff:          8368
 | 
						|
    strsize:         56
 | 
						|
  - cmd:             LC_DYSYMTAB
 | 
						|
    cmdsize:         80
 | 
						|
    ilocalsym:       0
 | 
						|
    nlocalsym:       0
 | 
						|
    iextdefsym:      0
 | 
						|
    nextdefsym:      5
 | 
						|
    iundefsym:       5
 | 
						|
    nundefsym:       1
 | 
						|
    tocoff:          0
 | 
						|
    ntoc:            0
 | 
						|
    modtaboff:       0
 | 
						|
    nmodtab:         0
 | 
						|
    extrefsymoff:    0
 | 
						|
    nextrefsyms:     0
 | 
						|
    indirectsymoff:  0
 | 
						|
    nindirectsyms:   0
 | 
						|
    extreloff:       0
 | 
						|
    nextrel:         0
 | 
						|
    locreloff:       0
 | 
						|
    nlocrel:         0
 | 
						|
  - cmd:             LC_LOAD_DYLINKER
 | 
						|
    cmdsize:         32
 | 
						|
    name:            12
 | 
						|
    PayloadString:   '/usr/lib/dyld'
 | 
						|
    ZeroPadBytes:    7
 | 
						|
  - cmd:             LC_UUID
 | 
						|
    cmdsize:         24
 | 
						|
    uuid:            B6EE4FB7-4E1E-3C7A-80D3-CFBD89DBC0FE
 | 
						|
  - cmd:             LC_BUILD_VERSION
 | 
						|
    cmdsize:         32
 | 
						|
    platform:        1
 | 
						|
    minos:           658944
 | 
						|
    sdk:             658944
 | 
						|
    ntools:          1
 | 
						|
    Tools:
 | 
						|
      - tool:            3
 | 
						|
        version:         29491968
 | 
						|
  - cmd:             LC_SOURCE_VERSION
 | 
						|
    cmdsize:         16
 | 
						|
    version:         0
 | 
						|
  - cmd:             LC_MAIN
 | 
						|
    cmdsize:         24
 | 
						|
    entryoff:        3984
 | 
						|
    stacksize:       0
 | 
						|
  - cmd:             LC_LOAD_DYLIB
 | 
						|
    cmdsize:         56
 | 
						|
    dylib:
 | 
						|
      name:            24
 | 
						|
      timestamp:       2
 | 
						|
      current_version: 82115073
 | 
						|
      compatibility_version: 65536
 | 
						|
    PayloadString:   '/usr/lib/libSystem.B.dylib'
 | 
						|
    ZeroPadBytes:    6
 | 
						|
  - cmd:             LC_FUNCTION_STARTS
 | 
						|
    cmdsize:         16
 | 
						|
    dataoff:         8264
 | 
						|
    datasize:        8
 | 
						|
  - cmd:             LC_DATA_IN_CODE
 | 
						|
    cmdsize:         16
 | 
						|
    dataoff:         8272
 | 
						|
    datasize:        0
 | 
						|
LinkEditData:
 | 
						|
  ExportTrie:
 | 
						|
    TerminalSize:    0
 | 
						|
    NodeOffset:      0
 | 
						|
    Name:            ''
 | 
						|
    Flags:           0x0000000000000000
 | 
						|
    Address:         0x0000000000000000
 | 
						|
    Other:           0x0000000000000000
 | 
						|
    ImportName:      ''
 | 
						|
    Children:
 | 
						|
      - TerminalSize:    0
 | 
						|
        NodeOffset:      5
 | 
						|
        Name:            _
 | 
						|
        Flags:           0x0000000000000000
 | 
						|
        Address:         0x0000000000000000
 | 
						|
        Other:           0x0000000000000000
 | 
						|
        ImportName:      ''
 | 
						|
        Children:
 | 
						|
          - TerminalSize:    2
 | 
						|
            NodeOffset:      44
 | 
						|
            Name:            _mh_execute_header
 | 
						|
            Flags:           0x0000000000000000
 | 
						|
            Address:         0x0000000000000000
 | 
						|
            Other:           0x0000000000000000
 | 
						|
            ImportName:      ''
 | 
						|
          - TerminalSize:    3
 | 
						|
            NodeOffset:      48
 | 
						|
            Name:            foo
 | 
						|
            Flags:           0x0000000000000000
 | 
						|
            Address:         0x0000000000000F70
 | 
						|
            Other:           0x0000000000000000
 | 
						|
            ImportName:      ''
 | 
						|
          - TerminalSize:    3
 | 
						|
            NodeOffset:      53
 | 
						|
            Name:            main
 | 
						|
            Flags:           0x0000000000000000
 | 
						|
            Address:         0x0000000000000F90
 | 
						|
            Other:           0x0000000000000000
 | 
						|
            ImportName:      ''
 | 
						|
          - TerminalSize:    3
 | 
						|
            NodeOffset:      58
 | 
						|
            Name:            b
 | 
						|
            Flags:           0x0000000000000000
 | 
						|
            Address:         0x0000000000001000
 | 
						|
            Other:           0x0000000000000000
 | 
						|
            ImportName:      ''
 | 
						|
          - TerminalSize:    3
 | 
						|
            NodeOffset:      63
 | 
						|
            Name:            a
 | 
						|
            Flags:           0x0000000000000000
 | 
						|
            Address:         0x0000000000001004
 | 
						|
            Other:           0x0000000000000000
 | 
						|
            ImportName:      ''
 | 
						|
  NameList:
 | 
						|
    - n_strx:          2
 | 
						|
      n_type:          0x0F
 | 
						|
      n_sect:          1
 | 
						|
      n_desc:          16
 | 
						|
      n_value:         4294967296
 | 
						|
    - n_strx:          22
 | 
						|
      n_type:          0x0F
 | 
						|
      n_sect:          4
 | 
						|
      n_desc:          0
 | 
						|
      n_value:         4294971396
 | 
						|
    - n_strx:          25
 | 
						|
      n_type:          0x0F
 | 
						|
      n_sect:          3
 | 
						|
      n_desc:          0
 | 
						|
      n_value:         4294971392
 | 
						|
    - n_strx:          28
 | 
						|
      n_type:          0x0F
 | 
						|
      n_sect:          1
 | 
						|
      n_desc:          0
 | 
						|
      n_value:         4294971248
 | 
						|
    - n_strx:          33
 | 
						|
      n_type:          0x0F
 | 
						|
      n_sect:          1
 | 
						|
      n_desc:          0
 | 
						|
      n_value:         4294971280
 | 
						|
    - n_strx:          39
 | 
						|
      n_type:          0x01
 | 
						|
      n_sect:          0
 | 
						|
      n_desc:          256
 | 
						|
      n_value:         0
 | 
						|
  StringTable:
 | 
						|
    - ' '
 | 
						|
    - __mh_execute_header
 | 
						|
    - _a
 | 
						|
    - _b
 | 
						|
    - _foo
 | 
						|
    - _main
 | 
						|
    - dyld_stub_binder
 | 
						|
...
 | 
						|
 | 
						|
# CHECK: FileType: Executable (0x2)
 | 
						|
# CHECK: Name: __text
 | 
						|
# CHECK: Name: __unwind_info
 | 
						|
# CHECK: Name: __data
 | 
						|
# CHECK: Name: __common
 |