aboutsummaryrefslogtreecommitdiff
path: root/flang/lib/Frontend/CompilerInvocation.cpp
diff options
context:
space:
mode:
authorJacek Caban <jacek@codeweavers.com>2024-09-30 20:26:55 +0200
committerGitHub <noreply@github.com>2024-09-30 20:26:55 +0200
commit18fa9fa0439d483060cee42412926565838822d4 (patch)
treed3031e269287067c32ef1bfbf3c4191cf6dc4a12 /flang/lib/Frontend/CompilerInvocation.cpp
parent9e85937b835e82846ab8db53586f0844e6783804 (diff)
downloadllvm-18fa9fa0439d483060cee42412926565838822d4.zip
llvm-18fa9fa0439d483060cee42412926565838822d4.tar.gz
llvm-18fa9fa0439d483060cee42412926565838822d4.tar.bz2
[LLD][COFF] Add support for ARM64EC delay-load imports (#110042)
Fill the regular delay-load IAT with x86_64 delay-load thunks. Similarly to regular imports, create an auxiliary IAT and its copy for ARM64EC calls. These are filled with the same `__impchk_` thunks used for regular imports, which perform an indirect call with `__icall_helper_arm64ec` on the regular delay-load IAT. These auxiliary IATs are exposed via CHPE metadata starting from version 2. The MSVC linker creates one more copy of the auxiliary IAT. `__imp_func` symbols refer to that hidden IAT, while the `#func` thunk performs a call with the public auxiliary IAT. If the public auxiliary IAT is fine for `#func`, it should be fine for calls using the `__imp_func` symbol as well. Therefore, I made `__imp_func` refer to that IAT too.
Diffstat (limited to 'flang/lib/Frontend/CompilerInvocation.cpp')
0 files changed, 0 insertions, 0 deletions