149 lines · plain
1## Test the correctness of section names and function symbol names post cdsplit.2## Warm section should have name .text.warm and warm function fragments should3## have symbol names ending in warm.4 5# RUN: llvm-mc --filetype=obj --triple x86_64-unknown-unknown %s -o %t.o6# RUN: link_fdata %s %t.o %t.fdata7# RUN: llvm-strip --strip-unneeded %t.o8# RUN: %clang %cflags %t.o -o %t.exe -Wl,-q9# RUN: llvm-bolt %t.exe -o %t.bolt --split-functions --split-strategy=cdsplit \10# RUN: --call-scale=2 --data=%t.fdata --reorder-blocks=ext-tsp11# RUN: llvm-objdump --syms %t.bolt | FileCheck %s --check-prefix=CHECK-SYMS-WARM12 13# CHECK-SYMS-WARM: 0000000000000000 l df *ABS* 0000000000000000 bolt-pseudo.o14# CHECK-SYMS-WARM: .text.warm15# CHECK-SYMS-WARM-SAME: chain.warm16# CHECK-SYMS-WARM: .text.cold17# CHECK-SYMS-WARM-SAME: dummy.cold18 19 .text20 .globl chain21 .type chain, @function22chain:23 pushq %rbp24 movq %rsp, %rbp25 cmpl $2, %edi26LLentry_LLchain_start:27 jge LLchain_start28# FDATA: 1 chain #LLentry_LLchain_start# 1 chain #LLchain_start# 0 10029# FDATA: 1 chain #LLentry_LLchain_start# 1 chain #LLfast# 0 50030LLfast:31 movl $5, %eax32LLfast_LLexit:33 jmp LLexit34# FDATA: 1 chain #LLfast_LLexit# 1 chain #LLexit# 0 50035LLchain_start:36 movl $10, %eax37LLchain_start_LLchain1:38 jge LLchain139# FDATA: 1 chain #LLchain_start_LLchain1# 1 chain #LLchain1# 0 9940# FDATA: 1 chain #LLchain_start_LLchain1# 1 chain #LLloop_entry# 0 141LLloop_entry:42 addl $1, %eax43 addl $1, %eax44 addl $1, %eax45 addl $1, %eax46 xorl %eax, %eax // Initialize result47 movl $1000000, %ecx // Set loop counter to a large value48LLloop_entry_LLloop_start:49 jmp LLloop_start50# FDATA: 1 chain #LLloop_entry_LLloop_start# 1 chain #LLloop_start# 0 151LLloop_start:52 addl $1, %eax // Increment result53 subl $1, %ecx // Decrement loop counter54LLloop_start_LLloop_start:55 jg LLloop_start // Jump if loop counter is greater than 056# FDATA: 1 chain #LLloop_start_LLloop_start# 1 chain #LLloop_start# 0 100000057# FDATA: 1 chain #LLloop_start_LLloop_start# 1 chain #LLchain1# 0 158LLchain1:59 addl $1, %eax60LLchain1_LLchain2:61 jmp LLchain262# FDATA: 1 chain #LLchain1_LLchain2# 1 chain #LLchain2# 0 10063LLchain2:64 addl $1, %eax65LLchain2_LLchain3:66 jmp LLchain367# FDATA: 1 chain #LLchain2_LLchain3# 1 chain #LLchain3# 0 10068LLchain3:69 addl $1, %eax70 addl $1, %eax71 addl $1, %eax72 addl $1, %eax73 addl $1, %eax74LLchain3_LLchain4:75 jmp LLchain476# FDATA: 1 chain #LLchain3_LLchain4# 1 chain #LLchain4# 0 10077LLchain4:78 addl $1, %eax79 addl $1, %eax80 addl $1, %eax81 addl $1, %eax82 addl $1, %eax83LLchain4_LLexit:84 jmp LLexit85# FDATA: 1 chain #LLchain4_LLexit# 1 chain #LLexit# 0 10086LLexit:87 popq %rbp88 ret89LLchain_end:90 .size chain, LLchain_end-chain91 92 .text93 .globl dummy94 .type dummy, @function95dummy:96 pushq %rbp97 movq %rsp, %rbp98 cmpl $2, %edi99dummy_dummy_block1:100 jg dummy_block1101# FDATA: 1 dummy #dummy_dummy_block1# 1 dummy #dummy_block1# 0 0102# FDATA: 1 dummy #dummy_dummy_block1# 1 dummy #dummy_next# 0 100103dummy_next:104 addl $1, %eax105 addl $1, %eax106dummy_next_dummy_exit:107 jmp dummy_exit108# FDATA: 1 dummy #dummy_next_dummy_exit# 1 dummy #dummy_exit# 0 100109dummy_block1:110 addl $1, %eax111 addl $1, %eax112 addl $1, %eax113 addl $1, %eax114 addl $1, %eax115dummy_block1_dummy_block2:116 jmp dummy_block2117# FDATA: 1 dummy #dummy_block1_dummy_block2# 1 dummy #dummy_block2# 0 0118dummy_block2:119 addl $1, %eax120 addl $1, %eax121 addl $1, %eax122 addl $1, %eax123 addl $1, %eax124dummy_block2_dummy_exit:125 jmp dummy_exit126# FDATA: 1 dummy #dummy_block2_dummy_exit# 1 dummy #dummy_exit# 0 0127dummy_exit:128 popq %rbp129 ret130 131 .globl main132 .type main, @function133main:134 pushq %rbp135 movq %rsp, %rbp136 movl $1, %edi137LLmain_chain1:138 call chain139# FDATA: 1 main #LLmain_chain1# 1 chain 0 0 600140 movl $4, %edi141LLmain_dummy:142 call dummy143# FDATA: 1 main #LLmain_dummy# 1 dummy 0 0 100144 xorl %eax, %eax145 popq %rbp146 retq147.Lmain_end:148 .size main, .Lmain_end-main149