|
18 | 18 | # RUN: llvm-readelf -d %t.exe | FileCheck --check-prefix=DYN-INIT %s |
19 | 19 | # RUN: llvm-readelf -l %t.exe | FileCheck --check-prefix=PH-INTERP %s |
20 | 20 | # RUN: llvm-readelf -r %t.exe | FileCheck --check-prefix=RELOC-PIE %s |
21 | | -# RUN: llvm-bolt %t.exe -o %t --instrument |
| 21 | +# RUN: llvm-bolt %t.exe -o %t --instrument | FileCheck --check-prefix=CHECK-BOLT-RT-EP %s |
22 | 22 | # RUN: llvm-readelf -hdrs %t | FileCheck --check-prefix=CHECK-INIT-EP %s |
23 | | -# RUN: llvm-bolt %t.exe -o %t-no-ep --instrument --runtime-lib-init-hook=init |
| 23 | +# RUN: llvm-bolt %t.exe -o %t-no-ep --instrument --runtime-lib-init-hook=init | FileCheck --check-prefix=CHECK-BOLT-RT-INIT %s |
24 | 24 | # RUN: llvm-readelf -hdrs %t-no-ep | FileCheck --check-prefix=CHECK-INIT-NO-EP %s |
25 | | -# RUN: llvm-bolt %t.exe -o %t-no-ep --instrument --runtime-lib-init-hook=init_array |
| 25 | +# RUN: llvm-bolt %t.exe -o %t-no-ep --instrument --runtime-lib-init-hook=init_array | FileCheck --check-prefix=CHECK-BOLT-RT-INIT-ARRAY %s |
26 | 26 | # RUN: llvm-readelf -hdrs %t-no-ep | FileCheck --check-prefix=CHECK-INIT-ARRAY-NO-EP %s |
27 | 27 |
|
28 | 28 | # RUN: %clang -shared %cflags -pie %s -Wl,-q -o %t-shared.exe |
29 | 29 | # RUN: llvm-readelf -d %t-shared.exe | FileCheck --check-prefix=DYN-INIT %s |
30 | 30 | # RUN: llvm-readelf -l %t-shared.exe | FileCheck --check-prefix=PH-INTERP-SHARED %s |
31 | 31 | # RUN: llvm-readelf -r %t-shared.exe | FileCheck --check-prefix=RELOC-SHARED-PIE %s |
32 | | -# RUN: llvm-bolt %t-shared.exe -o %t-shared --instrument |
| 32 | +# RUN: llvm-bolt %t-shared.exe -o %t-shared --instrument | FileCheck --check-prefix=CHECK-BOLT-RT-INIT %s |
33 | 33 | # RUN: llvm-readelf -hdrs %t-shared | FileCheck --check-prefix=CHECK-SHARED-INIT %s |
34 | 34 |
|
35 | 35 | # RUN: %clang %cflags -pie %s -Wl,-q,-init=0 -o %t-no-init.exe |
36 | 36 | # RUN: llvm-readelf -d %t-no-init.exe | FileCheck --check-prefix=DYN-NO-INIT %s |
37 | 37 | # RUN: llvm-readelf -l %t-no-init.exe | FileCheck --check-prefix=PH-INTERP %s |
38 | 38 | # RUN: llvm-readelf -r %t-no-init.exe | FileCheck --check-prefix=RELOC-PIE %s |
39 | | -# RUN: llvm-bolt %t-no-init.exe -o %t-no-init --instrument |
| 39 | +# RUN: llvm-bolt %t-no-init.exe -o %t-no-init --instrument | FileCheck --check-prefix=CHECK-BOLT-RT-EP %s |
40 | 40 | # RUN: llvm-readelf -hdrs %t-no-init | FileCheck --check-prefix=CHECK-NO-INIT-EP %s |
41 | | -# RUN: llvm-bolt %t-no-init.exe -o %t-no-init-no-ep --instrument --runtime-lib-init-hook=init |
| 41 | +# RUN: llvm-bolt %t-no-init.exe -o %t-no-init-no-ep --instrument --runtime-lib-init-hook=init | FileCheck --check-prefix=CHECK-BOLT-RT-INIT-ARRAY %s |
42 | 42 | # RUN: llvm-readelf -hdrs %t-no-init-no-ep | FileCheck --check-prefix=CHECK-NO-INIT-NO-EP %s |
43 | 43 |
|
44 | 44 | # RUN: %clang -shared %cflags -pie %s -Wl,-q,-init=0 -o %t-shared-no-init.exe |
45 | 45 | # RUN: llvm-readelf -d %t-shared-no-init.exe | FileCheck --check-prefix=DYN-NO-INIT %s |
46 | 46 | # RUN: llvm-readelf -l %t-shared-no-init.exe | FileCheck --check-prefix=PH-INTERP-SHARED %s |
47 | 47 | # RUN: llvm-readelf -r %t-shared-no-init.exe | FileCheck --check-prefix=RELOC-SHARED-PIE %s |
48 | | -# RUN: llvm-bolt %t-shared-no-init.exe -o %t-shared-no-init --instrument |
| 48 | +# RUN: llvm-bolt %t-shared-no-init.exe -o %t-shared-no-init --instrument | FileCheck --check-prefix=CHECK-BOLT-RT-INIT-ARRAY %s |
49 | 49 | # RUN: llvm-readelf -drs %t-shared-no-init | FileCheck --check-prefix=CHECK-SHARED-NO-INIT %s |
50 | 50 |
|
51 | 51 | ## Create a dummy shared library to link against to force creation of the dynamic section. |
52 | 52 | # RUN: %clang %cflags %p/../Inputs/stub.c -fPIC -shared -o %t-stub.so |
53 | 53 | # RUN: %clang %cflags %s -no-pie -Wl,-q,-init=0 %t-stub.so -o %t-no-pie-no-init.exe |
54 | 54 | # RUN: llvm-readelf -r %t-no-pie-no-init.exe | FileCheck --check-prefix=RELOC-NO-PIE %s |
55 | | -# RUN: llvm-bolt %t-no-pie-no-init.exe -o %t-no-pie-no-init --instrument |
| 55 | +# RUN: llvm-bolt %t-no-pie-no-init.exe -o %t-no-pie-no-init --instrument | FileCheck --check-prefix=CHECK-BOLT-RT-EP %s |
56 | 56 | # RUN: llvm-readelf -hds %t-no-pie-no-init | FileCheck --check-prefix=CHECK-NO-PIE-NO-INIT-EP %s |
57 | 57 |
|
58 | 58 | ## With init: dynamic section should contain DT_INIT |
|
80 | 80 | ## Without PIE: binary should not have relative relocations |
81 | 81 | # RELOC-NO-PIE-NOT: R_AARCH64_RELATIVE |
82 | 82 |
|
| 83 | +## Check BOLT output output initialization hook (ELF Header Entry Point) |
| 84 | +# CHECK-BOLT-RT-EP: Runtime library initialization was hooked via ELF Header Entry Point |
| 85 | +# CHECK-BOLT-RT-EP-NOT: Runtime library initialization was hooked via DT_INIT |
| 86 | +# CHECK-BOLT-RT-EP-NOT: Runtime library initialization was hooked via 1st entry of .init_array |
| 87 | + |
| 88 | +## Check BOLT output output initialization hook (DT_INIT) |
| 89 | +# CHECK-BOLT-RT-INIT-NOT: Runtime library initialization was hooked via ELF Header Entry Point |
| 90 | +# CHECK-BOLT-RT-INIT: Runtime library initialization was hooked via DT_INIT |
| 91 | +# CHECK-BOLT-RT-INIT-NOT: Runtime library initialization was hooked via 1st entry of .init_array |
| 92 | + |
| 93 | +## Check BOLT output output initialization hook (1st entry of .init_array) |
| 94 | +# CHECK-BOLT-RT-INIT-ARRAY-NOT: Runtime library initialization was hooked via ELF Header Entry Point |
| 95 | +# CHECK-BOLT-RT-INIT-ARRAY-NOT: Runtime library initialization was hooked via DT_INIT |
| 96 | +# CHECK-BOLT-RT-INIT-ARRAY: Runtime library initialization was hooked via 1st entry of .init_array |
| 97 | + |
83 | 98 | ## Check that entry point address is set to __bolt_runtime_start for PIE executable with DT_INIT |
84 | 99 | # CHECK-INIT-EP: ELF Header: |
85 | 100 | # CHECK-INIT-EP: Entry point address: 0x[[#%x,EP_ADDR:]] |
|
0 commit comments