#
f23dcb2f |
| 23-Mar-2023 |
Gulfem Savrun Yeniceri <gulfem@google.com> |
Revert "[JITLink] Initial AArch32 backend"
This reverts commit c2de8ff92753acdb1ace7a27cc11cb09f28eb8fa. It caused a segmentation fault while running ExecutionEngine tests on Mac. https://luci-milo.
Revert "[JITLink] Initial AArch32 backend"
This reverts commit c2de8ff92753acdb1ace7a27cc11cb09f28eb8fa. It caused a segmentation fault while running ExecutionEngine tests on Mac. https://luci-milo.appspot.com/ui/p/fuchsia/builders/toolchain.ci/clang-mac-x64/b8785839382041226465/overview
show more ...
|
#
c2de8ff9 |
| 23-Mar-2023 |
Stefan Gränitz <stefan.graenitz@gmail.com> |
[JITLink] Initial AArch32 backend
This first version lays the foundations for AArch32 support in JITLink. ELFLinkGraphBuilder_aarch32 processes REL-type relocations and populates LinkGraphs from ELF
[JITLink] Initial AArch32 backend
This first version lays the foundations for AArch32 support in JITLink. ELFLinkGraphBuilder_aarch32 processes REL-type relocations and populates LinkGraphs from ELF object files for both big- and little-endian systems. The ArmCfg member controls subarchitecture-specific details throughout the linking process (i.e. it's passed to ELFJITLinker_aarch32).
Relocation types follow the ABI documentation's division into classes: Data (endian-sensitive), Arm (32-bit little-endian) and Thumb (2x 16-bit little-endian, "Thumb32" in the docs). The implementation of instruction encoding/decoding for relocation resolution is implemented symmetrically and is testable in isolation (see AArch32 category in JITLinkTests).
Callable Thumb functions are marked with a ThumbSymbol target-flag and stored in the LinkGraph with their real addresses. The thumb-bit is added back in when the owning JITDylib requests the address for such a symbol.
The StubsManager can generate (absolute) Thumb-state stubs for branch range extensions on v7+ targets. Proper GOT/PLT handling is not yet implemented.
This patch is based on the backend implementation in ez-clang and has just enough functionality to model the infrastructure and link a Thumb function `main()` that calls `printf()` to dump "Hello Arm!" on Armv7a. It was tested on Raspberry Pi with 32-bit Raspbian OS.
Reviewed By: lhames
Differential Revision: https://reviews.llvm.org/D144083
show more ...
|
#
cf8dc9df |
| 22-Mar-2023 |
Stefan Gränitz <stefan.graenitz@gmail.com> |
[JITLink] Introduce target flags for Symbol and prepare ObjectLinkingLayer to account for them
AArch32 branch offsets explicitly encode the target instruction subset (Arm/Thumb) in their least signi
[JITLink] Introduce target flags for Symbol and prepare ObjectLinkingLayer to account for them
AArch32 branch offsets explicitly encode the target instruction subset (Arm/Thumb) in their least significant bit. We want this bit set (or clear) in addreses we hand out, but the addresses in the LinkGraph should be the real/physical addresses.
This patch allows ELFLinkGraphBuilder's to set target-specific flags in jitlink::Symbol and prepares ObjectLinkingLayer to account for them.
Reviewed By: lhames
Differential Revision: https://reviews.llvm.org/D146641
show more ...
|
Revision tags: llvmorg-16.0.0, llvmorg-16.0.0-rc4, llvmorg-16.0.0-rc3 |
|
#
3d4e9d5e |
| 11-Feb-2023 |
Lang Hames <lhames@gmail.com> |
[ORC] Move ORC-specific object format details into OrcShared.
This allows these details to be shared with JITLink, which is allowed to depend on the OrcShared library (but not on OrcJIT).
|
Revision tags: llvmorg-16.0.0-rc2 |
|
#
2aa85eca |
| 01-Feb-2023 |
Lang Hames <lhames@gmail.com> |
[ORC] Merge redundant jitlink::Symbol -> JITSymbolFlags mappings.
Adds a getJITSymbolFlagsForSymbol function that returns the JITSymbolFlags for a given jitlink::Symbol, and replaces severalredundan
[ORC] Merge redundant jitlink::Symbol -> JITSymbolFlags mappings.
Adds a getJITSymbolFlagsForSymbol function that returns the JITSymbolFlags for a given jitlink::Symbol, and replaces severalredundant copies of that mapping with calls to the new function. This fixes a bug in LinkGraphMaterializationUnit::scanLinkGraph where we were failing to set the JITSymbolFlags::Weak flag for weak symbols, and a bug in ObjectLinkingLayer::claimOrExternalizeWeakAndCommonSymbols where we were failing to set the JITSymbolFlags::Callable flag for callable symbols.
show more ...
|
Revision tags: llvmorg-16.0.0-rc1, llvmorg-17-init, llvmorg-15.0.7, llvmorg-15.0.6, llvmorg-15.0.5 |
|
#
bf6d7ca9 |
| 14-Nov-2022 |
Lang Hames <lhames@gmail.com> |
[ORC] Add JITDylib argument to ResourceManager notify-removing/transferring ops.
In some cases it's helpful to group trackers by JITDylib. E.g. Platform classes may want to track initializer symbols
[ORC] Add JITDylib argument to ResourceManager notify-removing/transferring ops.
In some cases it's helpful to group trackers by JITDylib. E.g. Platform classes may want to track initializer symbols with a `JITDylib -> Tracker -> [ Symbol ]` map. This makes it easy to collect all symbols for the JITDylib, while still allowing efficient removal of a single tracker. Passing the JITDylib as an argument to ResourceManager::notifyRemovingResources and ResourceManager::notifyTransferringResources supports such use-cases.
show more ...
|
#
988ab004 |
| 05-Dec-2022 |
Keith Smiley <keithbsmiley@gmail.com> |
[ORC] Extract hasInitializerSection for testing (NFC)
Based on the discussion in https://reviews.llvm.org/D130221 and https://reviews.llvm.org/D139223
Differential Revision: https://reviews.llvm.or
[ORC] Extract hasInitializerSection for testing (NFC)
Based on the discussion in https://reviews.llvm.org/D130221 and https://reviews.llvm.org/D139223
Differential Revision: https://reviews.llvm.org/D139347
show more ...
|
#
a996cc21 |
| 05-Dec-2022 |
Fangrui Song <i@maskray.me> |
Remove unused #include "llvm/ADT/Optional.h"
|
Revision tags: llvmorg-15.0.4 |
|
#
ba26b5ef |
| 29-Oct-2022 |
Lang Hames <lhames@gmail.com> |
[ORC] Mark late-claimed weak symbols as live in ObjectLinkingLayer.
ObjectLinkingLayer attempts to claim responsibility for weak definitions that are present in LinkGraphs, but not present in the co
[ORC] Mark late-claimed weak symbols as live in ObjectLinkingLayer.
ObjectLinkingLayer attempts to claim responsibility for weak definitions that are present in LinkGraphs, but not present in the corresponding MaterializationResponsibility object. Where such a claim is successful, the symbol should be marked as live to prevent it from being dead stripped.
(For the curious: Such "late-breaking" definitions are introduced somewhere in the materialization pipeline after the initial responsibility set is calculated. The usual source is the complier or assembler. Examples of common late-breaking definitions include personality pointers, e.g. "DW.ref.__gxx_personality_v0", and named constant pool entries, e.g. __realXX..XX.)
The failure to mark these symbols live caused few problems in practice because late-breaking definitions are usually anchored by existing live definitions within the graph (e.g. DW.ref.__gxx_personality_v0 is transitively referenced by functions via eh-frame records), and so they usually survived dead-stripping anyway. This accidental persistence isn't a principled solution though, and it fails altogether if a late-breaking definition is not otherwise referenced by the graph, with the result that the now-claimed symbol is stripped triggering a "Failed to materialize symbols" error in ORC. Marking such symbols live is the correct solution.
No testcase, as it's difficult to construct a situation where a late-breaking definition is inserted without being referenced outside the context of new backend bringup or plugin-specific shenanigans.
See discussion in https://reviews.llvm.org/D133452 and https://reviews.llvm.org/D136877.
show more ...
|
Revision tags: llvmorg-15.0.3, working, llvmorg-15.0.2 |
|
#
ffe2dda2 |
| 27-Sep-2022 |
Lang Hames <lhames@gmail.com> |
[ORC][JITLink] Retain Weak flags in JITDylib interfaces, propagate to LinkGraph.
Previously we stripped Weak flags from JITDylib symbol table entries once they were resolved (there was no particular
[ORC][JITLink] Retain Weak flags in JITDylib interfaces, propagate to LinkGraph.
Previously we stripped Weak flags from JITDylib symbol table entries once they were resolved (there was no particularly good reason for this). Now we want to retain them and query them when setting the Linkage on external symbols in LinkGraphs during symbol resolution (this was the motivation for 75404e9ef88). Making weak linkage of external definitions discoverable in the LinkGraph will in turn allow future plugins to implement correct handling for them (by recording locations that depend on exported weak definitions and pointing all of these at one chosen definition at runtime).
show more ...
|
Revision tags: llvmorg-15.0.1, llvmorg-15.0.0, llvmorg-15.0.0-rc3, llvmorg-15.0.0-rc2, llvmorg-15.0.0-rc1, llvmorg-16-init |
|
#
f331ccca |
| 21-Jul-2022 |
Keith Smiley <keithbsmiley@gmail.com> |
[ORC] Fix macho section name typo
I don't think __obj_selrefs is a thing, but __objc_selrefs definitely is.
Differential Revision: https://reviews.llvm.org/D130221
|
#
5cf0082a |
| 11-Aug-2022 |
Sunho Kim <ksunhokim123@gmail.com> |
[JITLink][COFF][x86_64] Implement SECTION/SECREL relocation.
Implements SECTION/SECREL relocation. These are used by debug info (pdb) data.
Reviewed By: lhames
Differential Revision: https://revie
[JITLink][COFF][x86_64] Implement SECTION/SECREL relocation.
Implements SECTION/SECREL relocation. These are used by debug info (pdb) data.
Reviewed By: lhames
Differential Revision: https://reviews.llvm.org/D130275
show more ...
|
Revision tags: llvmorg-14.0.6, llvmorg-14.0.5 |
|
#
2be5abb7 |
| 04-Jun-2022 |
Peter S. Housel <housel@acm.org> |
[ORC][ORC_RT] Handle ELF .init_array with non-default priority
ELF-based platforms currently support defining multiple static initializer table sections with differing priorities, for example .init_
[ORC][ORC_RT] Handle ELF .init_array with non-default priority
ELF-based platforms currently support defining multiple static initializer table sections with differing priorities, for example .init_array.0 or .init_array.100; the default .init_array corresponds to a priority of 65535. When building a shared library or executable, the system linker normally sorts these sections and combines them into a single .init_array section. This change adds the capability to recognize ELF static initializers with priorities other than the default, and to properly sort them by priority, to Orc and the Orc runtime.
Reviewed By: lhames
Differential Revision: https://reviews.llvm.org/D127056
show more ...
|
Revision tags: llvmorg-14.0.4, llvmorg-14.0.3, llvmorg-14.0.2, llvmorg-14.0.1, llvmorg-14.0.0, llvmorg-14.0.0-rc4, llvmorg-14.0.0-rc3 |
|
#
36f0dfd0 |
| 08-Mar-2022 |
Lang Hames <lhames@gmail.com> |
[ORC][JITLink] Fix MachO absolute symbol handling, add test case.
This patch removes the unintended resolution of locally scoped absolute symbols (which was causing unexpected definition errors).
I
[ORC][JITLink] Fix MachO absolute symbol handling, add test case.
This patch removes the unintended resolution of locally scoped absolute symbols (which was causing unexpected definition errors).
It stops using the JITSymbolFlags::Absolute flag (it isn't set or used elsewhere, and causes mismatch-flags asserts), and adds JITSymbolFlags::Exported to default scoped absolute symbols.
Finally, we now set the scope of absolute symbols correctly in MachOLinkGraphBuilder.
show more ...
|
Revision tags: llvmorg-14.0.0-rc2, llvmorg-14.0.0-rc1 |
|
#
3a3cb929 |
| 07-Feb-2022 |
Kazu Hirata <kazu@google.com> |
[llvm] Use = default (NFC)
|
Revision tags: llvmorg-15-init, llvmorg-13.0.1, llvmorg-13.0.1-rc3, llvmorg-13.0.1-rc2 |
|
#
089acf25 |
| 08-Jan-2022 |
Lang Hames <lhames@gmail.com> |
[ORC][JITLink] Merge JITLink AllocActionCall and ORC WrapperFunctionCall.
These types performed identical roles. Merging them simplifies interoperability between JITLink and ORC APIs (allowing us to
[ORC][JITLink] Merge JITLink AllocActionCall and ORC WrapperFunctionCall.
These types performed identical roles. Merging them simplifies interoperability between JITLink and ORC APIs (allowing us to address a few FIXMEs).
show more ...
|
#
118e953b |
| 06-Jan-2022 |
Lang Hames <lhames@gmail.com> |
Re-apply "[JITLink] Update JITLink to use ExecutorAddr rather... " with fixes.
This re-applies 133f86e95492b2a00b944e070878424cfa73f87c, which was reverted in c5965a411c635106a47738b8d2e24db822b7416
Re-apply "[JITLink] Update JITLink to use ExecutorAddr rather... " with fixes.
This re-applies 133f86e95492b2a00b944e070878424cfa73f87c, which was reverted in c5965a411c635106a47738b8d2e24db822b7416f while I investigated bot failures.
The original failure contained an arithmetic conversion think-o (on line 419 of EHFrameSupport.cpp) that could cause failures on 32-bit platforms. The issue should be fixed in this patch.
show more ...
|
#
c5965a41 |
| 06-Jan-2022 |
Lang Hames <lhames@gmail.com> |
Revert "[JITLink] Update JITLink to use ExecutorAddr rather than..."
This reverts commit 133f86e95492b2a00b944e070878424cfa73f87c while I investigate the bot failures at https://lab.llvm.org/buildbo
Revert "[JITLink] Update JITLink to use ExecutorAddr rather than..."
This reverts commit 133f86e95492b2a00b944e070878424cfa73f87c while I investigate the bot failures at https://lab.llvm.org/buildbot#builders/186/builds/3370.
show more ...
|
#
133f86e9 |
| 05-Jan-2022 |
Lang Hames <lhames@gmail.com> |
[JITLink] Update JITLink to use ExecutorAddr rather than JITTargetAddress.
ExecutorAddr is the preferred representation for executor process addresses now.
|
#
02fc8d5c |
| 16-Dec-2021 |
Lang Hames <lhames@gmail.com> |
[ORC] Add custom object interface support to StaticLibaryDefinitionGenerator.
This adds a GetObjectFileInterface callback member to StaticLibraryDefinitionGenerator, and adds an optional argument fo
[ORC] Add custom object interface support to StaticLibaryDefinitionGenerator.
This adds a GetObjectFileInterface callback member to StaticLibraryDefinitionGenerator, and adds an optional argument for initializing that member to StaticLibraryDefinitionGenerator's named constructors. If not supplied, it will default to getObjectFileInterface from ObjectFileInterface.h.
To enable testing a `-hidden-l<x>` option is added to the llvm-jitlink tool. This allows archives to be loaded with all contained symbol visibilities demoted to hidden.
The ObjectLinkingLayer::setOverrideObjectFlagsWithResponsibilityFlags method is (belatedly) hooked up, and enabled in llvm-jitlink when `-hidden-l<x>` is used so that the demotion is also applied at symbol resolution time (avoiding any "mismatched symbol flags" crashes).
show more ...
|
#
ae73f3fd |
| 07-Dec-2021 |
Lang Hames <lhames@gmail.com> |
[ORC] Add a MaterializationUnit::Interface struct.
MaterializationUnit::Interface holds the values that make up the interface (for ORC's purposes) of a materialization unit: the symbol flags map and
[ORC] Add a MaterializationUnit::Interface struct.
MaterializationUnit::Interface holds the values that make up the interface (for ORC's purposes) of a materialization unit: the symbol flags map and initializer symbol.
Having a type for this will make functions that build materializer interfaces more readable and maintainable.
show more ...
|
Revision tags: llvmorg-13.0.1-rc1 |
|
#
4c94760f |
| 19-Nov-2021 |
Ben Langmuir <blangmuir@apple.com> |
[ORC] Fix materialization of weak local symbols
We were adding all defined weak symbols to the materialization responsibility, but local symbols will not be in the symbol table, so it failed to mate
[ORC] Fix materialization of weak local symbols
We were adding all defined weak symbols to the materialization responsibility, but local symbols will not be in the symbol table, so it failed to materialize due to the "missing" symbol.
Local weak symbols come up in practice when using `ld -r` with a hidden weak symbol.
rdar://85574696
show more ...
|
#
2a739f27 |
| 12-Nov-2021 |
Ben Langmuir <blangmuir@apple.com> |
[ORC][ORC-RT] Register type metadata from __swift5_types MachO section
Similar to how the other swift sections are registered by the ORC runtime's macho platform, add the __swift5_types section, whi
[ORC][ORC-RT] Register type metadata from __swift5_types MachO section
Similar to how the other swift sections are registered by the ORC runtime's macho platform, add the __swift5_types section, which contains type metadata. Add a simple test that demonstrates that the swift runtime recognized the registered types.
rdar://85358530
Differential Revision: https://reviews.llvm.org/D113811
show more ...
|
#
bfb40e83 |
| 25-Oct-2021 |
Lang Hames <lhames@gmail.com> |
[ORC] Don't try to perform empty deallocations.
|
#
962a2479 |
| 12-Oct-2021 |
Lang Hames <lhames@gmail.com> |
Re-apply e50aea58d59, "Major JITLinkMemoryManager refactor". with fixes.
Adds explicit narrowing casts to JITLinkMemoryManager.cpp.
Honors -slab-address option in llvm-jitlink.cpp, which was accide
Re-apply e50aea58d59, "Major JITLinkMemoryManager refactor". with fixes.
Adds explicit narrowing casts to JITLinkMemoryManager.cpp.
Honors -slab-address option in llvm-jitlink.cpp, which was accidentally dropped in the refactor.
This effectively reverts commit 6641d29b70993bce6dbd7e0e0f1040753d38842f.
show more ...
|