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