1 // RUN
: llvm-mc
-filetype
=obj
-triple x86_64-pc-linux-gnu
%s
-o
- | llvm-readobj
--symbols
- | FileCheck
%s
3 // This tests that types are propagated from symbols to their aliases. Our
4 // behavior is
a bit different than gas. If the type of
a symbol changes
,
5 // gas will update the type of the aliases only if those aliases were declare
6 // at
a point in the file where the aliased symbol was already define.
8 // The lines marked with GAS illustrate this difference.
13 .type sym02, @function
18 .type sym03, @function
30 .type sym10, @function
34 // CHECK-NEXT
: Value
: 0x0
35 // CHECK-NEXT
: Size
: 0
36 // CHECK-NEXT
: Binding
: Local
(0x0)
37 // CHECK-NEXT
: Type
: Object
(0x1)
38 // CHECK-NEXT
: Other
: 0
39 // CHECK-NEXT
: Section
: .text
41 // CHECK-NEXT
: Symbol
{
42 // CHECK-NEXT
: Name
: sym02
43 // CHECK-NEXT
: Value
: 0x0
44 // CHECK-NEXT
: Size
: 0
45 // CHECK-NEXT
: Binding
: Local
(0x0)
46 // CHECK-NEXT
: Type
: Function
(0x2)
47 // CHECK-NEXT
: Other
: 0
48 // CHECK-NEXT
: Section
: .text
50 // CHECK-NEXT
: Symbol
{
51 // CHECK-NEXT
: Name
: sym03
52 // CHECK-NEXT
: Value
: 0x0
53 // CHECK-NEXT
: Size
: 0
54 // CHECK-NEXT
: Binding
: Local
(0x0)
55 // CHECK-NEXT
: Type
: Function
(0x2)
56 // CHECK-NEXT
: Other
: 0
57 // CHECK-NEXT
: Section
: .text
59 // CHECK-NEXT
: Symbol
{
60 // CHECK-NEXT
: Name
: sym04
61 // CHECK-NEXT
: Value
: 0x0
62 // CHECK-NEXT
: Size
: 0
63 // CHECK-NEXT
: Binding
: Local
(0x0)
64 // CHECK-NEXT
: Type
: Object
(0x1)
65 // CHECK-NEXT
: Other
: 0
66 // CHECK-NEXT
: Section
: .text
68 // CHECK-NEXT
: Symbol
{
69 // CHECK-NEXT
: Name
: sym05
70 // CHECK-NEXT
: Value
: 0x0
71 // CHECK-NEXT
: Size
: 0
72 // CHECK-NEXT
: Binding
: Local
(0x0)
74 // GAS
: Type
: Function
(0x2)
75 // CHECK-NEXT
: Type
: Object
(0x1)
77 // CHECK-NEXT
: Other
: 0
78 // CHECK-NEXT
: Section
: .text
80 // CHECK-NEXT
: Symbol
{
81 // CHECK-NEXT
: Name
: sym06
82 // CHECK-NEXT
: Value
: 0x0
83 // CHECK-NEXT
: Size
: 0
84 // CHECK-NEXT
: Binding
: Local
(0x0)
85 // CHECK-NEXT
: Type
: None
(0x0)
86 // CHECK-NEXT
: Other
: 0
87 // CHECK-NEXT
: Section
: Absolute
(0xFFF1)
89 // CHECK-NEXT
: Symbol
{
90 // CHECK-NEXT
: Name
: sym07
91 // CHECK-NEXT
: Value
: 0x0
92 // CHECK-NEXT
: Size
: 0
93 // CHECK-NEXT
: Binding
: Local
(0x0)
94 // CHECK-NEXT
: Type
: None
(0x0)
95 // CHECK-NEXT
: Other
: 0
96 // CHECK-NEXT
: Section
: Absolute
(0xFFF1)
98 // CHECK-NEXT
: Symbol
{
99 // CHECK-NEXT
: Name
: sym08
100 // CHECK-NEXT
: Value
: 0x0
101 // CHECK-NEXT
: Size
: 0
102 // CHECK-NEXT
: Binding
: Local
(0x0)
103 // CHECK-NEXT
: Type
: Function
(0x2)
104 // CHECK-NEXT
: Other
: 0
105 // CHECK-NEXT
: Section
: .text
107 // CHECK-NEXT
: Symbol
{
108 // CHECK-NEXT
: Name
: sym10
109 // CHECK-NEXT
: Value
: 0x0
110 // CHECK-NEXT
: Size
: 0
111 // CHECK-NEXT
: Binding
: Local
(0x0)
112 // CHECK-NEXT
: Type
: Function
(0x2)
113 // CHECK-NEXT
: Other
: 0
114 // CHECK-NEXT
: Section
: .text
116 // CHECK-NEXT
: Symbol
{
117 // CHECK-NEXT
: Name
: sym09
118 // CHECK-NEXT
: Value
: 0x1
119 // CHECK-NEXT
: Size
: 0
120 // CHECK-NEXT
: Binding
: Local
(0x0)
122 // GAS
: Type
: None
(0x0)
123 // CHECK-NEXT
: Type
: Function
(0x2)
125 // CHECK-NEXT
: Other
: 0
126 // CHECK-NEXT
: Section
: .text
128 // CHECK-NEXT
: Symbol
{
129 // CHECK-NEXT
: Name
: sym11
130 // CHECK-NEXT
: Value
: 0x0
131 // CHECK-NEXT
: Size
: 0
132 // CHECK-NEXT
: Binding
: Local
(0x0)
134 // GAS
: Type
: Object
(0x1)
135 // CHECK-NEXT
: Type
: Function
(0x2)
137 // CHECK-NEXT
: Other
: 0
138 // CHECK-NEXT
: Section
: .text
140 // CHECK-NEXT
: Symbol
{
141 // CHECK-NEXT
: Name
: sym12
142 // CHECK-NEXT
: Value
: 0x1
143 // CHECK-NEXT
: Size
: 0
144 // CHECK-NEXT
: Binding
: Local
(0x0)
146 // GAS
: Type
: Object
(0x1)
147 // CHECK-NEXT
: Type
: Function
(0x2)
149 // CHECK-NEXT
: Other
: 0
150 // CHECK-NEXT
: Section
: .text