1# RUN: yaml2obj %s -o %t
2# RUN: cp %t %t1
3
4# RUN: llvm-objcopy -R .test2 %t %t2
5# RUN: llvm-readobj --file-headers --sections %t2 | FileCheck %s
6
7# Verify that the first run of llvm-objcopy
8# has not modified the input binary.
9# RUN: cmp %t %t1
10
11# RUN: llvm-objcopy --remove-section=.test2 %t1 %t3
12# RUN: cmp %t2 %t3
13
14# RUN: llvm-objcopy --regex --remove-section='.test[0-9]+' %t %t4
15# RUN: llvm-readobj --file-headers --sections %t4 | FileCheck %s --check-prefix=REGEX
16
17!ELF
18FileHeader:
19  Class:           ELFCLASS64
20  Data:            ELFDATA2LSB
21  Type:            ET_REL
22  Machine:         EM_X86_64
23Sections:
24  - Name:            .test1
25    Type:            SHT_PROGBITS
26    Flags:           [ ]
27  - Name:            .test2
28    Type:            SHT_PROGBITS
29    Flags:           [ ]
30  - Name:            .test3
31    Type:            SHT_PROGBITS
32    Flags:           [ ]
33Symbols: []
34
35# CHECK: SectionHeaderCount: 6
36
37# CHECK: Sections [
38# CHECK:   Section {
39# CHECK:     Index: 0
40# CHECK:     Name:  (0)
41# CHECK:     Type: SHT_NULL (0x0)
42# CHECK:     Flags [ (0x0)
43# CHECK:     ]
44# CHECK:     Address: 0x0
45# CHECK:     Offset:
46# CHECK:     Size:
47# CHECK:     Link: 0
48# CHECK:     Info: 0
49# CHECK:     AddressAlignment: 0
50# CHECK:     EntrySize: 0
51# CHECK:   }
52# CHECK:   Section {
53# CHECK:     Index: 1
54# CHECK:     Name: .test1
55# CHECK:     Type: SHT_PROGBITS (0x1)
56# CHECK:     Flags [ (0x0)
57# CHECK:     ]
58# CHECK:     Address: 0x0
59# CHECK:     Offset:
60# CHECK:     Size:
61# CHECK:     Link: 0
62# CHECK:     Info: 0
63# CHECK:     AddressAlignment: 0
64# CHECK:     EntrySize: 0
65# CHECK:   }
66# CHECK:   Section {
67# CHECK:     Index: 2
68# CHECK:     Name: .test3
69# CHECK:     Type: SHT_PROGBITS (0x1)
70# CHECK:     Flags [ (0x0)
71# CHECK:     ]
72# CHECK:     Address: 0x0
73# CHECK:     Offset:
74# CHECK:     Size:
75# CHECK:     Link: 0
76# CHECK:     Info: 0
77# CHECK:     AddressAlignment: 0
78# CHECK:     EntrySize: 0
79# CHECK:   }
80# CHECK:   Section {
81# CHECK:     Index: 3
82# CHECK:     Name: .symtab
83# CHECK:     Type: SHT_SYMTAB (0x2)
84# CHECK:     Flags [ (0x0)
85# CHECK:     ]
86# CHECK:     Address: 0x0
87# CHECK:     Offset:
88# CHECK:     Size:
89# CHECK:     Link: 4
90# CHECK:     Info: 1
91# CHECK:     AddressAlignment: 8
92# CHECK:     EntrySize: 24
93# CHECK:   }
94# CHECK:   Section {
95# CHECK:     Index: 4
96# CHECK:     Name: .strtab
97# CHECK:     Type: SHT_STRTAB (0x3)
98# CHECK:     Flags [ (0x0)
99# CHECK:     ]
100# CHECK:     Address: 0x0
101# CHECK:     Offset:
102# CHECK:     Size:
103# CHECK:     Link: 0
104# CHECK:     Info: 0
105# CHECK:     AddressAlignment: 1
106# CHECK:     EntrySize: 0
107# CHECK:   }
108# CHECK:   Section {
109# CHECK:     Index: 5
110# CHECK:     Name: .shstrtab
111# CHECK:     Type: SHT_STRTAB (0x3)
112# CHECK:     Flags [ (0x0)
113# CHECK:     ]
114# CHECK:     Address: 0x0
115# CHECK:     Offset:
116# CHECK:     Size:
117# CHECK:     Link: 0
118# CHECK:     Info: 0
119# CHECK:     AddressAlignment: 1
120# CHECK:     EntrySize: 0
121# CHECK:   }
122# CHECK: ]
123
124# REGEX: SectionHeaderCount: 4
125# REGEX: Sections [
126# REGEX-NOT: test
127