|
|
@@ -0,0 +1,185 @@ |
|
|
# REQUIRES: x86 |
|
|
|
|
|
# RUN: llvm-mc -filetype=obj -triple=x86_64-unknown-linux %s -o %t |
|
|
# RUN: ld.lld -e A %t -o %t2 |
|
|
# RUN: llvm-readobj -symbols %t2 | FileCheck %s --check-prefix=NOSORT |
|
|
|
|
|
# RUN: echo "A B 10" > %t.call_graph |
|
|
# RUN: echo "A B 10" >> %t.call_graph |
|
|
# RUN: echo "Aa B 80" >> %t.call_graph |
|
|
# RUN: echo "A C 40" >> %t.call_graph |
|
|
# RUN: echo "B C 30" >> %t.call_graph |
|
|
# RUN: echo "C D 90" >> %t.call_graph |
|
|
# RUN: echo "PP TS 100" >> %t.call_graph |
|
|
# RUN: echo "_init2 _init 24567837" >> %t.call_graph |
|
|
# RUN: echo "TS QC 9001" >> %t.call_graph |
|
|
# RUN: echo "TooManyPreds0 TooManyPreds 10" >> %t.call_graph |
|
|
# RUN: echo "TooManyPreds1 TooManyPreds 10" >> %t.call_graph |
|
|
# RUN: echo "TooManyPreds2 TooManyPreds 10" >> %t.call_graph |
|
|
# RUN: echo "TooManyPreds3 TooManyPreds 10" >> %t.call_graph |
|
|
# RUN: echo "TooManyPreds4 TooManyPreds 10" >> %t.call_graph |
|
|
# RUN: echo "TooManyPreds5 TooManyPreds 10" >> %t.call_graph |
|
|
# RUN: echo "TooManyPreds6 TooManyPreds 10" >> %t.call_graph |
|
|
# RUN: echo "TooManyPreds7 TooManyPreds 10" >> %t.call_graph |
|
|
# RUN: echo "TooManyPreds8 TooManyPreds 10" >> %t.call_graph |
|
|
# RUN: echo "TooManyPreds9 TooManyPreds 10" >> %t.call_graph |
|
|
# RUN: echo "TooManyPreds10 TooManyPreds 11" >> %t.call_graph |
|
|
# RUN: ld.lld -e A %t --call-graph-ordering-file %t.call_graph -o %t2 |
|
|
# RUN: llvm-readobj -symbols %t2 | FileCheck %s |
|
|
|
|
|
.section .text.D,"ax",@progbits |
|
|
D: |
|
|
retq |
|
|
|
|
|
.section .text.C,"ax",@progbits |
|
|
.globl C |
|
|
C: |
|
|
retq |
|
|
|
|
|
.section .text.B,"ax",@progbits |
|
|
.globl B |
|
|
B: |
|
|
retq |
|
|
|
|
|
.section .text.A,"ax",@progbits |
|
|
.globl A |
|
|
A: |
|
|
Aa: |
|
|
retq |
|
|
|
|
|
.section .ponies,"ax",@progbits,unique,1 |
|
|
.globl TS |
|
|
TS: |
|
|
retq |
|
|
|
|
|
.section .ponies,"ax",@progbits,unique,2 |
|
|
.globl PP |
|
|
PP: |
|
|
retq |
|
|
|
|
|
.section .other,"ax",@progbits,unique,1 |
|
|
.globl QC |
|
|
QC: |
|
|
retq |
|
|
|
|
|
.section .other,"ax",@progbits,unique,2 |
|
|
.globl GB |
|
|
GB: |
|
|
retq |
|
|
|
|
|
.section .init,"ax",@progbits,unique,1 |
|
|
.globl _init |
|
|
_init: |
|
|
retq |
|
|
|
|
|
.section .init,"ax",@progbits,unique,2 |
|
|
.globl _init2 |
|
|
_init2: |
|
|
retq |
|
|
|
|
|
.section .text.TooManyPreds,"ax",@progbits |
|
|
TooManyPreds: |
|
|
retq |
|
|
retq |
|
|
retq |
|
|
retq |
|
|
retq |
|
|
retq |
|
|
retq |
|
|
retq |
|
|
retq |
|
|
retq |
|
|
|
|
|
.section .text.TooManyPreds0,"ax",@progbits |
|
|
TooManyPreds0: |
|
|
retq |
|
|
|
|
|
.section .text.TooManyPreds1,"ax",@progbits |
|
|
TooManyPreds1: |
|
|
retq |
|
|
|
|
|
.section .text.TooManyPreds2,"ax",@progbits |
|
|
TooManyPreds2: |
|
|
retq |
|
|
|
|
|
.section .text.TooManyPreds3,"ax",@progbits |
|
|
TooManyPreds3: |
|
|
retq |
|
|
|
|
|
.section .text.TooManyPreds4,"ax",@progbits |
|
|
TooManyPreds4: |
|
|
retq |
|
|
|
|
|
.section .text.TooManyPreds5,"ax",@progbits |
|
|
TooManyPreds5: |
|
|
retq |
|
|
|
|
|
.section .text.TooManyPreds6,"ax",@progbits |
|
|
TooManyPreds6: |
|
|
retq |
|
|
|
|
|
.section .text.TooManyPreds7,"ax",@progbits |
|
|
TooManyPreds7: |
|
|
retq |
|
|
|
|
|
.section .text.TooManyPreds8,"ax",@progbits |
|
|
TooManyPreds8: |
|
|
retq |
|
|
|
|
|
.section .text.TooManyPreds9,"ax",@progbits |
|
|
TooManyPreds9: |
|
|
retq |
|
|
|
|
|
.section .text.TooManyPreds10,"ax",@progbits |
|
|
TooManyPreds10: |
|
|
retq |
|
|
|
|
|
# CHECK: Name: D |
|
|
# CHECK-NEXT: Value: 0x201003 |
|
|
# CHECK: Name: TooManyPreds |
|
|
# CHECK-NEXT: Value: 0x201004 |
|
|
# CHECK: Name: TooManyPreds10 |
|
|
# CHECK-NEXT: Value: 0x201018 |
|
|
# CHECK: Name: A |
|
|
# CHECK-NEXT: Value: 0x201000 |
|
|
# CHECK: Name: B |
|
|
# CHECK-NEXT: Value: 0x201001 |
|
|
# CHECK: Name: C |
|
|
# CHECK-NEXT: Value: 0x201002 |
|
|
# CHECK: Name: GB |
|
|
# CHECK-NEXT: Value: 0x20101F |
|
|
# CHECK: Name: PP |
|
|
# CHECK-NEXT: Value: 0x20101C |
|
|
# CHECK: Name: QC |
|
|
# CHECK-NEXT: Value: 0x20101E |
|
|
# CHECK: Name: TS |
|
|
# CHECK-NEXT: Value: 0x20101D |
|
|
# CHECK: Name: _init |
|
|
# CHECK-NEXT: Value: 0x201020 |
|
|
# CHECK: Name: _init2 |
|
|
# CHECK-NEXT: Value: 0x201021 |
|
|
|
|
|
# NOSORT: Name: D |
|
|
# NOSORT-NEXT: Value: 0x201000 |
|
|
# NOSORT: Name: TooManyPreds |
|
|
# NOSORT-NEXT: Value: 0x201004 |
|
|
# NOSORT: Name: TooManyPreds10 |
|
|
# NOSORT-NEXT: Value: 0x201018 |
|
|
# NOSORT: Name: A |
|
|
# NOSORT-NEXT: Value: 0x201003 |
|
|
# NOSORT: Name: B |
|
|
# NOSORT-NEXT: Value: 0x201002 |
|
|
# NOSORT: Name: C |
|
|
# NOSORT-NEXT: Value: 0x201001 |
|
|
# NOSORT: Name: GB |
|
|
# NOSORT-NEXT: Value: 0x20101C |
|
|
# NOSORT: Name: PP |
|
|
# NOSORT-NEXT: Value: 0x20101A |
|
|
# NOSORT: Name: QC |
|
|
# NOSORT-NEXT: Value: 0x20101B |
|
|
# NOSORT: Name: TS |
|
|
# NOSORT-NEXT: Value: 0x201019 |
|
|
# NOSORT: Name: _init |
|
|
# NOSORT-NEXT: Value: 0x20101D |
|
|
# NOSORT: Name: _init2 |
|
|
# NOSORT-NEXT: Value: 0x20101E |