150 lines · plain
1## This test makes sure we can extract the instrumentation map from an2## XRay-instrumented PIE file.3 4## Generated from the following source:5## __attribute__((xray_always_instrument)) void foo() {}6## __attribute__((xray_always_instrument)) void bar() {}7## __attribute__((xray_always_instrument)) void jar() {}8## Built with the following arguments:9## -target armv7a-linux-androideabi -nostdlib -fxray-instrument -fPIC -shared10 11--- !ELF12FileHeader:13 Class: ELFCLASS3214 Data: ELFDATA2LSB15 Type: ET_DYN16 Machine: EM_ARM17 Flags: [ EF_ARM_SOFT_FLOAT, EF_ARM_EABI_VER5 ]18 Entry: 0x00000000000012B019ProgramHeaders:20 - Type: PT_LOAD21 Flags: [ PF_R ]22 FirstSec: .rel.dyn23 LastSec: .rel.dyn24 Align: 0x000000000000100025 - Type: PT_LOAD26 Flags: [ PF_X, PF_R ]27 FirstSec: .text28 LastSec: .text29 VAddr: 0x00000000000012B030 Align: 0x000000000000100031 - Type: PT_LOAD32 Flags: [ PF_W, PF_R ]33 FirstSec: xray_instr_map34 LastSec: xray_fn_idx35 VAddr: 0x00000000000033CC36 Align: 0x000000000000100037Sections:38 - Name: .rel.dyn39 Type: SHT_REL40 Flags: [ SHF_ALLOC ]41 Address: 0x000000000000020042 Link: .dynsym43 AddressAlign: 0x000000000000000444 Relocations:45 - Offset: 0x00000000000033CC46 Type: R_ARM_RELATIVE47 - Offset: 0x00000000000033DC48 Type: R_ARM_RELATIVE49 - Offset: 0x00000000000033EC50 Type: R_ARM_RELATIVE51 - Offset: 0x00000000000033FC52 Type: R_ARM_RELATIVE53 - Offset: 0x000000000000340C54 Type: R_ARM_RELATIVE55 - Offset: 0x000000000000341C56 Type: R_ARM_RELATIVE57 - Offset: 0x000000000000343058 Type: R_ARM_RELATIVE59 - Offset: 0x000000000000343460 Type: R_ARM_RELATIVE61 - Offset: 0x000000000000343862 Type: R_ARM_RELATIVE63 - Offset: 0x000000000000343C64 Type: R_ARM_RELATIVE65 - Offset: 0x000000000000344066 Type: R_ARM_RELATIVE67 - Offset: 0x000000000000344468 Type: R_ARM_RELATIVE69 - Offset: 0x00000000000033F070 Symbol: _Z3barv71 Type: R_ARM_ABS3272 - Offset: 0x000000000000340073 Symbol: _Z3barv74 Type: R_ARM_ABS3275 - Offset: 0x00000000000033D076 Symbol: _Z3foov77 Type: R_ARM_ABS3278 - Offset: 0x00000000000033E079 Symbol: _Z3foov80 Type: R_ARM_ABS3281 - Offset: 0x000000000000341082 Symbol: _Z3jarv83 Type: R_ARM_ABS3284 - Offset: 0x000000000000342085 Symbol: _Z3jarv86 Type: R_ARM_ABS3287 - Name: .text88 Type: SHT_PROGBITS89 Flags: [ SHF_ALLOC, SHF_EXECINSTR ]90 Address: 0x00000000000012B091 AddressAlign: 0x000000000000000492 Size: 18093 - Name: xray_instr_map94 Type: SHT_PROGBITS95 Flags: [ SHF_WRITE, SHF_ALLOC, SHF_LINK_ORDER ]96 Address: 0x00000000000033CC97 Link: .text98 AddressAlign: 0x000000000000000199 Content: B0120000000000000001000000000000CC120000000000000101000000000000EC120000000000000001000000000000081300000000000001010000000000002813000000000000000100000000000044130000000000000101000000000000100 - Name: xray_fn_idx101 Type: SHT_PROGBITS102 Flags: [ SHF_WRITE, SHF_ALLOC, SHF_LINK_ORDER ]103 Address: 0x0000000000003430104 Link: .text105 AddressAlign: 0x0000000000000008106 Content: CC330000EC330000EC3300000C3400000C3400002C340000107DynamicSymbols:108 - Name: _Z3barv109 Type: STT_FUNC110 Section: .text111 Binding: STB_GLOBAL112 Value: 0x00000000000012EC113 Size: 0x000000000000003C114 - Name: _Z3foov115 Type: STT_FUNC116 Section: .text117 Binding: STB_GLOBAL118 Value: 0x00000000000012B0119 Size: 0x000000000000003C120 - Name: _Z3jarv121 Type: STT_FUNC122 Section: .text123 Binding: STB_GLOBAL124 Value: 0x0000000000001328125 Size: 0x000000000000003C126...127 128# RUN: yaml2obj %s -o %t.so129# RUN: llvm-xray extract %t.so -s | FileCheck %s130 131# CHECK: ---132# CHECK-NEXT: - { id: 1, address: 0x12B0, function: 0x12B0, kind: function-enter, always-instrument: true, function-name: 'foo()' }133# CHECK-NEXT: - { id: 1, address: 0x12CC, function: 0x12B0, kind: function-exit, always-instrument: true, function-name: 'foo()' }134# CHECK-NEXT: - { id: 2, address: 0x12EC, function: 0x12EC, kind: function-enter, always-instrument: true, function-name: 'bar()' }135# CHECK-NEXT: - { id: 2, address: 0x1308, function: 0x12EC, kind: function-exit, always-instrument: true, function-name: 'bar()' }136# CHECK-NEXT: - { id: 3, address: 0x1328, function: 0x1328, kind: function-enter, always-instrument: true, function-name: 'jar()' }137# CHECK-NEXT: - { id: 3, address: 0x1344, function: 0x1328, kind: function-exit, always-instrument: true, function-name: 'jar()' }138# CHECK-NEXT: ...139 140# RUN: llvm-xray extract -s --no-demangle %t.so | FileCheck --check-prefix=MANGLED %s141 142# MANGLED: ---143# MANGLED-NEXT: - { id: 1, address: 0x12B0, function: 0x12B0, kind: function-enter, always-instrument: true, function-name: _Z3foov }144# MANGLED-NEXT: - { id: 1, address: 0x12CC, function: 0x12B0, kind: function-exit, always-instrument: true, function-name: _Z3foov }145# MANGLED-NEXT: - { id: 2, address: 0x12EC, function: 0x12EC, kind: function-enter, always-instrument: true, function-name: _Z3barv }146# MANGLED-NEXT: - { id: 2, address: 0x1308, function: 0x12EC, kind: function-exit, always-instrument: true, function-name: _Z3barv }147# MANGLED-NEXT: - { id: 3, address: 0x1328, function: 0x1328, kind: function-enter, always-instrument: true, function-name: _Z3jarv }148# MANGLED-NEXT: - { id: 3, address: 0x1344, function: 0x1328, kind: function-exit, always-instrument: true, function-name: _Z3jarv }149# MANGLED-NEXT: ...150