[lit] Remove LitTestCase
[llvm-complete.git] / test / tools / llvm-objcopy / ELF / strip-unneeded.test
blob60d83884715358608f30b8e9355b51a55a438b70
1 # RUN: yaml2obj %s > %t
2 # RUN: cp %t %t1
3 # RUN: llvm-objcopy --strip-unneeded %t %t2
4 # Verify that llvm-objcopy has not modified the input.
5 # RUN: cmp %t %t1
6 # RUN: llvm-readobj --symbols %t2 | FileCheck %s
8 # RUN: llvm-objcopy --strip-unneeded-symbol=bar \
9 # RUN:              %t %t3
10 # RUN: llvm-readobj --symbols %t3 | FileCheck %s --check-prefixes=STRIP-BAR,REMAIN
12 # RUN: llvm-objcopy --regex --strip-unneeded-symbol='.*' %t %t4
13 # RUN: cmp %t2 %t4
15 # RUN: echo " bar # bar " > %t.list.txt
16 # RUN: echo "foobar" >> %t.list.txt
17 # RUN: echo "foobaz" >> %t.list.txt
18 # RUN: echo " # comment " >> %t.list.txt
19 # RUN: llvm-objcopy --strip-unneeded-symbols %t.list.txt %t %t5
20 # RUN: cmp %t2 %t5
22 # RUN: echo " .* # * - remove all " > %t.list2.txt
23 # RUN: llvm-objcopy --regex --strip-unneeded-symbols %t.list2.txt %t %t6
24 # RUN: cmp %t2 %t6
26 # Verify that llvm-strip modifies the symbol table the same way.
27 # RUN: llvm-strip --strip-unneeded %t
28 # RUN: cmp %t %t2
30 !ELF
31 FileHeader:
32   Class:           ELFCLASS64
33   Data:            ELFDATA2LSB
34   Type:            ET_REL
35   Machine:         EM_X86_64
36 Sections:
37   - Name:            .text
38     Type:            SHT_PROGBITS
39     Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
40     Address:         0x1000
41     AddressAlign:    0x0000000000000010
42     Size:            64
43   - Name:            .group
44     Type:            SHT_GROUP
45     Link:            .symtab
46     AddressAlign:    0x0000000000000004
47     Info:            barfoo
48     Members:
49       - SectionOrType:   GRP_COMDAT
50       - SectionOrType:   .text
51   - Name:            .rel.text
52     Type:            SHT_REL
53     Link:            .symtab
54     Info:            .text
55     Relocations:
56       - Offset: 0x1000
57         Symbol: foo
58         Type:   R_X86_64_PC32
59 Symbols:
60   Local:
61     - Name:     foo
62       Type:     STT_FUNC
63       Section:  .text
64       Value:    0x1000
65       Size:     8
66     - Name:     bar
67       Type:     STT_FUNC
68       Size:     8
69       Section:  .text
70       Value:    0x1008
71     - Name:     barfoo
72       Type:     STT_FUNC
73       Size:     8
74       Section:  .text
75       Value:    0x1010
76     - Name:     fileSymbol
77       Type:     STT_FILE
78     - Name:     sectionSymbol
79       Type:     STT_SECTION
80   Weak:
81     - Name:     baz
82       Type:     STT_FUNC
83       Size:     8
84       Section:  .text
85       Value:    0x1018
86     - Name:     foobaz
87       Type:     STT_FUNC
88   Global:
89     - Name:     foobar
90       Type:     STT_FUNC
91     - Name:     barbaz
92       Type:     STT_FUNC
93       Size:     8
94       Section:  .text
95       Value:    0x1020
97 #CHECK: Symbols [
98 #CHECK-NEXT:  Symbol {
99 #CHECK-NEXT:    Name:
100 #CHECK-NEXT:    Value: 0x0
101 #CHECK-NEXT:    Size: 0
102 #CHECK-NEXT:    Binding: Local
103 #CHECK-NEXT:    Type: None
104 #CHECK-NEXT:    Other: 0
105 #CHECK-NEXT:    Section: Undefined
106 #CHECK-NEXT:  }
107 #CHECK-NEXT:  Symbol {
108 #CHECK-NEXT:    Name: foo
109 #CHECK-NEXT:    Value: 0x1000
110 #CHECK-NEXT:    Size: 8
111 #CHECK-NEXT:    Binding: Local
112 #CHECK-NEXT:    Type: Function
113 #CHECK-NEXT:    Other: 0
114 #CHECK-NEXT:    Section: .text
115 #CHECK-NEXT:  }
116 #CHECK-NEXT:  Symbol {
117 #CHECK-NEXT:    Name: barfoo
118 #CHECK-NEXT:    Value: 0x1010
119 #CHECK-NEXT:    Size: 8
120 #CHECK-NEXT:    Binding: Local
121 #CHECK-NEXT:    Type: Function
122 #CHECK-NEXT:    Other: 0
123 #CHECK-NEXT:    Section: .text
124 #CHECK-NEXT:  }
125 #CHECK-NEXT:  Symbol {
126 #CHECK-NEXT:    Name: fileSymbol
127 #CHECK-NEXT:    Value: 0x0
128 #CHECK-NEXT:    Size: 0
129 #CHECK-NEXT:    Binding: Local
130 #CHECK-NEXT:    Type: File
131 #CHECK-NEXT:    Other: 0
132 #CHECK-NEXT:    Section: Undefined
133 #CHECK-NEXT:  }
134 #CHECK-NEXT:  Symbol {
135 #CHECK-NEXT:    Name: sectionSymbol
136 #CHECK-NEXT:    Value: 0x0
137 #CHECK-NEXT:    Size: 0
138 #CHECK-NEXT:    Binding: Local
139 #CHECK-NEXT:    Type: Section
140 #CHECK-NEXT:    Other: 0
141 #CHECK-NEXT:    Section: Undefined
142 #CHECK-NEXT:  }
143 #CHECK-NEXT:  Symbol {
144 #CHECK-NEXT:    Name: barbaz
145 #CHECK-NEXT:    Value: 0x1020
146 #CHECK-NEXT:    Size: 8
147 #CHECK-NEXT:    Binding: Global
148 #CHECK-NEXT:    Type: Function
149 #CHECK-NEXT:    Other: 0
150 #CHECK-NEXT:    Section: .text
151 #CHECK-NEXT:  }
152 #CHECK-NEXT:  Symbol {
153 #CHECK-NEXT:    Name: baz
154 #CHECK-NEXT:    Value: 0x1018
155 #CHECK-NEXT:    Size: 8
156 #CHECK-NEXT:    Binding: Weak
157 #CHECK-NEXT:    Type: Function
158 #CHECK-NEXT:    Other: 0
159 #CHECK-NEXT:    Section: .text
160 #CHECK-NEXT:  }
161 #CHECK-NEXT:]
163 #STRIP-BAR-NOT: Name: bar ({{.*}})
164 #REMAIN: Name: foobar
165 #REMAIN: Name: foobaz