[PATCH] D130479: [ORC][ORC_RT][COFF] Initial platform support for COFF/x86_64.

Sunho Kim via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Mon Jul 25 06:12:14 PDT 2022


sunho created this revision.
sunho added reviewers: lhames, sgraenitz.
Herald added subscribers: jsji, Enna1, StephenFan, pengfei, mgrang, hiraditya, mgorny.
Herald added a project: All.
sunho requested review of this revision.
Herald added a project: LLVM.
Herald added a subscriber: llvm-commits.

Initial platform support for COFF/x86_64.

Completed features:

- Statically linked orc runtime.
- Full linking/initialization of static/dynamic vc runtimes and microsoft stl libraries.
- SEH exception handling.
- Basic static initializers support
- JIT side symbol lookup/dispatch

Things to note:

- It uses vc runtime libraries found in vc toolchain installations.
- Bootstrapping state is separated because when statically linking orc runtime it needs microsoft stl functions to initialize the orc runtime, but static initializers need to be ran in order to fully initialize stl libraries.
- Process symbols can't be used blidnly on msvc platform; otherwise duplicate definition error gets generated. If process symbols are used, it's destined to get out-of-reach error at some point.
- dlfns are partially implemented. We might have to think whether we use the same interface as in *nix and macho or create API similar to Windows API.
- Atexit currently not handled -- will be handled in the follow-up patches.


https://reviews.llvm.org/D130479

Files:
  compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake
  compiler-rt/lib/orc/CMakeLists.txt
  compiler-rt/lib/orc/coff_platform.cpp
  compiler-rt/lib/orc/coff_platform.h
  compiler-rt/lib/orc/common.h
  compiler-rt/lib/orc/compiler.h
  compiler-rt/lib/orc/error.h
  compiler-rt/test/orc/TestCases/Windows/lit.local.cfg.py
  compiler-rt/test/orc/TestCases/Windows/x86-64/hello-world.c
  compiler-rt/test/orc/TestCases/Windows/x86-64/hello-world.cpp
  compiler-rt/test/orc/TestCases/Windows/x86-64/lit.local.cfg.py
  compiler-rt/test/orc/TestCases/Windows/x86-64/sehframe-handling.cpp
  compiler-rt/test/orc/TestCases/Windows/x86-64/static-initializer.cpp
  compiler-rt/test/orc/lit.cfg.py
  llvm/include/llvm/ExecutionEngine/Orc/COFFPlatform.h
  llvm/lib/ExecutionEngine/Orc/CMakeLists.txt
  llvm/lib/ExecutionEngine/Orc/COFFPlatform.cpp
  llvm/lib/ExecutionEngine/Orc/ObjectFileInterface.cpp
  llvm/tools/llvm-jitlink/llvm-jitlink.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D130479.447297.patch
Type: text/x-patch
Size: 62172 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220725/708af93d/attachment-0001.bin>


More information about the llvm-commits mailing list