blob: ce07228facb152efd84c53e312d314f02abe8d87 [file] [log] [blame] [edit]
/// 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