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
  
     | 
    
      ## Show that llvm-objcopy adds a new section into a 32-bit object file if
## --add-section is given.
# RUN: yaml2obj %s -o %t
# RUN: echo -n abcdefg > %t.data
## Case 1: Add a new section into an existing segment.
# RUN: llvm-objcopy --add-section __TEXT,__bar=%t.data %t %t.out1
# RUN: llvm-readobj --sections --section-data %t.out1 \
# RUN:   | FileCheck %s --check-prefixes=COMMON,CASE1
## Case 2: Add a new section into a nonexistent segment.
# RUN: llvm-objcopy --add-section __FOO,__bar=%t.data %t %t.out2
# RUN: llvm-readobj --sections --section-data %t.out2 \
# RUN:   | FileCheck %s --check-prefixes=COMMON,CASE2
## Case 3: Add a new section into an existing segment using /dev/null as an input.
# RUN: llvm-objcopy --add-section __TEXT,__bar=/dev/null %t %t.out3
# RUN: llvm-readobj --sections --section-data %t.out3 \
# RUN:   | FileCheck %s --check-prefixes=COMMON,CASE3
--- !mach-o
FileHeader:
  magic:           0xFEEDFACE
  cputype:         0x00000007
  cpusubtype:      0x00000003
  filetype:        0x00000001
  ncmds:           1
  sizeofcmds:      124
  flags:           0x00002000
LoadCommands:
  - cmd:             LC_SEGMENT
    cmdsize:         124
    segname:         __TEXT
    vmaddr:          0
    vmsize:          4
    fileoff:         184
    filesize:        4
    maxprot:         7
    initprot:        7
    nsects:          1
    flags:           0
    Sections:
      - sectname:        __text
        segname:         __TEXT
        addr:            0x0000000000000000
        content:         'AABBCCDD'
        size:            4
        offset:          184
        align:           0
        reloff:          0x00000000
        nreloc:          0
        flags:           0x80000400
        reserved1:       0x00000000
        reserved2:       0x00000000
        reserved3:       0x00000000
# COMMON:         Index: 0
# COMMON-NEXT:    Name: __text (5F 5F 74 65 78 74 00 00 00 00 00 00 00 00 00 00)
# COMMON-NEXT:    Segment: __TEXT (5F 5F 54 45 58 54 00 00 00 00 00 00 00 00 00 00)
# COMMON-NEXT:    Address: 0x0
# COMMON-NEXT:    Size: 0x4
# COMMON-NEXT:    Offset:
# COMMON-NEXT:    Alignment: 0
# COMMON-NEXT:    RelocationOffset: 0x0
# COMMON-NEXT:    RelocationCount: 0
# COMMON-NEXT:    Type: Regular (0x0)
# COMMON-NEXT:    Attributes [ (0x800004)
# COMMON-NEXT:      PureInstructions (0x800000)
# COMMON-NEXT:      SomeInstructions (0x4)
# COMMON-NEXT:    ]
# COMMON-NEXT:    Reserved1: 0x0
# COMMON-NEXT:    Reserved2: 0x0
# COMMON-NEXT:    SectionData (
# COMMON-NEXT:      0000: AABBCCDD                             |....|
# COMMON-NEXT:    )
# COMMON:         Index: 1
# COMMON-NEXT:    Name: __bar (5F 5F 62 61 72 00 00 00 00 00 00 00 00 00 00 00)
# CASE1-NEXT:     Segment: __TEXT (5F 5F 54 45 58 54 00 00 00 00 00 00 00 00 00 00)
# CASE1-NEXT:     Address: 0x4
# CASE1-NEXT:     Size: 0x7
# CASE1-NEXT:     Offset: 224
# CASE2-NEXT:     Segment: __FOO (5F 5F 46 4F 4F 00 00 00 00 00 00 00 00 00 00 00)
# CASE2-NEXT:     Address: 0x98
# CASE2-NEXT:     Size: 0x7
# CASE2-NEXT:     Offset: 280
# CASE3-NEXT:     Segment: __TEXT (5F 5F 54 45 58 54 00 00 00 00 00 00 00 00 00 00)
# CASE3-NEXT:     Address: 0x4
# CASE3-NEXT:     Size: 0x0
# CASE3-NEXT:     Offset: 224
# COMMON-NEXT:    Alignment: 0
# COMMON-NEXT:    RelocationOffset: 0x0
# COMMON-NEXT:    RelocationCount: 0
# COMMON-NEXT:    Type: Regular (0x0)
# COMMON-NEXT:    Attributes [ (0x0)
# COMMON-NEXT:    ]
# COMMON-NEXT:    Reserved1: 0x0
# COMMON-NEXT:    Reserved2: 0x0
# CASE1-NEXT:     SectionData (
# CASE1-NEXT:       0000: 61626364 656667                      |abcdefg|
# CASE1-NEXT:     )
# CASE2-NEXT:     SectionData (
# CASE2-NEXT:       0000: 61626364 656667                      |abcdefg|
# CASE2-NEXT:     )
# CASE3-NEXT:     SectionData (
# CASE3-NEXT:     )
 
     |