diff options
| author | Denis Protivensky <dprotivensky@accesssoftek.com> | 2015-04-22 07:51:26 +0000 |
|---|---|---|
| committer | Denis Protivensky <dprotivensky@accesssoftek.com> | 2015-04-22 07:51:26 +0000 |
| commit | 4b0abddeeadbece3a97713806604db192fbbf53e (patch) | |
| tree | c89a85a0adc9669b28aac1146efccaa72b295507 /lld/lib/ReaderWriter/ELF/ARM | |
| parent | f6c8938edda1ef6037dd4d9a5bf77cea54b09651 (diff) | |
| download | bcm5719-llvm-4b0abddeeadbece3a97713806604db192fbbf53e.tar.gz bcm5719-llvm-4b0abddeeadbece3a97713806604db192fbbf53e.zip | |
[ARM] Implement veneers for dynamic executable linking
llvm-svn: 235486
Diffstat (limited to 'lld/lib/ReaderWriter/ELF/ARM')
| -rw-r--r-- | lld/lib/ReaderWriter/ELF/ARM/ARMRelocationPass.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/lld/lib/ReaderWriter/ELF/ARM/ARMRelocationPass.cpp b/lld/lib/ReaderWriter/ELF/ARM/ARMRelocationPass.cpp index 531d4e6a8aa..6badc5e0779 100644 --- a/lld/lib/ReaderWriter/ELF/ARM/ARMRelocationPass.cpp +++ b/lld/lib/ReaderWriter/ELF/ARM/ARMRelocationPass.cpp @@ -873,13 +873,19 @@ public: /// \brief Get the veneer for ARM B/BL instructions. const VeneerAtom *getVeneer_ARM_B_BL(const DefinedAtom *da, StringRef secName) { - llvm_unreachable("Handle ARM veneer"); + if (_ctx.getOutputELFType() == llvm::ELF::ET_EXEC) { + return getVeneer_ARM_B_BL_Abs(da, secName); + } + llvm_unreachable("Handle ARM veneer for DSOs"); } /// \brief Get the veneer for Thumb B/BL instructions. const VeneerAtom *getVeneer_THM_B_BL(const DefinedAtom *da, StringRef secName) { - llvm_unreachable("Handle Thumb veneer"); + if (_ctx.getOutputELFType() == llvm::ELF::ET_EXEC) { + return getVeneer_THM_B_BL_Abs(da, secName); + } + llvm_unreachable("Handle Thumb veneer for DSOs"); } /// \brief Create a GOT entry for R_ARM_TLS_TPOFF32 reloc. |

