## Checks that symbols are allocated in correct sections, and that empty ## fragments are not allocated at all. # REQUIRES: x86_64-linux # RUN: llvm-mc -filetype=obj -triple x86_64-unknown-unknown %s -o %t.o # RUN: %clangxx %cxxflags %t.o -o %t.exe -Wl,-q -no-pie # RUN: llvm-bolt %t.exe -o %t.bolt --split-functions --split-strategy=all \ # RUN: --print-split --print-only=_Z3foov 2>&1 | \ # RUN: FileCheck %s --check-prefix=CHECK-SPLIT # RUN: llvm-nm %t.bolt | FileCheck %s --check-prefix=CHECK-COLD0 # RUN: llvm-objdump --syms %t.bolt | \ # RUN: FileCheck %s --check-prefix=CHECK-SYMS # CHECK-SPLIT: .LLP0 (4 instructions, align : 1) # CHECK-SPLIT: ------- HOT-COLD SPLIT POINT ------- # CHECK-SPLIT-EMPTY: # CHECK-SPLIT-NEXT: ------- HOT-COLD SPLIT POINT ------- # CHECK-SPLIT-EMPTY: # CHECK-SPLIT-NEXT: .LFT0 (2 instructions, align : 1) # CHECK-COLD0-NOT: _Z3foov.cold.0 # CHECK-SYMS: .text.cold.1 # CHECK-SYMS-SAME: _Z3foov.cold.1 # CHECK-SYMS: .text.cold.2 # CHECK-SYMS-SAME: _Z3foov.cold.2 # CHECK-SYMS: .text.cold.3 # CHECK-SYMS-SAME: _Z3foov.cold.3 .text .globl _Z3barv .type _Z3barv, @function _Z3barv: # void bar(); .cfi_startproc ret .cfi_endproc .size _Z3barv, .-_Z3barv .globl _Z3bazv .type _Z3bazv, @function _Z3bazv: # void baz() noexcept; .cfi_startproc ret .cfi_endproc .size _Z3bazv, .-_Z3bazv .globl _Z3foov .type _Z3foov, @function _Z3foov: # void foo() noexcept; .LFB1265: # _Z3foov .cfi_startproc .cfi_personality 0x3,__gxx_personality_v0 .cfi_lsda 0x3,.LLSDA1265 subq $8, %rsp .cfi_def_cfa_offset 16 .LEHB0: call _Z3barv # LP: .L5 .LEHE0: jmp .L4 .L5: # (_Z3foov.cold.0), landing pad, hot movq %rax, %rdi cmpq $1, %rdx je .L3 call _ZSt9terminatev # _Z3foov.cold.1 .L3: # _Z3foov.cold.2 call __cxa_begin_catch call _Z3bazv call __cxa_end_catch .L4: # _Z3foov.cold.3 call _Z3bazv addq $8, %rsp .cfi_def_cfa_offset 8 ret .cfi_endproc .globl __gxx_personality_v0 .section .gcc_except_table,"a",@progbits .align 4 .LLSDA1265: .byte 0xff .byte 0x3 .uleb128 .LLSDATT1265-.LLSDATTD1265 .LLSDATTD1265: .byte 0x1 .uleb128 .LLSDACSE1265-.LLSDACSB1265 .LLSDACSB1265: .uleb128 .LEHB0-.LFB1265 .uleb128 .LEHE0-.LEHB0 .uleb128 .L5-.LFB1265 .uleb128 0x3 .LLSDACSE1265: .byte 0 .byte 0 .byte 0x1 .byte 0x7d .align 4 .long _ZTISt13runtime_error .LLSDATT1265: .text .size _Z3foov, .-_Z3foov .globl main .type main, @function main: .cfi_startproc subq $8, %rsp .cfi_def_cfa_offset 16 call _Z3foov movl $0, %eax addq $8, %rsp .cfi_def_cfa_offset 8 ret .cfi_endproc .size main, .-main