| /// Test the callgraph section to make sure the indirect callsites |
| /// (annotated by generated temporary labels .Ltmp*) are associated |
| /// with the corresponding callee type identifiers. |
| |
| // RUN: llvm-mc -triple=x86_64 -filetype=obj -o - < %s | llvm-readelf -x .callgraph - | FileCheck %s |
| |
| .text |
| .globl ball # -- Begin function ball |
| .p2align 4 |
| .type ball,@function |
| ball: # @ball |
| .Lfunc_begin0: |
| # %bb.0: # %entry |
| pushq %rbx |
| subq $32, %rsp |
| movl $0, 4(%rsp) |
| movq foo@GOTPCREL(%rip), %rcx |
| movq %rcx, 24(%rsp) |
| xorl %eax, %eax |
| callq *%rcx |
| .Ltmp0: |
| movq bar@GOTPCREL(%rip), %rax |
| movq %rax, 16(%rsp) |
| movsbl 3(%rsp), %edi |
| callq *%rax |
| .Ltmp1: |
| movq baz@GOTPCREL(%rip), %rax |
| movq %rax, 8(%rsp) |
| leaq 3(%rsp), %rbx |
| movq %rbx, %rdi |
| callq *%rax |
| .Ltmp2: |
| callq foo@PLT |
| movsbl 3(%rsp), %edi |
| callq bar@PLT |
| movq %rbx, %rdi |
| callq baz@PLT |
| addq $32, %rsp |
| popq %rbx |
| retq |
| .section .callgraph,"o",@progbits,.text |
| .quad 0 |
| .quad .Lfunc_begin0 |
| .quad 1 |
| .quad 3 |
| /// MD5 hash of the callee type ID for foo. |
| // CHECK: 2444f731 f5eecb3e |
| .quad 0x3ecbeef531f74424 |
| .quad .Ltmp0 |
| /// MD5 hash of the callee type ID for bar. |
| // CHECK: 5486bc59 814b8e30 |
| .quad 0x308e4b8159bc8654 |
| .quad .Ltmp1 |
| /// MD5 hash of the callee type ID for baz. |
| // CHECK: 7ade6814 f897fd77 |
| .quad 0x77fd97f81468de7a |
| .quad .Ltmp2 |
| .text |