[lld] r253714 - [ELF/AArch64] Add support for LDST8_ABS_LO12_NC/LDST64_ABS_LO12_NC.
Rui Ueyama via llvm-commits
llvm-commits at lists.llvm.org
Fri Nov 20 13:43:14 PST 2015
On Fri, Nov 20, 2015 at 1:35 PM, Davide Italiano via llvm-commits <
llvm-commits at lists.llvm.org> wrote:
> Author: davide
> Date: Fri Nov 20 15:35:38 2015
> New Revision: 253714
>
> URL: http://llvm.org/viewvc/llvm-project?rev=253714&view=rev
> Log:
> [ELF/AArch64] Add support for LDST8_ABS_LO12_NC/LDST64_ABS_LO12_NC.
>
> These two relocations where the only missing step to get a dynamically
> linked (with libc) "hello world" on FreeBSD.
>
Cool! Congratulations!
>
> Modified:
> lld/trunk/ELF/Target.cpp
> lld/trunk/test/ELF/aarch64-relocs.s
>
> Modified: lld/trunk/ELF/Target.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/ELF/Target.cpp?rev=253714&r1=253713&r2=253714&view=diff
>
> ==============================================================================
> --- lld/trunk/ELF/Target.cpp (original)
> +++ lld/trunk/ELF/Target.cpp Fri Nov 20 15:35:38 2015
> @@ -742,10 +742,18 @@ void AArch64TargetInfo::relocateOne(uint
> or32le(Loc, (X & 0x0FFFFFFC) >> 2);
> break;
> }
> + case R_AARCH64_LDST32_ABS_LO12_NC:
> + // No overflow check needed.
> + or32le(Loc, (SA & 0xFFC) << 8);
> + break;
> case R_AARCH64_LDST64_ABS_LO12_NC:
> // No overflow check needed.
> or32le(Loc, (SA & 0xFF8) << 7);
> break;
> + case R_AARCH64_LDST8_ABS_LO12_NC:
> + // No overflow check needed.
> + or32le(Loc, (SA & 0xFFF) << 10);
> + break;
> case R_AARCH64_PREL16:
> if (!isInt<16>(SA))
> error("Relocation R_AARCH64_PREL16 out of range");
>
> Modified: lld/trunk/test/ELF/aarch64-relocs.s
> URL:
> http://llvm.org/viewvc/llvm-project/lld/trunk/test/ELF/aarch64-relocs.s?rev=253714&r1=253713&r2=253714&view=diff
>
> ==============================================================================
> --- lld/trunk/test/ELF/aarch64-relocs.s (original)
> +++ lld/trunk/test/ELF/aarch64-relocs.s Fri Nov 20 15:35:38 2015
> @@ -92,3 +92,31 @@ jump26:
> # CHECK: Disassembly of section .R_AARCH64_JUMP26:
> # CHECK-NEXT: jump26:
> # CHECK-NEXT: 11038: fe ff ff 17 b #-8
> +
> +.section .R_AARCH64_LDST32_ABS_LO12_NC,"ax", at progbits
> +ldst32:
> + ldr s4, [x5, :lo12:foo32]
> +foo32:
> + .asciz "foo"
> + .size mystr, 3
> +
> +# S = 0x1103c, A = 0x4
> +# R = ((S + A) & 0xFFC) << 8 = 0x00004000
> +# 0x00004000 | 0xbd4000a4 = 0xbd4040a4
> +# CHECK: Disassembly of section .R_AARCH64_LDST32_ABS_LO12_NC:
> +# CHECK-NEXT: ldst32:
> +# CHECK-NEXT: 1103c: a4 40 40 bd ldr s4, [x5, #64]
> +
> +.section .R_AARCH64_LDST8_ABS_LO12_NC,"ax", at progbits
> +ldst8:
> + ldrsb x11, [x13, :lo12:foo8]
> +foo8:
> + .asciz "foo"
> + .size mystr, 3
> +
> +# S = 0x11044, A = 0x4
> +# R = ((S + A) & 0xFFF) << 10 = 0x00012000
> +# 0x00012000 | 0x398001ab = 0x398121ab
> +# CHECK: Disassembly of section .R_AARCH64_LDST8_ABS_LO12_NC:
> +# CHECK-NEXT: ldst8:
> +# CHECK-NEXT: 11044: ab 21 81 39 ldrsb x11, [x13, #72]
>
>
> _______________________________________________
> 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/20151120/7515969d/attachment.html>
More information about the llvm-commits
mailing list