aboutsummaryrefslogtreecommitdiff
path: root/llvm/test/tools/llvm-xray/ARM/extract-instrmap.test
blob: 334c3e6104288a8c45c54b1757aa8103bbed42dd (plain)
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
## This test makes sure we can extract the instrumentation map from an
## XRay-instrumented PIE file.

## Generated from the following source:
## __attribute__((xray_always_instrument)) void foo() {}
## __attribute__((xray_always_instrument)) void bar() {}
## __attribute__((xray_always_instrument)) void jar() {}
## Built with the following arguments:
## -target armv7a-linux-androideabi -nostdlib -fxray-instrument -fPIC -shared

--- !ELF
FileHeader:
  Class:           ELFCLASS32
  Data:            ELFDATA2LSB
  Type:            ET_DYN
  Machine:         EM_ARM
  Flags:           [ EF_ARM_SOFT_FLOAT, EF_ARM_EABI_VER5 ]
  Entry:           0x00000000000012B0
ProgramHeaders:
  - Type:     PT_LOAD
    Flags:    [ PF_R ]
    FirstSec: .rel.dyn
    LastSec:  .rel.dyn
    Align:    0x0000000000001000
  - Type:     PT_LOAD
    Flags:    [ PF_X, PF_R ]
    FirstSec: .text
    LastSec:  .text
    VAddr:    0x00000000000012B0
    Align:    0x0000000000001000
  - Type:     PT_LOAD
    Flags:    [ PF_W, PF_R ]
    FirstSec: xray_instr_map
    LastSec:  xray_fn_idx
    VAddr:    0x00000000000033CC
    Align:    0x0000000000001000
Sections:
  - Name:            .rel.dyn
    Type:            SHT_REL
    Flags:           [ SHF_ALLOC ]
    Address:         0x0000000000000200
    Link:            .dynsym
    AddressAlign:    0x0000000000000004
    Relocations:
      - Offset:          0x00000000000033CC
        Type:            R_ARM_RELATIVE
      - Offset:          0x00000000000033DC
        Type:            R_ARM_RELATIVE
      - Offset:          0x00000000000033EC
        Type:            R_ARM_RELATIVE
      - Offset:          0x00000000000033FC
        Type:            R_ARM_RELATIVE
      - Offset:          0x000000000000340C
        Type:            R_ARM_RELATIVE
      - Offset:          0x000000000000341C
        Type:            R_ARM_RELATIVE
      - Offset:          0x0000000000003430
        Type:            R_ARM_RELATIVE
      - Offset:          0x0000000000003434
        Type:            R_ARM_RELATIVE
      - Offset:          0x0000000000003438
        Type:            R_ARM_RELATIVE
      - Offset:          0x000000000000343C
        Type:            R_ARM_RELATIVE
      - Offset:          0x0000000000003440
        Type:            R_ARM_RELATIVE
      - Offset:          0x0000000000003444
        Type:            R_ARM_RELATIVE
      - Offset:          0x00000000000033F0
        Symbol:          _Z3barv
        Type:            R_ARM_ABS32
      - Offset:          0x0000000000003400
        Symbol:          _Z3barv
        Type:            R_ARM_ABS32
      - Offset:          0x00000000000033D0
        Symbol:          _Z3foov
        Type:            R_ARM_ABS32
      - Offset:          0x00000000000033E0
        Symbol:          _Z3foov
        Type:            R_ARM_ABS32
      - Offset:          0x0000000000003410
        Symbol:          _Z3jarv
        Type:            R_ARM_ABS32
      - Offset:          0x0000000000003420
        Symbol:          _Z3jarv
        Type:            R_ARM_ABS32
  - Name:            .text
    Type:            SHT_PROGBITS
    Flags:           [ SHF_ALLOC, SHF_EXECINSTR ]
    Address:         0x00000000000012B0
    AddressAlign:    0x0000000000000004
    Size:            180
  - Name:            xray_instr_map
    Type:            SHT_PROGBITS
    Flags:           [ SHF_WRITE, SHF_ALLOC, SHF_LINK_ORDER ]
    Address:         0x00000000000033CC
    Link:            .text
    AddressAlign:    0x0000000000000001
    Content:         B0120000000000000001000000000000CC120000000000000101000000000000EC120000000000000001000000000000081300000000000001010000000000002813000000000000000100000000000044130000000000000101000000000000
  - Name:            xray_fn_idx
    Type:            SHT_PROGBITS
    Flags:           [ SHF_WRITE, SHF_ALLOC, SHF_LINK_ORDER ]
    Address:         0x0000000000003430
    Link:            .text
    AddressAlign:    0x0000000000000008
    Content:         CC330000EC330000EC3300000C3400000C3400002C340000
DynamicSymbols:
  - Name:            _Z3barv
    Type:            STT_FUNC
    Section:         .text
    Binding:         STB_GLOBAL
    Value:           0x00000000000012EC
    Size:            0x000000000000003C
  - Name:            _Z3foov
    Type:            STT_FUNC
    Section:         .text
    Binding:         STB_GLOBAL
    Value:           0x00000000000012B0
    Size:            0x000000000000003C
  - Name:            _Z3jarv
    Type:            STT_FUNC
    Section:         .text
    Binding:         STB_GLOBAL
    Value:           0x0000000000001328
    Size:            0x000000000000003C
...

# RUN: yaml2obj %s -o %t.so
# RUN: llvm-xray extract %t.so -s | FileCheck %s

# CHECK:      ---
# CHECK-NEXT: - { id: 1, address: 0x12B0, function: 0x12B0, kind: function-enter, always-instrument: true, function-name: 'foo()' }
# CHECK-NEXT: - { id: 1, address: 0x12CC, function: 0x12B0, kind: function-exit, always-instrument: true, function-name: 'foo()' }
# CHECK-NEXT: - { id: 2, address: 0x12EC, function: 0x12EC, kind: function-enter, always-instrument: true, function-name: 'bar()' }
# CHECK-NEXT: - { id: 2, address: 0x1308, function: 0x12EC, kind: function-exit, always-instrument: true, function-name: 'bar()' }
# CHECK-NEXT: - { id: 3, address: 0x1328, function: 0x1328, kind: function-enter, always-instrument: true, function-name: 'jar()' }
# CHECK-NEXT: - { id: 3, address: 0x1344, function: 0x1328, kind: function-exit, always-instrument: true, function-name: 'jar()' }
# CHECK-NEXT: ...

# RUN: llvm-xray extract -s --no-demangle %t.so | FileCheck --check-prefix=MANGLED %s

# MANGLED:      ---
# MANGLED-NEXT: - { id: 1, address: 0x12B0, function: 0x12B0, kind: function-enter, always-instrument: true, function-name: _Z3foov }
# MANGLED-NEXT: - { id: 1, address: 0x12CC, function: 0x12B0, kind: function-exit, always-instrument: true, function-name: _Z3foov }
# MANGLED-NEXT: - { id: 2, address: 0x12EC, function: 0x12EC, kind: function-enter, always-instrument: true, function-name: _Z3barv }
# MANGLED-NEXT: - { id: 2, address: 0x1308, function: 0x12EC, kind: function-exit, always-instrument: true, function-name: _Z3barv }
# MANGLED-NEXT: - { id: 3, address: 0x1328, function: 0x1328, kind: function-enter, always-instrument: true, function-name: _Z3jarv }
# MANGLED-NEXT: - { id: 3, address: 0x1344, function: 0x1328, kind: function-exit, always-instrument: true, function-name: _Z3jarv }
# MANGLED-NEXT: ...