forked from OSchip/llvm-project
				
			Do not use make<> to allocate TargetInfo. NFC.
llvm-svn: 305577
This commit is contained in:
		
							parent
							
								
									fb7654a8fc
								
							
						
					
					
						commit
						e145bc22fd
					
				| 
						 | 
				
			
			@ -8,7 +8,6 @@
 | 
			
		|||
//===----------------------------------------------------------------------===//
 | 
			
		||||
 | 
			
		||||
#include "Error.h"
 | 
			
		||||
#include "Memory.h"
 | 
			
		||||
#include "Symbols.h"
 | 
			
		||||
#include "SyntheticSections.h"
 | 
			
		||||
#include "Target.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -371,4 +370,7 @@ void AArch64::relaxTlsIeToLe(uint8_t *Loc, uint32_t Type, uint64_t Val) const {
 | 
			
		|||
  llvm_unreachable("invalid relocation for TLS IE to LE relaxation");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TargetInfo *elf::createAArch64TargetInfo() { return make<AArch64>(); }
 | 
			
		||||
TargetInfo *elf::getAArch64TargetInfo() {
 | 
			
		||||
  static AArch64 Target;
 | 
			
		||||
  return &Target;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,7 +9,6 @@
 | 
			
		|||
 | 
			
		||||
#include "Error.h"
 | 
			
		||||
#include "InputFiles.h"
 | 
			
		||||
#include "Memory.h"
 | 
			
		||||
#include "Symbols.h"
 | 
			
		||||
#include "Target.h"
 | 
			
		||||
#include "llvm/Object/ELF.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -79,4 +78,7 @@ RelExpr AMDGPU::getRelExpr(uint32_t Type, const SymbolBody &S,
 | 
			
		|||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TargetInfo *elf::createAMDGPUTargetInfo() { return make<AMDGPU>(); }
 | 
			
		||||
TargetInfo *elf::getAMDGPUTargetInfo() {
 | 
			
		||||
  static AMDGPU Target;
 | 
			
		||||
  return &Target;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,7 +9,6 @@
 | 
			
		|||
 | 
			
		||||
#include "Error.h"
 | 
			
		||||
#include "InputFiles.h"
 | 
			
		||||
#include "Memory.h"
 | 
			
		||||
#include "Symbols.h"
 | 
			
		||||
#include "SyntheticSections.h"
 | 
			
		||||
#include "Target.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -429,4 +428,7 @@ int64_t ARM::getImplicitAddend(const uint8_t *Buf, uint32_t Type) const {
 | 
			
		|||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TargetInfo *elf::createARMTargetInfo() { return make<ARM>(); }
 | 
			
		||||
TargetInfo *elf::getARMTargetInfo() {
 | 
			
		||||
  static ARM Target;
 | 
			
		||||
  return &Target;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -28,7 +28,6 @@
 | 
			
		|||
 | 
			
		||||
#include "Error.h"
 | 
			
		||||
#include "InputFiles.h"
 | 
			
		||||
#include "Memory.h"
 | 
			
		||||
#include "Symbols.h"
 | 
			
		||||
#include "Target.h"
 | 
			
		||||
#include "llvm/Object/ELF.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -75,4 +74,7 @@ void AVR::relocateOne(uint8_t *Loc, uint32_t Type, uint64_t Val) const {
 | 
			
		|||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TargetInfo *elf::createAVRTargetInfo() { return make<AVR>(); }
 | 
			
		||||
TargetInfo *elf::getAVRTargetInfo() {
 | 
			
		||||
  static AVR Target;
 | 
			
		||||
  return &Target;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,7 +9,6 @@
 | 
			
		|||
 | 
			
		||||
#include "Error.h"
 | 
			
		||||
#include "InputFiles.h"
 | 
			
		||||
#include "Memory.h"
 | 
			
		||||
#include "OutputSections.h"
 | 
			
		||||
#include "Symbols.h"
 | 
			
		||||
#include "SyntheticSections.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -412,11 +411,12 @@ bool MIPS<ELFT>::usesOnlyLowPageBits(uint32_t Type) const {
 | 
			
		|||
  return Type == R_MIPS_LO16 || Type == R_MIPS_GOT_OFST;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template <class ELFT> TargetInfo *elf::createMipsTargetInfo() {
 | 
			
		||||
  return make<MIPS<ELFT>>();
 | 
			
		||||
template <class ELFT> TargetInfo *elf::getMipsTargetInfo() {
 | 
			
		||||
  static MIPS<ELFT> Target;
 | 
			
		||||
  return &Target;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
template TargetInfo *elf::createMipsTargetInfo<ELF32LE>();
 | 
			
		||||
template TargetInfo *elf::createMipsTargetInfo<ELF32BE>();
 | 
			
		||||
template TargetInfo *elf::createMipsTargetInfo<ELF64LE>();
 | 
			
		||||
template TargetInfo *elf::createMipsTargetInfo<ELF64BE>();
 | 
			
		||||
template TargetInfo *elf::getMipsTargetInfo<ELF32LE>();
 | 
			
		||||
template TargetInfo *elf::getMipsTargetInfo<ELF32BE>();
 | 
			
		||||
template TargetInfo *elf::getMipsTargetInfo<ELF64LE>();
 | 
			
		||||
template TargetInfo *elf::getMipsTargetInfo<ELF64BE>();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,7 +8,6 @@
 | 
			
		|||
//===----------------------------------------------------------------------===//
 | 
			
		||||
 | 
			
		||||
#include "Error.h"
 | 
			
		||||
#include "Memory.h"
 | 
			
		||||
#include "Symbols.h"
 | 
			
		||||
#include "Target.h"
 | 
			
		||||
#include "llvm/Support/Endian.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -60,4 +59,7 @@ RelExpr PPC::getRelExpr(uint32_t Type, const SymbolBody &S,
 | 
			
		|||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TargetInfo *elf::createPPCTargetInfo() { return make<PPC>(); }
 | 
			
		||||
TargetInfo *elf::getPPCTargetInfo() {
 | 
			
		||||
  static PPC Target;
 | 
			
		||||
  return &Target;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -8,7 +8,6 @@
 | 
			
		|||
//===----------------------------------------------------------------------===//
 | 
			
		||||
 | 
			
		||||
#include "Error.h"
 | 
			
		||||
#include "Memory.h"
 | 
			
		||||
#include "Symbols.h"
 | 
			
		||||
#include "SyntheticSections.h"
 | 
			
		||||
#include "Target.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -212,4 +211,7 @@ void PPC64::relocateOne(uint8_t *Loc, uint32_t Type, uint64_t Val) const {
 | 
			
		|||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TargetInfo *elf::createPPC64TargetInfo() { return make<PPC64>(); }
 | 
			
		||||
TargetInfo *elf::getPPC64TargetInfo() {
 | 
			
		||||
  static PPC64 Target;
 | 
			
		||||
  return &Target;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,7 +9,6 @@
 | 
			
		|||
 | 
			
		||||
#include "Error.h"
 | 
			
		||||
#include "InputFiles.h"
 | 
			
		||||
#include "Memory.h"
 | 
			
		||||
#include "Symbols.h"
 | 
			
		||||
#include "SyntheticSections.h"
 | 
			
		||||
#include "Target.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -360,4 +359,7 @@ void X86::relaxTlsLdToLe(uint8_t *Loc, uint32_t Type, uint64_t Val) const {
 | 
			
		|||
  memcpy(Loc - 2, Inst, sizeof(Inst));
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TargetInfo *elf::createX86TargetInfo() { return make<X86>(); }
 | 
			
		||||
TargetInfo *elf::getX86TargetInfo() {
 | 
			
		||||
  static X86 Target;
 | 
			
		||||
  return &Target;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -9,7 +9,6 @@
 | 
			
		|||
 | 
			
		||||
#include "Error.h"
 | 
			
		||||
#include "InputFiles.h"
 | 
			
		||||
#include "Memory.h"
 | 
			
		||||
#include "Symbols.h"
 | 
			
		||||
#include "SyntheticSections.h"
 | 
			
		||||
#include "Target.h"
 | 
			
		||||
| 
						 | 
				
			
			@ -464,5 +463,12 @@ void X86_64<ELFT>::relaxGot(uint8_t *Loc, uint64_t Val) const {
 | 
			
		|||
  write32le(Loc - 1, Val + 1);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TargetInfo *elf::createX32TargetInfo() { return make<X86_64<ELF32LE>>(); }
 | 
			
		||||
TargetInfo *elf::createX86_64TargetInfo() { return make<X86_64<ELF64LE>>(); }
 | 
			
		||||
TargetInfo *elf::getX32TargetInfo() {
 | 
			
		||||
  static X86_64<ELF32LE> Target;
 | 
			
		||||
  return &Target;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TargetInfo *elf::getX86_64TargetInfo() {
 | 
			
		||||
  static X86_64<ELF64LE> Target;
 | 
			
		||||
  return &Target;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -912,7 +912,7 @@ getDefsym(opt::InputArgList &Args) {
 | 
			
		|||
template <class ELFT> void LinkerDriver::link(opt::InputArgList &Args) {
 | 
			
		||||
  SymbolTable<ELFT> Symtab;
 | 
			
		||||
  elf::Symtab<ELFT>::X = &Symtab;
 | 
			
		||||
  Target = createTarget();
 | 
			
		||||
  Target = getTarget();
 | 
			
		||||
 | 
			
		||||
  Config->MaxPageSize = getMaxPageSize(Args);
 | 
			
		||||
  Config->ImageBase = getImageBase(Args);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -47,40 +47,40 @@ std::string lld::toString(uint32_t Type) {
 | 
			
		|||
  return S;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
TargetInfo *elf::createTarget() {
 | 
			
		||||
TargetInfo *elf::getTarget() {
 | 
			
		||||
  switch (Config->EMachine) {
 | 
			
		||||
  case EM_386:
 | 
			
		||||
  case EM_IAMCU:
 | 
			
		||||
    return createX86TargetInfo();
 | 
			
		||||
    return getX86TargetInfo();
 | 
			
		||||
  case EM_AARCH64:
 | 
			
		||||
    return createAArch64TargetInfo();
 | 
			
		||||
    return getAArch64TargetInfo();
 | 
			
		||||
  case EM_AMDGPU:
 | 
			
		||||
    return createAMDGPUTargetInfo();
 | 
			
		||||
    return getAMDGPUTargetInfo();
 | 
			
		||||
  case EM_ARM:
 | 
			
		||||
    return createARMTargetInfo();
 | 
			
		||||
    return getARMTargetInfo();
 | 
			
		||||
  case EM_AVR:
 | 
			
		||||
    return createAVRTargetInfo();
 | 
			
		||||
    return getAVRTargetInfo();
 | 
			
		||||
  case EM_MIPS:
 | 
			
		||||
    switch (Config->EKind) {
 | 
			
		||||
    case ELF32LEKind:
 | 
			
		||||
      return createMipsTargetInfo<ELF32LE>();
 | 
			
		||||
      return getMipsTargetInfo<ELF32LE>();
 | 
			
		||||
    case ELF32BEKind:
 | 
			
		||||
      return createMipsTargetInfo<ELF32BE>();
 | 
			
		||||
      return getMipsTargetInfo<ELF32BE>();
 | 
			
		||||
    case ELF64LEKind:
 | 
			
		||||
      return createMipsTargetInfo<ELF64LE>();
 | 
			
		||||
      return getMipsTargetInfo<ELF64LE>();
 | 
			
		||||
    case ELF64BEKind:
 | 
			
		||||
      return createMipsTargetInfo<ELF64BE>();
 | 
			
		||||
      return getMipsTargetInfo<ELF64BE>();
 | 
			
		||||
    default:
 | 
			
		||||
      fatal("unsupported MIPS target");
 | 
			
		||||
    }
 | 
			
		||||
  case EM_PPC:
 | 
			
		||||
    return createPPCTargetInfo();
 | 
			
		||||
    return getPPCTargetInfo();
 | 
			
		||||
  case EM_PPC64:
 | 
			
		||||
    return createPPC64TargetInfo();
 | 
			
		||||
    return getPPC64TargetInfo();
 | 
			
		||||
  case EM_X86_64:
 | 
			
		||||
    if (Config->EKind == ELF32LEKind)
 | 
			
		||||
      return createX32TargetInfo();
 | 
			
		||||
    return createX86_64TargetInfo();
 | 
			
		||||
      return getX32TargetInfo();
 | 
			
		||||
    return getX86_64TargetInfo();
 | 
			
		||||
  }
 | 
			
		||||
  fatal("unknown target machine");
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -102,16 +102,16 @@ public:
 | 
			
		|||
  virtual void relaxTlsLdToLe(uint8_t *Loc, uint32_t Type, uint64_t Val) const;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
TargetInfo *createAArch64TargetInfo();
 | 
			
		||||
TargetInfo *createAMDGPUTargetInfo();
 | 
			
		||||
TargetInfo *createARMTargetInfo();
 | 
			
		||||
TargetInfo *createAVRTargetInfo();
 | 
			
		||||
TargetInfo *createPPC64TargetInfo();
 | 
			
		||||
TargetInfo *createPPCTargetInfo();
 | 
			
		||||
TargetInfo *createX32TargetInfo();
 | 
			
		||||
TargetInfo *createX86TargetInfo();
 | 
			
		||||
TargetInfo *createX86_64TargetInfo();
 | 
			
		||||
template <class ELFT> TargetInfo *createMipsTargetInfo();
 | 
			
		||||
TargetInfo *getAArch64TargetInfo();
 | 
			
		||||
TargetInfo *getAMDGPUTargetInfo();
 | 
			
		||||
TargetInfo *getARMTargetInfo();
 | 
			
		||||
TargetInfo *getAVRTargetInfo();
 | 
			
		||||
TargetInfo *getPPC64TargetInfo();
 | 
			
		||||
TargetInfo *getPPCTargetInfo();
 | 
			
		||||
TargetInfo *getX32TargetInfo();
 | 
			
		||||
TargetInfo *getX86TargetInfo();
 | 
			
		||||
TargetInfo *getX86_64TargetInfo();
 | 
			
		||||
template <class ELFT> TargetInfo *getMipsTargetInfo();
 | 
			
		||||
 | 
			
		||||
std::string getErrorLocation(const uint8_t *Loc);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -119,7 +119,7 @@ uint64_t getPPC64TocBase();
 | 
			
		|||
uint64_t getAArch64Page(uint64_t Expr);
 | 
			
		||||
 | 
			
		||||
extern TargetInfo *Target;
 | 
			
		||||
TargetInfo *createTarget();
 | 
			
		||||
TargetInfo *getTarget();
 | 
			
		||||
 | 
			
		||||
template <unsigned N>
 | 
			
		||||
static void checkInt(uint8_t *Loc, int64_t V, uint32_t Type) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue