[llvm] r214204 - [RuntimeDyld][AArch64] Make encode/decodeAddend more typesafe by using the relocation enum type. NFCI.

Lang Hames lhames at gmail.com
Tue Jul 29 16:03:18 PDT 2014


Oh nice. Thanks Juergen. :)


On Tue, Jul 29, 2014 at 12:57 PM, Juergen Ributzka <juergen at apple.com>
wrote:

> Author: ributzka
> Date: Tue Jul 29 14:57:11 2014
> New Revision: 214204
>
> URL: http://llvm.org/viewvc/llvm-project?rev=214204&view=rev
> Log:
> [RuntimeDyld][AArch64] Make encode/decodeAddend more typesafe by using the
> relocation enum type. NFCI.
>
> Modified:
>     llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cpp
>     llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.h
>
> llvm/trunk/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldMachOAArch64.h
>
> Modified: llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cpp?rev=214204&r1=214203&r2=214204&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cpp
> (original)
> +++ llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.cpp Tue
> Jul 29 14:57:11 2014
> @@ -28,7 +28,7 @@ using namespace llvm::object;
>  namespace llvm {
>
>  int64_t RuntimeDyldMachO::decodeAddend(uint8_t *LocalAddress, unsigned
> NumBytes,
> -                                       uint32_t RelType) const {
> +                                       MachO::RelocationInfoType) const {
>    int64_t Addend = 0;
>    memcpy(&Addend, LocalAddress, NumBytes);
>    return Addend;
>
> Modified: llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.h?rev=214204&r1=214203&r2=214204&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.h
> (original)
> +++ llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldMachO.h Tue Jul
> 29 14:57:11 2014
> @@ -54,7 +54,7 @@ protected:
>
>    /// Extract the addend encoded in the instruction.
>    int64_t decodeAddend(uint8_t *LocalAddress, unsigned NumBytes,
> -                       uint32_t RelType) const;
> +                       MachO::RelocationInfoType RelType) const;
>
>    /// Construct a RelocationValueRef representing the relocation target.
>    /// For Symbols in known sections, this will return a RelocationValueRef
> @@ -138,7 +138,8 @@ protected:
>      RI->getOffset(Offset);
>      uint8_t *LocalAddress = Section.Address + Offset;
>      unsigned NumBytes = 1 << Size;
> -    uint32_t RelType = Obj.getAnyRelocationType(RelInfo);
> +    MachO::RelocationInfoType RelType =
> +
>  static_cast<MachO::RelocationInfoType>(Obj.getAnyRelocationType(RelInfo));
>      int64_t Addend = impl().decodeAddend(LocalAddress, NumBytes, RelType);
>
>      return RelocationEntry(SectionID, Offset, RelType, Addend, IsPCRel,
> Size);
>
> Modified:
> llvm/trunk/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldMachOAArch64.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldMachOAArch64.h?rev=214204&r1=214203&r2=214204&view=diff
>
> ==============================================================================
> ---
> llvm/trunk/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldMachOAArch64.h
> (original)
> +++
> llvm/trunk/lib/ExecutionEngine/RuntimeDyld/Targets/RuntimeDyldMachOAArch64.h
> Tue Jul 29 14:57:11 2014
> @@ -28,7 +28,7 @@ public:
>
>    /// Extract the addend encoded in the instruction / memory location.
>    int64_t decodeAddend(uint8_t *LocalAddress, unsigned NumBytes,
> -                       uint32_t RelType) const {
> +                       MachO::RelocationInfoType RelType) const {
>      int64_t Addend = 0;
>      // Verify that the relocation has the correct size and alignment.
>      switch (RelType) {
> @@ -120,7 +120,7 @@ public:
>    }
>
>    /// Extract the addend encoded in the instruction.
> -  void encodeAddend(uint8_t *LocalAddress, uint32_t RelType,
> +  void encodeAddend(uint8_t *LocalAddress, MachO::RelocationInfoType
> RelType,
>                      int64_t Addend) const {
>      // Verify that the relocation has the correct alignment.
>      switch (RelType) {
> @@ -285,8 +285,10 @@ public:
>
>      const SectionEntry &Section = Sections[RE.SectionID];
>      uint8_t *LocalAddress = Section.Address + RE.Offset;
> +    MachO::RelocationInfoType RelType =
> +      static_cast<MachO::RelocationInfoType>(RE.RelType);
>
> -    switch (RE.RelType) {
> +    switch (RelType) {
>      default:
>        llvm_unreachable("Invalid relocation type!");
>      case MachO::ARM64_RELOC_UNSIGNED: {
> @@ -304,7 +306,7 @@ public:
>        // Check if branch is in range.
>        uint64_t FinalAddress = Section.LoadAddress + RE.Offset;
>        int64_t PCRelVal = Value - FinalAddress + RE.Addend;
> -      encodeAddend(LocalAddress, RE.RelType, PCRelVal);
> +      encodeAddend(LocalAddress, RelType, PCRelVal);
>        break;
>      }
>      case MachO::ARM64_RELOC_GOT_LOAD_PAGE21:
> @@ -314,7 +316,7 @@ public:
>        uint64_t FinalAddress = Section.LoadAddress + RE.Offset;
>        int64_t PCRelVal =
>          ((Value + RE.Addend) & (-4096)) - (FinalAddress & (-4096));
> -      encodeAddend(LocalAddress, RE.RelType, PCRelVal);
> +      encodeAddend(LocalAddress, RelType, PCRelVal);
>        break;
>      }
>      case MachO::ARM64_RELOC_GOT_LOAD_PAGEOFF12:
> @@ -324,7 +326,7 @@ public:
>        Value += RE.Addend;
>        // Mask out the page address and only use the lower 12 bits.
>        Value &= 0xFFF;
> -      encodeAddend(LocalAddress, RE.RelType, Value);
> +      encodeAddend(LocalAddress, RelType, Value);
>        break;
>      }
>      case MachO::ARM64_RELOC_SUBTRACTOR:
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140729/c591296c/attachment.html>


More information about the llvm-commits mailing list