[JITLink][COFF] Initial COFF support.
authorSunho Kim <ksunhokim123@gmail.com>
Tue, 12 Jul 2022 18:50:37 +0000 (03:50 +0900)
committerSunho Kim <ksunhokim123@gmail.com>
Tue, 12 Jul 2022 18:52:43 +0000 (03:52 +0900)
commitdb995d72db14e58a3a81b0c2668bf788a61cc131
treed5bb7714cd53bc960e60d521b1866e28a7835640
parent8eaf00e04dba1b98acf8031b61d9488387a1066e
[JITLink][COFF] Initial COFF support.

Adds initial COFF support in JITLink. This is able to run a hello world c program in x86 windows successfully.

Implemented
- COFF object loader
- Static local symbols
- Absolute symbols
- External symbols
- Weak external symbols
- Common symbols
- COFF jitlink-check support
- All COMDAT selection type execpt largest
- Implicit symobl size calculation
- Rel32 relocation with PLT stub.
- IMAGE_REL_AMD64_ADDR32NB relocation

Reviewed By: lhames

Differential Revision: https://reviews.llvm.org/D128968
29 files changed:
llvm/include/llvm/ExecutionEngine/JITLink/COFF.h [new file with mode: 0644]
llvm/include/llvm/ExecutionEngine/JITLink/COFF_x86_64.h [new file with mode: 0644]
llvm/lib/ExecutionEngine/JITLink/CMakeLists.txt
llvm/lib/ExecutionEngine/JITLink/COFF.cpp [new file with mode: 0644]
llvm/lib/ExecutionEngine/JITLink/COFFLinkGraphBuilder.cpp [new file with mode: 0644]
llvm/lib/ExecutionEngine/JITLink/COFFLinkGraphBuilder.h [new file with mode: 0644]
llvm/lib/ExecutionEngine/JITLink/COFF_x86_64.cpp [new file with mode: 0644]
llvm/lib/ExecutionEngine/JITLink/JITLink.cpp
llvm/lib/ExecutionEngine/Orc/ObjectFileInterface.cpp
llvm/test/ExecutionEngine/JITLink/X86/COFF_abs.s [new file with mode: 0644]
llvm/test/ExecutionEngine/JITLink/X86/COFF_basic.s [new file with mode: 0644]
llvm/test/ExecutionEngine/JITLink/X86/COFF_comdat_any.test [new file with mode: 0644]
llvm/test/ExecutionEngine/JITLink/X86/COFF_comdat_associative.test [new file with mode: 0644]
llvm/test/ExecutionEngine/JITLink/X86/COFF_comdat_exact_match.test [new file with mode: 0644]
llvm/test/ExecutionEngine/JITLink/X86/COFF_comdat_largest.test [new file with mode: 0644]
llvm/test/ExecutionEngine/JITLink/X86/COFF_comdat_noduplicate.test [new file with mode: 0644]
llvm/test/ExecutionEngine/JITLink/X86/COFF_comdat_same_size.test [new file with mode: 0644]
llvm/test/ExecutionEngine/JITLink/X86/COFF_comdat_weak.s [new file with mode: 0644]
llvm/test/ExecutionEngine/JITLink/X86/COFF_common_symbol.s [new file with mode: 0644]
llvm/test/ExecutionEngine/JITLink/X86/COFF_external_func.s [new file with mode: 0644]
llvm/test/ExecutionEngine/JITLink/X86/COFF_external_var.s [new file with mode: 0644]
llvm/test/ExecutionEngine/JITLink/X86/COFF_file_debug.s [new file with mode: 0644]
llvm/test/ExecutionEngine/JITLink/X86/COFF_static_var.s [new file with mode: 0644]
llvm/test/ExecutionEngine/JITLink/X86/COFF_weak_external.s [new file with mode: 0644]
llvm/test/ExecutionEngine/JITLink/X86/COFF_x86-64_small_pic_relocations.s [new file with mode: 0644]
llvm/tools/llvm-jitlink/CMakeLists.txt
llvm/tools/llvm-jitlink/llvm-jitlink-coff.cpp [new file with mode: 0644]
llvm/tools/llvm-jitlink/llvm-jitlink.cpp
llvm/tools/llvm-jitlink/llvm-jitlink.h