|
1 | | -## Tests --call-graph-info prints information from call graph section. |
| 1 | +## Tests how --call-graph-info prints the call graph information. |
| 2 | +# RUN: yaml2obj --docnum=1 %s -o %t |
| 3 | +# RUN: llvm-readelf --call-graph-info %t 2>&1 | FileCheck %s --match-full-lines --allow-empty -DFILE=%t |
| 4 | +# RUN: llvm-readelf --elf-output-style=LLVM --call-graph-info %t 2>&1 | FileCheck %s --match-full-lines --check-prefix=LLVM -DFILE=%t |
| 5 | +# RUN: llvm-readelf --elf-output-style=JSON --pretty-print --call-graph-info %t 2>&1 | FileCheck %s --match-full-lines --check-prefix=JSON -DFILE=%t |
2 | 6 |
|
3 | | -# REQUIRES: x86-registered-target |
| 7 | +## Yaml input is obtained by compiling the below source to object with: |
| 8 | +## clang -fexperimental-call-graph-section test.c -o test.o |
| 9 | +## then to yaml with: |
| 10 | +## obj2yaml test.o > test.yaml |
| 11 | +## Remove ProgramHeaders if obj2yaml fails. |
4 | 12 |
|
5 | | -# RUN: llvm-mc %s -filetype=obj -triple=x86_64-pc-linux -o %t |
6 | | -# RUN: llvm-readelf --call-graph-info %t 2>&1 | FileCheck %s --allow-empty -DFILE=%t |
7 | | -# RUN: llvm-readelf --elf-output-style=LLVM --call-graph-info %t 2>&1 | FileCheck %s -DFILE=%t --check-prefix=LLVM |
8 | | -# RUN: llvm-readelf --elf-output-style=JSON --pretty-print --call-graph-info %t 2>&1 | FileCheck %s -DFILE=%t --check-prefix=JSON |
9 | | - |
10 | | -## Assembly output was generated from the following source using this command |
11 | | -## clang -fexperimental-call-graph-section -S test.cpp -o test.S |
| 13 | +## YAML output was generated from the following source: |
12 | 14 | ## |
13 | 15 | ## void foo() {} |
14 | 16 | ## |
|
133 | 135 | # JSON-NEXT: }, |
134 | 136 | # JSON-NEXT: { |
135 | 137 | # JSON-NEXT: "Function": { |
136 | | -# JSON-NEXT: "Name": "main", |
| 138 | +# JSON-NEXT: "Name": "caller", |
137 | 139 | # JSON-NEXT: "Version": 0, |
138 | 140 | # JSON-NEXT: "IsIndirectTarget": true, |
139 | 141 | # JSON-NEXT: "TypeId": 762397922298560988, |
|
158 | 160 | # JSON-NEXT: } |
159 | 161 | # JSON-NEXT: ] |
160 | 162 |
|
161 | | - .file "cg.cpp" |
162 | | - .text |
163 | | - .globl _Z3foov # -- Begin function _Z3foov |
164 | | - .p2align 4 |
165 | | - .type _Z3foov,@function |
166 | | -_Z3foov: # @_Z3foov |
167 | | -.Lfunc_begin0: |
168 | | - .cfi_startproc |
169 | | -# %bb.0: # %entry |
170 | | - pushq %rbp |
171 | | - .cfi_def_cfa_offset 16 |
172 | | - .cfi_offset %rbp, -16 |
173 | | - movq %rsp, %rbp |
174 | | - .cfi_def_cfa_register %rbp |
175 | | - popq %rbp |
176 | | - .cfi_def_cfa %rsp, 8 |
177 | | - retq |
178 | | -.Lfunc_end0: |
179 | | - .size _Z3foov, .Lfunc_end0-_Z3foov |
180 | | - .cfi_endproc |
181 | | - .section .llvm.callgraph,"o",@llvm_call_graph,.text |
182 | | - .byte 0 |
183 | | - .byte 1 |
184 | | - .quad _Z3foov |
185 | | - .quad -550448936902516574 |
186 | | - .text |
187 | | - # -- End function |
188 | | - .globl _Z3barv # -- Begin function _Z3barv |
189 | | - .p2align 4 |
190 | | - .type _Z3barv,@function |
191 | | -_Z3barv: # @_Z3barv |
192 | | -.Lfunc_begin1: |
193 | | - .cfi_startproc |
194 | | -# %bb.0: # %entry |
195 | | - pushq %rbp |
196 | | - .cfi_def_cfa_offset 16 |
197 | | - .cfi_offset %rbp, -16 |
198 | | - movq %rsp, %rbp |
199 | | - .cfi_def_cfa_register %rbp |
200 | | - popq %rbp |
201 | | - .cfi_def_cfa %rsp, 8 |
202 | | - retq |
203 | | -.Lfunc_end1: |
204 | | - .size _Z3barv, .Lfunc_end1-_Z3barv |
205 | | - .cfi_endproc |
206 | | - .section .llvm.callgraph,"o",@llvm_call_graph,.text |
207 | | - .byte 0 |
208 | | - .byte 1 |
209 | | - .quad _Z3barv |
210 | | - .quad -550448936902516574 |
211 | | - .text |
212 | | - # -- End function |
213 | | - .globl _Z3bazc # -- Begin function _Z3bazc |
214 | | - .p2align 4 |
215 | | - .type _Z3bazc,@function |
216 | | -_Z3bazc: # @_Z3bazc |
217 | | -.Lfunc_begin2: |
218 | | - .cfi_startproc |
219 | | -# %bb.0: # %entry |
220 | | - pushq %rbp |
221 | | - .cfi_def_cfa_offset 16 |
222 | | - .cfi_offset %rbp, -16 |
223 | | - movq %rsp, %rbp |
224 | | - .cfi_def_cfa_register %rbp |
225 | | - movb %dil, %al |
226 | | - movb %al, -1(%rbp) |
227 | | - xorl %eax, %eax |
228 | | - popq %rbp |
229 | | - .cfi_def_cfa %rsp, 8 |
230 | | - retq |
231 | | -.Lfunc_end2: |
232 | | - .size _Z3bazc, .Lfunc_end2-_Z3bazc |
233 | | - .cfi_endproc |
234 | | - .section .llvm.callgraph,"o",@llvm_call_graph,.text |
235 | | - .byte 0 |
236 | | - .byte 1 |
237 | | - .quad _Z3bazc |
238 | | - .quad 3498816979441845844 |
239 | | - .text |
240 | | - # -- End function |
241 | | - .globl main # -- Begin function main |
242 | | - .p2align 4 |
243 | | - .type main,@function |
244 | | -main: # @main |
245 | | -.Lfunc_begin3: |
246 | | - .cfi_startproc |
247 | | -# %bb.0: # %entry |
248 | | - pushq %rbp |
249 | | - .cfi_def_cfa_offset 16 |
250 | | - .cfi_offset %rbp, -16 |
251 | | - movq %rsp, %rbp |
252 | | - .cfi_def_cfa_register %rbp |
253 | | - subq $48, %rsp |
254 | | - movl $0, -4(%rbp) |
255 | | - leaq _Z3foov(%rip), %rax |
256 | | - movq %rax, -16(%rbp) |
257 | | - callq *-16(%rbp) |
258 | | - leaq _Z3barv(%rip), %rax |
259 | | - movq %rax, -24(%rbp) |
260 | | - callq *-24(%rbp) |
261 | | - leaq _Z3bazc(%rip), %rax |
262 | | - movq %rax, -40(%rbp) |
263 | | - movq -40(%rbp), %rax |
264 | | - movsbl -25(%rbp), %edi |
265 | | - callq *%rax |
266 | | - callq _Z3foov |
267 | | - callq _Z3barv |
268 | | - movsbl -25(%rbp), %edi |
269 | | - callq _Z3bazc |
270 | | - xorl %eax, %eax |
271 | | - addq $48, %rsp |
272 | | - popq %rbp |
273 | | - .cfi_def_cfa %rsp, 8 |
274 | | - retq |
275 | | -.Lfunc_end3: |
276 | | - .size main, .Lfunc_end3-main |
277 | | - .cfi_endproc |
278 | | - .section .llvm.callgraph,"o",@llvm_call_graph,.text |
279 | | - .byte 0 |
280 | | - .byte 7 |
281 | | - .quad main |
282 | | - .quad 762397922298560988 |
283 | | - .byte 3 |
284 | | - .quad _Z3foov |
285 | | - .quad _Z3barv |
286 | | - .quad _Z3bazc |
287 | | - .byte 2 |
288 | | - .quad -550448936902516574 |
289 | | - .quad 3498816979441845844 |
290 | | - .text |
291 | | - # -- End function |
292 | | - .ident "Fuchsia clang version 22.0.0git ([email protected]:Prabhuk/llvm-project.git aaa2cd4fc523537be583bc5a2b2f4d447575a6b4)" |
293 | | - .section ".note.GNU-stack","",@progbits |
294 | | - .addrsig |
295 | | - .addrsig_sym _Z3foov |
296 | | - .addrsig_sym _Z3barv |
297 | | - .addrsig_sym _Z3bazc |
| 163 | +--- !ELF |
| 164 | +FileHeader: |
| 165 | + Class: ELFCLASS64 |
| 166 | + Data: ELFDATA2LSB |
| 167 | + Type: ET_REL |
| 168 | + Machine: EM_X86_64 |
| 169 | + SectionHeaderStringTable: .strtab |
| 170 | +Sections: |
| 171 | + - Name: .text |
| 172 | + Type: SHT_PROGBITS |
| 173 | + Flags: [ SHF_ALLOC, SHF_EXECINSTR ] |
| 174 | + AddressAlign: 0x10 |
| 175 | + Content: 554889E55DC3662E0F1F840000000000554889E55DC3662E0F1F840000000000554889E54088F88845FF31C05DC36690554889E54883EC20488D0500000000488945F8FF55F8488D0500000000488945F0FF55F0488D0500000000488945E0488B45E00FBE7DEFFFD0E800000000E8000000000FBE7DEFE80000000031C04883C4205DC3 |
| 176 | + - Name: .llvm.callgraph |
| 177 | + Type: SHT_LLVM_CALL_GRAPH |
| 178 | + Flags: [ SHF_LINK_ORDER ] |
| 179 | + Link: .text |
| 180 | + AddressAlign: 0x1 |
| 181 | + Content: 00010000000000000000A220EFB89B695CF800010000000000000000A220EFB89B695CF8000100000000000000005486BC59814B8E3000070000000000000000DC011AF8DE94940A0300000000000000000000000000000000000000000000000002A220EFB89B695CF85486BC59814B8E30 |
| 182 | + - Name: .comment |
| 183 | + Type: SHT_PROGBITS |
| 184 | + Flags: [ SHF_MERGE, SHF_STRINGS ] |
| 185 | + AddressAlign: 0x1 |
| 186 | + EntSize: 0x1 |
| 187 | + Content: 004675636873696120636C616E672076657273696F6E2032322E302E306769742028676974406769746875622E636F6D3A5072616268756B2F6C6C766D2D70726F6A6563742E67697420366532323235343933303736346536613734323839613261633731616637633834333038356633622900 |
| 188 | + - Name: .note.GNU-stack |
| 189 | + Type: SHT_PROGBITS |
| 190 | + AddressAlign: 0x1 |
| 191 | + - Name: .eh_frame |
| 192 | + Type: SHT_X86_64_UNWIND |
| 193 | + Flags: [ SHF_ALLOC ] |
| 194 | + AddressAlign: 0x8 |
| 195 | + Content: 1400000000000000017A5200017810011B0C0708900100001C0000001C000000000000000600000000410E108602430D06410C07080000001C0000003C000000000000000600000000410E108602430D06410C07080000001C0000005C000000000000000E00000000410E108602430D06490C07080000001C0000007C000000000000005400000000410E108602430D06024F0C07080000 |
| 196 | + - Name: .rela.text |
| 197 | + Type: SHT_RELA |
| 198 | + Flags: [ SHF_INFO_LINK ] |
| 199 | + Link: .symtab |
| 200 | + AddressAlign: 0x8 |
| 201 | + Info: .text |
| 202 | + Relocations: |
| 203 | + - Offset: 0x3B |
| 204 | + Symbol: _Z3foov |
| 205 | + Type: R_X86_64_PC32 |
| 206 | + Addend: -4 |
| 207 | + - Offset: 0x49 |
| 208 | + Symbol: _Z3barv |
| 209 | + Type: R_X86_64_PC32 |
| 210 | + Addend: -4 |
| 211 | + - Offset: 0x57 |
| 212 | + Symbol: _Z3bazc |
| 213 | + Type: R_X86_64_PC32 |
| 214 | + Addend: -4 |
| 215 | + - Offset: 0x6A |
| 216 | + Symbol: _Z3foov |
| 217 | + Type: R_X86_64_PLT32 |
| 218 | + Addend: -4 |
| 219 | + - Offset: 0x6F |
| 220 | + Symbol: _Z3barv |
| 221 | + Type: R_X86_64_PLT32 |
| 222 | + Addend: -4 |
| 223 | + - Offset: 0x78 |
| 224 | + Symbol: _Z3bazc |
| 225 | + Type: R_X86_64_PLT32 |
| 226 | + Addend: -4 |
| 227 | + - Name: .rela.llvm.callgraph |
| 228 | + Type: SHT_RELA |
| 229 | + Flags: [ SHF_INFO_LINK ] |
| 230 | + Link: .symtab |
| 231 | + AddressAlign: 0x8 |
| 232 | + Info: .llvm.callgraph |
| 233 | + Relocations: |
| 234 | + - Offset: 0x2 |
| 235 | + Symbol: _Z3foov |
| 236 | + Type: R_X86_64_64 |
| 237 | + - Offset: 0x14 |
| 238 | + Symbol: _Z3barv |
| 239 | + Type: R_X86_64_64 |
| 240 | + - Offset: 0x26 |
| 241 | + Symbol: _Z3bazc |
| 242 | + Type: R_X86_64_64 |
| 243 | + - Offset: 0x38 |
| 244 | + Symbol: _Z6callerv |
| 245 | + Type: R_X86_64_64 |
| 246 | + - Offset: 0x49 |
| 247 | + Symbol: _Z3foov |
| 248 | + Type: R_X86_64_64 |
| 249 | + - Offset: 0x51 |
| 250 | + Symbol: _Z3barv |
| 251 | + Type: R_X86_64_64 |
| 252 | + - Offset: 0x59 |
| 253 | + Symbol: _Z3bazc |
| 254 | + Type: R_X86_64_64 |
| 255 | + - Name: .rela.eh_frame |
| 256 | + Type: SHT_RELA |
| 257 | + Flags: [ SHF_INFO_LINK ] |
| 258 | + Link: .symtab |
| 259 | + AddressAlign: 0x8 |
| 260 | + Info: .eh_frame |
| 261 | + Relocations: |
| 262 | + - Offset: 0x20 |
| 263 | + Symbol: .text |
| 264 | + Type: R_X86_64_PC32 |
| 265 | + - Offset: 0x40 |
| 266 | + Symbol: .text |
| 267 | + Type: R_X86_64_PC32 |
| 268 | + Addend: 16 |
| 269 | + - Offset: 0x60 |
| 270 | + Symbol: .text |
| 271 | + Type: R_X86_64_PC32 |
| 272 | + Addend: 32 |
| 273 | + - Offset: 0x80 |
| 274 | + Symbol: .text |
| 275 | + Type: R_X86_64_PC32 |
| 276 | + Addend: 48 |
| 277 | + - Name: .llvm_addrsig |
| 278 | + Type: SHT_LLVM_ADDRSIG |
| 279 | + Flags: [ SHF_EXCLUDE ] |
| 280 | + Link: .symtab |
| 281 | + AddressAlign: 0x1 |
| 282 | + Symbols: [ _Z3foov, _Z3barv, _Z3bazc ] |
| 283 | + - Type: SectionHeaderTable |
| 284 | + Sections: |
| 285 | + - Name: .strtab |
| 286 | + - Name: .text |
| 287 | + - Name: .rela.text |
| 288 | + - Name: .llvm.callgraph |
| 289 | + - Name: .rela.llvm.callgraph |
| 290 | + - Name: .comment |
| 291 | + - Name: .note.GNU-stack |
| 292 | + - Name: .eh_frame |
| 293 | + - Name: .rela.eh_frame |
| 294 | + - Name: .llvm_addrsig |
| 295 | + - Name: .symtab |
| 296 | +Symbols: |
| 297 | + - Name: cg.cpp |
| 298 | + Type: STT_FILE |
| 299 | + Index: SHN_ABS |
| 300 | + - Name: .text |
| 301 | + Type: STT_SECTION |
| 302 | + Section: .text |
| 303 | + - Name: _Z3foov |
| 304 | + Type: STT_FUNC |
| 305 | + Section: .text |
| 306 | + Binding: STB_GLOBAL |
| 307 | + Size: 0x6 |
| 308 | + - Name: _Z3barv |
| 309 | + Type: STT_FUNC |
| 310 | + Section: .text |
| 311 | + Binding: STB_GLOBAL |
| 312 | + Value: 0x10 |
| 313 | + Size: 0x6 |
| 314 | + - Name: _Z3bazc |
| 315 | + Type: STT_FUNC |
| 316 | + Section: .text |
| 317 | + Binding: STB_GLOBAL |
| 318 | + Value: 0x20 |
| 319 | + Size: 0xE |
| 320 | + - Name: _Z6callerv |
| 321 | + Type: STT_FUNC |
| 322 | + Section: .text |
| 323 | + Binding: STB_GLOBAL |
| 324 | + Value: 0x30 |
| 325 | + Size: 0x54 |
| 326 | +... |
0 commit comments