Commit 74cb620
authored
Use indirect call in pre-checker function to avoid relocation in XIP mode (bytecodealliance#3142)
The stack profiler `aot_func#xxx` calls the wrapped function of `aot_func_internal#xxx`
by using symbol reference, but in some platform like xtensa, it’s translated into a native
long call, which needs to resolve the indirect address by relocation and breaks the XIP
feature which requires the eliminating of relocation.
The solution is to change the symbol reference into an indirect call through the lookup
table, the code will be like this:
```llvm
call_wrapped_func: ; preds = %stack_bound_check_block
%func_addr1 = getelementptr inbounds ptr, ptr %func_ptrs_ptr, i32 75
%func_tmp2 = load ptr, ptr %func_addr1, align 4
tail call void %func_tmp2(ptr %exec_env)
ret void
```1 parent 9c02cf3 commit 74cb620
File tree
4 files changed
+132
-17
lines changed- core/iwasm
- aot
- compilation
4 files changed
+132
-17
lines changed| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
2500 | 2500 | | |
2501 | 2501 | | |
2502 | 2502 | | |
| 2503 | + | |
2503 | 2504 | | |
2504 | | - | |
| 2505 | + | |
| 2506 | + | |
| 2507 | + | |
| 2508 | + | |
| 2509 | + | |
| 2510 | + | |
| 2511 | + | |
| 2512 | + | |
| 2513 | + | |
| 2514 | + | |
| 2515 | + | |
2505 | 2516 | | |
2506 | 2517 | | |
2507 | 2518 | | |
2508 | 2519 | | |
2509 | 2520 | | |
2510 | 2521 | | |
2511 | | - | |
| 2522 | + | |
2512 | 2523 | | |
2513 | 2524 | | |
2514 | 2525 | | |
| |||
2543 | 2554 | | |
2544 | 2555 | | |
2545 | 2556 | | |
2546 | | - | |
| 2557 | + | |
2547 | 2558 | | |
2548 | 2559 | | |
2549 | 2560 | | |
2550 | 2561 | | |
2551 | 2562 | | |
2552 | 2563 | | |
2553 | | - | |
| 2564 | + | |
2554 | 2565 | | |
2555 | 2566 | | |
2556 | 2567 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
1108 | 1108 | | |
1109 | 1109 | | |
1110 | 1110 | | |
1111 | | - | |
1112 | | - | |
| 1111 | + | |
| 1112 | + | |
| 1113 | + | |
| 1114 | + | |
| 1115 | + | |
| 1116 | + | |
| 1117 | + | |
| 1118 | + | |
| 1119 | + | |
| 1120 | + | |
| 1121 | + | |
| 1122 | + | |
| 1123 | + | |
1113 | 1124 | | |
1114 | | - | |
| 1125 | + | |
1115 | 1126 | | |
1116 | 1127 | | |
1117 | 1128 | | |
| |||
1133 | 1144 | | |
1134 | 1145 | | |
1135 | 1146 | | |
1136 | | - | |
1137 | | - | |
| 1147 | + | |
| 1148 | + | |
1138 | 1149 | | |
1139 | 1150 | | |
1140 | 1151 | | |
| |||
1144 | 1155 | | |
1145 | 1156 | | |
1146 | 1157 | | |
1147 | | - | |
1148 | | - | |
| 1158 | + | |
| 1159 | + | |
| 1160 | + | |
| 1161 | + | |
| 1162 | + | |
| 1163 | + | |
| 1164 | + | |
| 1165 | + | |
| 1166 | + | |
| 1167 | + | |
| 1168 | + | |
| 1169 | + | |
| 1170 | + | |
1149 | 1171 | | |
1150 | | - | |
| 1172 | + | |
1151 | 1173 | | |
1152 | 1174 | | |
1153 | 1175 | | |
| |||
1161 | 1183 | | |
1162 | 1184 | | |
1163 | 1185 | | |
1164 | | - | |
1165 | | - | |
| 1186 | + | |
| 1187 | + | |
1166 | 1188 | | |
1167 | 1189 | | |
1168 | 1190 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
179 | 179 | | |
180 | 180 | | |
181 | 181 | | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
| 189 | + | |
| 190 | + | |
| 191 | + | |
182 | 192 | | |
183 | 193 | | |
184 | 194 | | |
| |||
870 | 880 | | |
871 | 881 | | |
872 | 882 | | |
| 883 | + | |
| 884 | + | |
| 885 | + | |
| 886 | + | |
873 | 887 | | |
874 | 888 | | |
875 | 889 | | |
| |||
2595 | 2609 | | |
2596 | 2610 | | |
2597 | 2611 | | |
| 2612 | + | |
| 2613 | + | |
| 2614 | + | |
| 2615 | + | |
| 2616 | + | |
| 2617 | + | |
| 2618 | + | |
| 2619 | + | |
| 2620 | + | |
| 2621 | + | |
| 2622 | + | |
| 2623 | + | |
| 2624 | + | |
| 2625 | + | |
| 2626 | + | |
2598 | 2627 | | |
2599 | 2628 | | |
2600 | 2629 | | |
| 2630 | + | |
| 2631 | + | |
| 2632 | + | |
| 2633 | + | |
| 2634 | + | |
| 2635 | + | |
2601 | 2636 | | |
2602 | 2637 | | |
2603 | 2638 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
24 | 24 | | |
25 | 25 | | |
26 | 26 | | |
| 27 | + | |
| 28 | + | |
27 | 29 | | |
28 | 30 | | |
29 | 31 | | |
| |||
537 | 539 | | |
538 | 540 | | |
539 | 541 | | |
540 | | - | |
541 | | - | |
| 542 | + | |
| 543 | + | |
| 544 | + | |
| 545 | + | |
| 546 | + | |
| 547 | + | |
| 548 | + | |
| 549 | + | |
| 550 | + | |
| 551 | + | |
| 552 | + | |
| 553 | + | |
| 554 | + | |
| 555 | + | |
| 556 | + | |
| 557 | + | |
| 558 | + | |
| 559 | + | |
| 560 | + | |
| 561 | + | |
| 562 | + | |
| 563 | + | |
| 564 | + | |
| 565 | + | |
| 566 | + | |
| 567 | + | |
| 568 | + | |
| 569 | + | |
| 570 | + | |
| 571 | + | |
| 572 | + | |
| 573 | + | |
| 574 | + | |
| 575 | + | |
| 576 | + | |
| 577 | + | |
| 578 | + | |
| 579 | + | |
| 580 | + | |
| 581 | + | |
| 582 | + | |
| 583 | + | |
| 584 | + | |
| 585 | + | |
| 586 | + | |
542 | 587 | | |
543 | 588 | | |
544 | 589 | | |
| |||
734 | 779 | | |
735 | 780 | | |
736 | 781 | | |
737 | | - | |
| 782 | + | |
| 783 | + | |
| 784 | + | |
738 | 785 | | |
739 | 786 | | |
740 | 787 | | |
| |||
0 commit comments