File: fragmented-symbols.s

package info (click to toggle)
swiftlang 6.0.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,519,992 kB
  • sloc: cpp: 9,107,863; ansic: 2,040,022; asm: 1,135,751; python: 296,500; objc: 82,456; f90: 60,502; lisp: 34,951; pascal: 19,946; sh: 18,133; perl: 7,482; ml: 4,937; javascript: 4,117; makefile: 3,840; awk: 3,535; xml: 914; fortran: 619; cs: 573; ruby: 573
file content (118 lines) | stat: -rw-r--r-- 3,362 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
# 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