#include "OutputSections.h"
#include "Symbols.h"
#include "SyntheticSections.h"
#include "Target.h"
#include "lld/Common/ErrorHandler.h"
#include "llvm/BinaryFormat/ELF.h"
#include "llvm/Support/Endian.h"
usingnamespacellvm;
usingnamespacellvm::support::endian;
usingnamespacellvm::ELF;
usingnamespacelld;
usingnamespacelld::elf;
namespace {
class SystemZ : public TargetInfo { … };
}
SystemZ::SystemZ(Ctx &ctx) : … { … }
RelExpr SystemZ::getRelExpr(RelType type, const Symbol &s,
const uint8_t *loc) const { … }
void SystemZ::writeGotHeader(uint8_t *buf) const { … }
void SystemZ::writeGotPlt(uint8_t *buf, const Symbol &s) const { … }
void SystemZ::writeIgotPlt(uint8_t *buf, const Symbol &s) const { … }
void SystemZ::writePltHeader(uint8_t *buf) const { … }
void SystemZ::addPltHeaderSymbols(InputSection &isec) const { … }
void SystemZ::writePlt(uint8_t *buf, const Symbol &sym,
uint64_t pltEntryAddr) const { … }
int64_t SystemZ::getImplicitAddend(const uint8_t *buf, RelType type) const { … }
RelType SystemZ::getDynRel(RelType type) const { … }
RelExpr SystemZ::adjustTlsExpr(RelType type, RelExpr expr) const { … }
int SystemZ::getTlsGdRelaxSkip(RelType type) const { … }
void SystemZ::relaxTlsGdToIe(uint8_t *loc, const Relocation &rel,
uint64_t val) const { … }
void SystemZ::relaxTlsGdToLe(uint8_t *loc, const Relocation &rel,
uint64_t val) const { … }
void SystemZ::relaxTlsLdToLe(uint8_t *loc, const Relocation &rel,
uint64_t val) const { … }
RelExpr SystemZ::adjustGotPcExpr(RelType type, int64_t addend,
const uint8_t *loc) const { … }
bool SystemZ::relaxOnce(int pass) const { … }
void SystemZ::relaxGot(uint8_t *loc, const Relocation &rel,
uint64_t val) const { … }
void SystemZ::relocate(uint8_t *loc, const Relocation &rel,
uint64_t val) const { … }
TargetInfo *elf::getSystemZTargetInfo(Ctx &ctx) { … }