OSDN Git Service

[llvm-objcopy] Add --strip-unneeded option
[android-x86/external-llvm.git] / test / tools / llvm-objcopy / strip-unneeded.test
1 # RUN: yaml2obj %s > %t
2 # RUN: llvm-objcopy --strip-unneeded %t %t2
3 # RUN: llvm-readobj -symbols %t2 | FileCheck %s
4
5 !ELF
6 FileHeader:
7   Class:           ELFCLASS64
8   Data:            ELFDATA2LSB
9   Type:            ET_REL
10   Machine:         EM_X86_64
11 Sections:
12   - Name:            .text
13     Type:            SHT_PROGBITS
14     Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
15     Address:         0x1000
16     AddressAlign:    0x0000000000000010
17     Size:            64
18   - Name:            .group
19     Type:            SHT_GROUP
20     Link:            .symtab
21     AddressAlign:    0x0000000000000004
22     Info:            barfoo
23     Members:
24       - SectionOrType:   GRP_COMDAT
25       - SectionOrType:   .text
26   - Name:            .rel.text
27     Type:            SHT_REL
28     Link:            .symtab
29     Info:            .text
30     Relocations:
31       - Offset: 0x1000
32         Symbol: foo
33         Type:   R_X86_64_PC32
34 Symbols:
35   Local:
36     - Name:     foo
37       Type:     STT_FUNC
38       Section:  .text
39       Value:    0x1000
40       Size:     8
41     - Name:     bar
42       Type:     STT_FUNC
43       Size:     8
44       Section:  .text
45       Value:    0x1008
46     - Name:     barfoo
47       Type:     STT_FUNC
48       Size:     8
49       Section:  .text
50       Value:    0x1010
51     - Name:     fileSymbol
52       Type:     STT_FILE
53     - Name:     sectionSymbol
54       Type:     STT_SECTION
55   Weak:
56     - Name:     baz
57       Type:     STT_FUNC
58       Size:     8
59       Section:  .text
60       Value:    0x1018
61     - Name:     foobaz
62       Type:     STT_FUNC
63   Global:
64     - Name:     foobar
65       Type:     STT_FUNC
66     - Name:     barbaz
67       Type:     STT_FUNC
68       Size:     8
69       Section:  .text
70       Value:    0x1020
71
72 #CHECK: Symbols [
73 #CHECK-NEXT:  Symbol {
74 #CHECK-NEXT:    Name:
75 #CHECK-NEXT:    Value: 0x0
76 #CHECK-NEXT:    Size: 0
77 #CHECK-NEXT:    Binding: Local
78 #CHECK-NEXT:    Type: None
79 #CHECK-NEXT:    Other: 0
80 #CHECK-NEXT:    Section: Undefined
81 #CHECK-NEXT:  }
82 #CHECK-NEXT:  Symbol {
83 #CHECK-NEXT:    Name: foo
84 #CHECK-NEXT:    Value: 0x1000
85 #CHECK-NEXT:    Size: 8
86 #CHECK-NEXT:    Binding: Local
87 #CHECK-NEXT:    Type: Function
88 #CHECK-NEXT:    Other: 0
89 #CHECK-NEXT:    Section: .text
90 #CHECK-NEXT:  }
91 #CHECK-NEXT:  Symbol {
92 #CHECK-NEXT:    Name: barfoo
93 #CHECK-NEXT:    Value: 0x1010
94 #CHECK-NEXT:    Size: 8
95 #CHECK-NEXT:    Binding: Local
96 #CHECK-NEXT:    Type: Function
97 #CHECK-NEXT:    Other: 0
98 #CHECK-NEXT:    Section: .text
99 #CHECK-NEXT:  }
100 #CHECK-NEXT:  Symbol {
101 #CHECK-NEXT:    Name: fileSymbol
102 #CHECK-NEXT:    Value: 0x0
103 #CHECK-NEXT:    Size: 0
104 #CHECK-NEXT:    Binding: Local
105 #CHECK-NEXT:    Type: File
106 #CHECK-NEXT:    Other: 0
107 #CHECK-NEXT:    Section: Undefined
108 #CHECK-NEXT:  }
109 #CHECK-NEXT:  Symbol {
110 #CHECK-NEXT:    Name: sectionSymbol
111 #CHECK-NEXT:    Value: 0x0
112 #CHECK-NEXT:    Size: 0
113 #CHECK-NEXT:    Binding: Local
114 #CHECK-NEXT:    Type: Section
115 #CHECK-NEXT:    Other: 0
116 #CHECK-NEXT:    Section: Undefined
117 #CHECK-NEXT:  }
118 #CHECK-NEXT:  Symbol {
119 #CHECK-NEXT:    Name: barbaz
120 #CHECK-NEXT:    Value: 0x1020
121 #CHECK-NEXT:    Size: 8
122 #CHECK-NEXT:    Binding: Global
123 #CHECK-NEXT:    Type: Function
124 #CHECK-NEXT:    Other: 0
125 #CHECK-NEXT:    Section: .text
126 #CHECK-NEXT:  }
127 #CHECK-NEXT:  Symbol {
128 #CHECK-NEXT:    Name: baz
129 #CHECK-NEXT:    Value: 0x1018
130 #CHECK-NEXT:    Size: 8
131 #CHECK-NEXT:    Binding: Weak
132 #CHECK-NEXT:    Type: Function
133 #CHECK-NEXT:    Other: 0
134 #CHECK-NEXT:    Section: .text
135 #CHECK-NEXT:  }
136 #CHECK-NEXT:]