1# RUN: yaml2obj %s -o %t
2# RUN: cp %t %t1
3# RUN: llvm-objcopy --discard-locals %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
7
8# RUN: llvm-objcopy -X %t %t3
9# Verify that llvm-objcopy has not modified the input.
10# RUN: cmp %t %t1
11# RUN: cmp %t2 %t3
12
13# Verify that llvm-strip modifies the symbol table the same way.
14
15# RUN: cp %t %t4
16# RUN: llvm-strip --discard-locals %t4
17# RUN: cmp %t2 %t4
18
19# RUN: cp %t %t5
20# RUN: llvm-strip -X %t5
21# RUN: cmp %t2 %t5
22
23!ELF
24FileHeader:
25  Class:           ELFCLASS64
26  Data:            ELFDATA2LSB
27  Type:            ET_REL
28  Machine:         EM_X86_64
29Sections:
30  - Name:            .text
31    Type:            SHT_PROGBITS
32  - Name:            .LLVM.Custom.Section
33    Type:            SHT_PROGBITS
34Symbols:
35  - Name:     Local
36    Type:     STT_FUNC
37    Section:  .text
38  - Name:     .L.LocalSection
39    Type:     STT_SECTION
40    Section:  .text
41  - Type:     STT_SECTION
42    Section:  .LLVM.Custom.Section
43  - Name:     .L.LocalFile
44    Type:     STT_FILE
45  - Name:     .L.str
46    Type:     STT_OBJECT
47    Section:  .text
48  - Name:     .L.undefined
49  - Name:     .L.abs
50    Index:    SHN_ABS
51  - Name:     .L.Global
52    Type:     STT_FUNC
53    Section:  .text
54    Binding:  STB_GLOBAL
55
56# CHECK:      Symbols [
57# CHECK-NEXT:   Symbol {
58# CHECK-NEXT:     Name:
59# CHECK-NEXT:     Value: 0x0
60# CHECK-NEXT:     Size: 0
61# CHECK-NEXT:     Binding: Local
62# CHECK-NEXT:     Type: None
63# CHECK-NEXT:     Other: 0
64# CHECK-NEXT:     Section: Undefined
65# CHECK-NEXT:   }
66# CHECK-NEXT:   Symbol {
67# CHECK-NEXT:     Name: Local
68# CHECK-NEXT:     Value:
69# CHECK-NEXT:     Size:
70# CHECK-NEXT:     Binding: Local
71# CHECK-NEXT:     Type: Function
72# CHECK-NEXT:     Other:
73# CHECK-NEXT:     Section: .text
74# CHECK-NEXT:   }
75# CHECK-NEXT:   Symbol {
76# CHECK-NEXT:     Name: .L.LocalSection
77# CHECK-NEXT:     Value:
78# CHECK-NEXT:     Size:
79# CHECK-NEXT:     Binding: Local
80# CHECK-NEXT:     Type: Section
81# CHECK-NEXT:     Other:
82# CHECK-NEXT:     Section: .text
83# CHECK-NEXT:   }
84# CHECK-NEXT:   Symbol {
85# CHECK-NEXT:     Name:
86# CHECK-NEXT:     Value:
87# CHECK-NEXT:     Size:
88# CHECK-NEXT:     Binding: Local
89# CHECK-NEXT:     Type: Section
90# CHECK-NEXT:     Other:
91# CHECK-NEXT:     Section: .LLVM.Custom.Section
92# CHECK-NEXT:   }
93# CHECK-NEXT:   Symbol {
94# CHECK-NEXT:     Name: .L.LocalFile
95# CHECK-NEXT:     Value:
96# CHECK-NEXT:     Size:
97# CHECK-NEXT:     Binding: Local
98# CHECK-NEXT:     Type: File
99# CHECK-NEXT:     Other:
100# CHECK-NEXT:     Section: Undefined
101# CHECK-NEXT:   }
102# CHECK-NEXT:   Symbol {
103# CHECK-NEXT:     Name: .L.undefined
104# CHECK-NEXT:     Value:
105# CHECK-NEXT:     Size:
106# CHECK-NEXT:     Binding: Local
107# CHECK-NEXT:     Type: None
108# CHECK-NEXT:     Other:
109# CHECK-NEXT:     Section: Undefined
110# CHECK-NEXT:   }
111# CHECK-NEXT:   Symbol {
112# CHECK-NEXT:     Name: .L.Global
113# CHECK-NEXT:     Value:
114# CHECK-NEXT:     Size:
115# CHECK-NEXT:     Binding: Global
116# CHECK-NEXT:     Type: Function
117# CHECK-NEXT:     Other:
118# CHECK-NEXT:     Section: .text
119# CHECK-NEXT:   }
120# CHECK-NEXT: ]
121