123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- //===---- aarch64.cpp - Generic JITLink aarch64 edge kinds, utilities -----===//
- //
- // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
- // See https://llvm.org/LICENSE.txt for license information.
- // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
- //
- //===----------------------------------------------------------------------===//
- //
- // Generic utilities for graphs representing aarch64 objects.
- //
- //===----------------------------------------------------------------------===//
- #include "llvm/ExecutionEngine/JITLink/aarch64.h"
- #define DEBUG_TYPE "jitlink"
- namespace llvm {
- namespace jitlink {
- namespace aarch64 {
- const char NullPointerContent[8] = {0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00};
- const char PointerJumpStubContent[12] = {
- 0x10, 0x00, 0x00, (char)0x90u, // ADRP x16, <imm>@page21
- 0x10, 0x02, 0x40, (char)0xf9u, // LDR x16, [x16, <imm>@pageoff12]
- 0x00, 0x02, 0x1f, (char)0xd6u // BR x16
- };
- const char *getEdgeKindName(Edge::Kind R) {
- switch (R) {
- case Pointer64:
- return "Pointer64";
- case Pointer32:
- return "Pointer32";
- case Delta64:
- return "Delta64";
- case Delta32:
- return "Delta32";
- case NegDelta64:
- return "NegDelta64";
- case NegDelta32:
- return "NegDelta32";
- case Branch26PCRel:
- return "Branch26PCRel";
- case MoveWide16:
- return "MoveWide16";
- case LDRLiteral19:
- return "LDRLiteral19";
- case Page21:
- return "Page21";
- case PageOffset12:
- return "PageOffset12";
- case RequestGOTAndTransformToPage21:
- return "RequestGOTAndTransformToPage21";
- case RequestGOTAndTransformToPageOffset12:
- return "RequestGOTAndTransformToPageOffset12";
- case RequestGOTAndTransformToDelta32:
- return "RequestGOTAndTransformToDelta32";
- case RequestTLVPAndTransformToPage21:
- return "RequestTLVPAndTransformToPage21";
- case RequestTLVPAndTransformToPageOffset12:
- return "RequestTLVPAndTransformToPageOffset12";
- case RequestTLSDescEntryAndTransformToPage21:
- return "RequestTLSDescEntryAndTransformToPage21";
- case RequestTLSDescEntryAndTransformToPageOffset12:
- return "RequestTLSDescEntryAndTransformToPageOffset12";
- default:
- return getGenericEdgeKindName(static_cast<Edge::Kind>(R));
- }
- }
- } // namespace aarch64
- } // namespace jitlink
- } // namespace llvm
|