[llvm-commits] RuntimeDyLd new features

Bendersky, Eli eli.bendersky at intel.com
Tue Feb 7 21:59:39 PST 2012


Hi Danil,

We're currently working on getting MCJIT running on ELF (http://lists.cs.uiuc.edu/pipermail/llvmdev/2012-January/046671.html), and a couple of patches were already committed. There's another patch, currently pending a review (http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20120130/135997.html) with further changes that make MCJIT on ELF (Linux) pass 100% of ExecutionEngine tests (all the same tests JIT passes), as well as supporting MCJIT debugging with GDB.

How does your patch relate to this work? It may be a good idea to discuss all the requirements and possible solutions and come up with a design that suits everyone. Otherwise it's hard to review and reason about several large & conflicting patches to the same area of code.

Eli





From: llvm-commits-bounces at cs.uiuc.edu [mailto:llvm-commits-bounces at cs.uiuc.edu] On Behalf Of Danil Malyshev
Sent: Tuesday, February 07, 2012 22:24
To: llvm-commits at cs.uiuc.edu
Subject: [llvm-commits] RuntimeDyLd new features

Hello everyone,

Please review the RuntimeDyLd-01.patch.
This patch makes the following changes:

1. The main works will made in the RuntimeDyLdImpl with uses the ObjectFile class. RuntimeDyLdMachO and RuntimeDyLdELF now only parses relocations and resolve it. This is allows to make improvements of the RuntimeDyLd more easily. In addition the support for COFF can be easily added.

2. Added ARM relocations to RuntimeDyLdELF.

3. Added support for stub functions for the ARM, allowing to do a long branch.

4. Added support for external functions that are not loaded from the object files, but can be loaded from external libraries. Now MCJIT can correctly execute the code containing the printf, putc, and etc.

5. The sections emitted instead functions, thanks Jim Grosbach. MemoryManager.startFunctionBody() and MemoryManager.endFunctionBody() have been removed.

6. MCJITMemoryManager.allocateDataSection() and MCJITMemoryManager. allocateCodeSection() used JMM->allocateSpace() instead of JMM->allocateCodeSection() and JMM->allocateDataSection(), because I got an error: "Cannot allocate an allocated block!" with object file contains more than one code or data sections.

7. Fixed ELF::R_X86_64_PC32 relocation for the case when RealOffset is negative value.

8. Added new testing folder: ExecutionEngine/MCJIT because mcjit tests can be running only for x86 and arm and it's can be filtered with dg.exp.

Tested in Ubuntu x86_64, Ubuntu armv7 and MacOS 64.

Thank you,
Danil
---------------------------------------------------------------------
Intel Israel (74) Limited

This e-mail and any attachments may contain confidential material for
the sole use of the intended recipient(s). Any review or distribution
by others is strictly prohibited. If you are not the intended
recipient, please contact the sender and delete all copies.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20120208/8d1ddcc9/attachment.html>


More information about the llvm-commits mailing list