[PATCH] RuntimeDyldElf: Add (trivial) support for R_X86_64_NONE, it's a no-op

Lang Hames via llvm-commits llvm-commits at lists.llvm.org
Tue Oct 18 12:33:39 PDT 2016


Hi Will,

If there's a way to produce this relocation with an assembly directive, I
would add a regression test along the lines of
test/ExecutionEngine/RuntimeDyld/X86/ELF-relaxed.s
. Otherwise, this looks good to me.

Cheers,
Lang.

On Thu, Oct 13, 2016 at 6:45 AM, Will Dietz via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> Ping?
>
> To help explain/motivate:
>
> Files with these relocations can be given to RuntimeDyld through an object
> or archive,
> and without this fix RuntimeDyld hits the "Relocation type not
> implemented" unreachable/assertion failure.
> (Not sure if any of our JIT's would produce the need for these, but maybe
> them too)
>
>
> Why this is correct:
>
> Searching the same file you can see how the equivalent relocation is
> handled on other architectures (R_ARM_NONE, R_MIPS_NONE), which is the
> same: do nothing :).
>
> I don't have a useful way to craft a test for this, but if that's a
> blocker please let me know and I'll see what I can do.
>
> Thanks! :)
>
> ~Will
>
> On Wed, Sep 21, 2016 at 9:28 AM Will Dietz <wdietz2 at illinois.edu> wrote:
>
>> Patch attached and reproduced below inline:
>> ----------------------
>> From 91f56e48e0d267c8647410652be57dd7ab69200b Mon Sep 17 00:00:00 2001
>> From: Will Dietz <w at wdtz.org>
>> Date: Wed, 27 Jul 2016 07:20:37 -0500
>> Subject: [PATCH] RuntimeDyldELF: Don't abort on R_X86_64_NONE, they're
>> no-ops.
>>
>> ---
>>  lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp |    2 ++
>>  1 files changed, 2 insertions(+), 0 deletions(-)
>>
>> diff --git a/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp
>> b/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp
>> index 9cbdb13..ec8fe3a 100644
>> --- a/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp
>> +++ b/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp
>> @@ -231,6 +231,8 @@ void RuntimeDyldELF::resolveX86_64Relocation(const
>> SectionEntry &Section,
>>    default:
>>      llvm_unreachable("Relocation type not implemented yet!");
>>      break;
>> +  case ELF::R_X86_64_NONE:
>> +    break;
>>    case ELF::R_X86_64_64: {
>>      support::ulittle64_t::ref(Section.getAddressWithOffset(Offset)) =
>>          Value + Addend;
>> --
>> 1.7.1
>>
>>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20161018/0c85becf/attachment.html>


More information about the llvm-commits mailing list