150 lines
6.3 KiB
Plaintext
150 lines
6.3 KiB
Plaintext
|
## 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: ...
|