#include "bolt/Core/Relocation.h"
#include "llvm/MC/MCContext.h"
#include "llvm/MC/MCExpr.h"
#include "llvm/MC/MCStreamer.h"
#include "llvm/MC/MCSymbol.h"
#include "llvm/Object/ELF.h"
usingnamespacellvm;
usingnamespacebolt;
namespace ELFReserved {
enum { … };
}
Triple::ArchType Relocation::Arch;
static bool isSupportedX86(uint64_t Type) { … }
static bool isSupportedAArch64(uint64_t Type) { … }
static bool isSupportedRISCV(uint64_t Type) { … }
static size_t getSizeForTypeX86(uint64_t Type) { … }
static size_t getSizeForTypeAArch64(uint64_t Type) { … }
static size_t getSizeForTypeRISCV(uint64_t Type) { … }
static bool skipRelocationTypeX86(uint64_t Type) { … }
static bool skipRelocationTypeAArch64(uint64_t Type) { … }
static bool skipRelocationTypeRISCV(uint64_t Type) { … }
static bool skipRelocationProcessX86(uint64_t &Type, uint64_t Contents) { … }
static bool skipRelocationProcessAArch64(uint64_t &Type, uint64_t Contents) { … }
static bool skipRelocationProcessRISCV(uint64_t &Type, uint64_t Contents) { … }
static uint64_t encodeValueX86(uint64_t Type, uint64_t Value, uint64_t PC) { … }
static uint64_t encodeValueAArch64(uint64_t Type, uint64_t Value, uint64_t PC) { … }
static uint64_t encodeValueRISCV(uint64_t Type, uint64_t Value, uint64_t PC) { … }
static uint64_t extractValueX86(uint64_t Type, uint64_t Contents, uint64_t PC) { … }
static uint64_t extractValueAArch64(uint64_t Type, uint64_t Contents,
uint64_t PC) { … }
static uint64_t extractUImmRISCV(uint32_t Contents) { … }
static uint64_t extractIImmRISCV(uint32_t Contents) { … }
static uint64_t extractSImmRISCV(uint32_t Contents) { … }
static uint64_t extractJImmRISCV(uint32_t Contents) { … }
static uint64_t extractBImmRISCV(uint32_t Contents) { … }
static uint64_t extractValueRISCV(uint64_t Type, uint64_t Contents,
uint64_t PC) { … }
static bool isGOTX86(uint64_t Type) { … }
static bool isGOTAArch64(uint64_t Type) { … }
static bool isGOTRISCV(uint64_t Type) { … }
static bool isTLSX86(uint64_t Type) { … }
static bool isTLSAArch64(uint64_t Type) { … }
static bool isTLSRISCV(uint64_t Type) { … }
static bool isPCRelativeX86(uint64_t Type) { … }
static bool isPCRelativeAArch64(uint64_t Type) { … }
static bool isPCRelativeRISCV(uint64_t Type) { … }
bool Relocation::isSupported(uint64_t Type) { … }
size_t Relocation::getSizeForType(uint64_t Type) { … }
bool Relocation::skipRelocationType(uint64_t Type) { … }
bool Relocation::skipRelocationProcess(uint64_t &Type, uint64_t Contents) { … }
uint64_t Relocation::encodeValue(uint64_t Type, uint64_t Value, uint64_t PC) { … }
uint64_t Relocation::extractValue(uint64_t Type, uint64_t Contents,
uint64_t PC) { … }
bool Relocation::isGOT(uint64_t Type) { … }
bool Relocation::isX86GOTPCRELX(uint64_t Type) { … }
bool Relocation::isX86GOTPC64(uint64_t Type) { … }
bool Relocation::isNone(uint64_t Type) { … }
bool Relocation::isRelative(uint64_t Type) { … }
bool Relocation::isIRelative(uint64_t Type) { … }
bool Relocation::isTLS(uint64_t Type) { … }
bool Relocation::isInstructionReference(uint64_t Type) { … }
uint64_t Relocation::getNone() { … }
uint64_t Relocation::getPC32() { … }
uint64_t Relocation::getPC64() { … }
bool Relocation::isPCRelative(uint64_t Type) { … }
uint64_t Relocation::getAbs64() { … }
uint64_t Relocation::getRelative() { … }
size_t Relocation::emit(MCStreamer *Streamer) const { … }
const MCExpr *Relocation::createExpr(MCStreamer *Streamer) const { … }
const MCExpr *Relocation::createExpr(MCStreamer *Streamer,
const MCExpr *RetainedValue) const { … }
MCBinaryExpr::Opcode Relocation::getComposeOpcodeFor(uint64_t Type) { … }
void Relocation::print(raw_ostream &OS) const { … }