1*f34fdbcfSAlexander Shaposhnikov# RUN: yaml2obj %s -o %t
2*f34fdbcfSAlexander Shaposhnikov# RUN: not llvm-objcopy --remove-section __DATA,C %t /dev/null 2>&1 | FileCheck %s
3*f34fdbcfSAlexander Shaposhnikov
4*f34fdbcfSAlexander Shaposhnikov# CHECK: symbol '_a' defined in section with index '2' cannot be removed because it is referenced by a relocation in section '__TEXT,__text'
5*f34fdbcfSAlexander Shaposhnikov
6*f34fdbcfSAlexander Shaposhnikov## The binary used in this test was built as follows:
7*f34fdbcfSAlexander Shaposhnikov## main.c:
8*f34fdbcfSAlexander Shaposhnikov##   __attribute__((section("__DATA,C"))) int a = 2;
9*f34fdbcfSAlexander Shaposhnikov##   int f() { return a; }
10*f34fdbcfSAlexander Shaposhnikov## build command:
11*f34fdbcfSAlexander Shaposhnikov## clang -fno-exceptions -fno-unwind-tables -c main.c -o main.o
12*f34fdbcfSAlexander Shaposhnikov
13*f34fdbcfSAlexander Shaposhnikov--- !mach-o
14*f34fdbcfSAlexander ShaposhnikovFileHeader:
15*f34fdbcfSAlexander Shaposhnikov  magic:           0xFEEDFACF
16*f34fdbcfSAlexander Shaposhnikov  cputype:         0x01000007
17*f34fdbcfSAlexander Shaposhnikov  cpusubtype:      0x00000003
18*f34fdbcfSAlexander Shaposhnikov  filetype:        0x00000001
19*f34fdbcfSAlexander Shaposhnikov  ncmds:           4
20*f34fdbcfSAlexander Shaposhnikov  sizeofcmds:      360
21*f34fdbcfSAlexander Shaposhnikov  flags:           0x00002000
22*f34fdbcfSAlexander Shaposhnikov  reserved:        0x00000000
23*f34fdbcfSAlexander ShaposhnikovLoadCommands:
24*f34fdbcfSAlexander Shaposhnikov  - cmd:             LC_SEGMENT_64
25*f34fdbcfSAlexander Shaposhnikov    cmdsize:         232
26*f34fdbcfSAlexander Shaposhnikov    segname:         ''
27*f34fdbcfSAlexander Shaposhnikov    vmaddr:          0
28*f34fdbcfSAlexander Shaposhnikov    vmsize:          16
29*f34fdbcfSAlexander Shaposhnikov    fileoff:         392
30*f34fdbcfSAlexander Shaposhnikov    filesize:        16
31*f34fdbcfSAlexander Shaposhnikov    maxprot:         7
32*f34fdbcfSAlexander Shaposhnikov    initprot:        7
33*f34fdbcfSAlexander Shaposhnikov    nsects:          2
34*f34fdbcfSAlexander Shaposhnikov    flags:           0
35*f34fdbcfSAlexander Shaposhnikov    Sections:
36*f34fdbcfSAlexander Shaposhnikov      - sectname:        __text
37*f34fdbcfSAlexander Shaposhnikov        segname:         __TEXT
38*f34fdbcfSAlexander Shaposhnikov        addr:            0x0000000000000000
39*f34fdbcfSAlexander Shaposhnikov        size:            12
40*f34fdbcfSAlexander Shaposhnikov        offset:          0x00000188
41*f34fdbcfSAlexander Shaposhnikov        align:           4
42*f34fdbcfSAlexander Shaposhnikov        reloff:          0x00000198
43*f34fdbcfSAlexander Shaposhnikov        nreloc:          1
44*f34fdbcfSAlexander Shaposhnikov        flags:           0x80000400
45*f34fdbcfSAlexander Shaposhnikov        reserved1:       0x00000000
46*f34fdbcfSAlexander Shaposhnikov        reserved2:       0x00000000
47*f34fdbcfSAlexander Shaposhnikov        reserved3:       0x00000000
48*f34fdbcfSAlexander Shaposhnikov        content:         554889E58B05000000005DC3
49*f34fdbcfSAlexander Shaposhnikov        relocations:
50*f34fdbcfSAlexander Shaposhnikov          - address:         0x00000006
51*f34fdbcfSAlexander Shaposhnikov            symbolnum:       0
52*f34fdbcfSAlexander Shaposhnikov            pcrel:           true
53*f34fdbcfSAlexander Shaposhnikov            length:          2
54*f34fdbcfSAlexander Shaposhnikov            extern:          true
55*f34fdbcfSAlexander Shaposhnikov            type:            1
56*f34fdbcfSAlexander Shaposhnikov            scattered:       false
57*f34fdbcfSAlexander Shaposhnikov            value:           0
58*f34fdbcfSAlexander Shaposhnikov      - sectname:        C
59*f34fdbcfSAlexander Shaposhnikov        segname:         __DATA
60*f34fdbcfSAlexander Shaposhnikov        addr:            0x000000000000000C
61*f34fdbcfSAlexander Shaposhnikov        size:            4
62*f34fdbcfSAlexander Shaposhnikov        offset:          0x00000194
63*f34fdbcfSAlexander Shaposhnikov        align:           2
64*f34fdbcfSAlexander Shaposhnikov        reloff:          0x00000000
65*f34fdbcfSAlexander Shaposhnikov        nreloc:          0
66*f34fdbcfSAlexander Shaposhnikov        flags:           0x00000000
67*f34fdbcfSAlexander Shaposhnikov        reserved1:       0x00000000
68*f34fdbcfSAlexander Shaposhnikov        reserved2:       0x00000000
69*f34fdbcfSAlexander Shaposhnikov        reserved3:       0x00000000
70*f34fdbcfSAlexander Shaposhnikov        content:         '02000000'
71*f34fdbcfSAlexander Shaposhnikov  - cmd:             LC_BUILD_VERSION
72*f34fdbcfSAlexander Shaposhnikov    cmdsize:         24
73*f34fdbcfSAlexander Shaposhnikov    platform:        1
74*f34fdbcfSAlexander Shaposhnikov    minos:           658944
75*f34fdbcfSAlexander Shaposhnikov    sdk:             658944
76*f34fdbcfSAlexander Shaposhnikov    ntools:          0
77*f34fdbcfSAlexander Shaposhnikov  - cmd:             LC_SYMTAB
78*f34fdbcfSAlexander Shaposhnikov    cmdsize:         24
79*f34fdbcfSAlexander Shaposhnikov    symoff:          416
80*f34fdbcfSAlexander Shaposhnikov    nsyms:           2
81*f34fdbcfSAlexander Shaposhnikov    stroff:          448
82*f34fdbcfSAlexander Shaposhnikov    strsize:         8
83*f34fdbcfSAlexander Shaposhnikov  - cmd:             LC_DYSYMTAB
84*f34fdbcfSAlexander Shaposhnikov    cmdsize:         80
85*f34fdbcfSAlexander Shaposhnikov    ilocalsym:       0
86*f34fdbcfSAlexander Shaposhnikov    nlocalsym:       0
87*f34fdbcfSAlexander Shaposhnikov    iextdefsym:      0
88*f34fdbcfSAlexander Shaposhnikov    nextdefsym:      2
89*f34fdbcfSAlexander Shaposhnikov    iundefsym:       2
90*f34fdbcfSAlexander Shaposhnikov    nundefsym:       0
91*f34fdbcfSAlexander Shaposhnikov    tocoff:          0
92*f34fdbcfSAlexander Shaposhnikov    ntoc:            0
93*f34fdbcfSAlexander Shaposhnikov    modtaboff:       0
94*f34fdbcfSAlexander Shaposhnikov    nmodtab:         0
95*f34fdbcfSAlexander Shaposhnikov    extrefsymoff:    0
96*f34fdbcfSAlexander Shaposhnikov    nextrefsyms:     0
97*f34fdbcfSAlexander Shaposhnikov    indirectsymoff:  0
98*f34fdbcfSAlexander Shaposhnikov    nindirectsyms:   0
99*f34fdbcfSAlexander Shaposhnikov    extreloff:       0
100*f34fdbcfSAlexander Shaposhnikov    nextrel:         0
101*f34fdbcfSAlexander Shaposhnikov    locreloff:       0
102*f34fdbcfSAlexander Shaposhnikov    nlocrel:         0
103*f34fdbcfSAlexander ShaposhnikovLinkEditData:
104*f34fdbcfSAlexander Shaposhnikov  NameList:
105*f34fdbcfSAlexander Shaposhnikov    - n_strx:          4
106*f34fdbcfSAlexander Shaposhnikov      n_type:          0x0F
107*f34fdbcfSAlexander Shaposhnikov      n_sect:          2
108*f34fdbcfSAlexander Shaposhnikov      n_desc:          0
109*f34fdbcfSAlexander Shaposhnikov      n_value:         12
110*f34fdbcfSAlexander Shaposhnikov    - n_strx:          1
111*f34fdbcfSAlexander Shaposhnikov      n_type:          0x0F
112*f34fdbcfSAlexander Shaposhnikov      n_sect:          1
113*f34fdbcfSAlexander Shaposhnikov      n_desc:          0
114*f34fdbcfSAlexander Shaposhnikov      n_value:         0
115*f34fdbcfSAlexander Shaposhnikov  StringTable:
116*f34fdbcfSAlexander Shaposhnikov    - ''
117*f34fdbcfSAlexander Shaposhnikov    - _f
118*f34fdbcfSAlexander Shaposhnikov    - _a
119*f34fdbcfSAlexander Shaposhnikov    - ''
120*f34fdbcfSAlexander Shaposhnikov...
121