This patch changes the following:
* Use conventional naming for KindHandlers.
* Add X86 relocation routines.
* Use std::function instead of function pointers in _fixupHandler map.
* Change _fixupHandler map from std::map to llvm::DenseMap.
* Add simple testcase for x86 relocations.
llvm-svn: 166700
diff --git a/lld/lib/ReaderWriter/ELF/ReferenceKinds.cpp b/lld/lib/ReaderWriter/ELF/ReferenceKinds.cpp
index 06d9732..175c43a 100644
--- a/lld/lib/ReaderWriter/ELF/ReferenceKinds.cpp
+++ b/lld/lib/ReaderWriter/ELF/ReferenceKinds.cpp
@@ -32,66 +32,16 @@
llvm::support::endianness endian) {
switch(arch) {
case llvm::ELF::EM_HEXAGON:
- return std::unique_ptr<KindHandler>(new KindHandler_hexagon());
+ return std::unique_ptr<KindHandler>(new HexagonKindHandler());
case llvm::ELF::EM_386:
- return std::unique_ptr<KindHandler>(new KindHandler_x86());
+ return std::unique_ptr<KindHandler>(new X86KindHandler());
case llvm::ELF::EM_PPC:
- return std::unique_ptr<KindHandler>(new KindHandler_ppc(endian));
+ return std::unique_ptr<KindHandler>(new PPCKindHandler(endian));
default:
llvm_unreachable("arch not supported");
}
}
-//===----------------------------------------------------------------------===//
-// KindHandler_x86
-// TODO: more to do here
-//===----------------------------------------------------------------------===//
-
-KindHandler_x86::~KindHandler_x86() {}
-
-Reference::Kind KindHandler_x86::stringToKind(StringRef str) {
- return llvm::StringSwitch<Reference::Kind>(str)
- .Case("none", none)
- .Default(invalid);
-}
-
-StringRef KindHandler_x86::kindToString(Reference::Kind kind) {
- switch ( (Kinds)kind ) {
- case invalid:
- return "invalid";
- case none:
- return "none";
- }
- llvm_unreachable("invalid x86 Reference kind");
-}
-
-bool KindHandler_x86::isCallSite(Kind kind) {
- llvm_unreachable("Unimplemented: KindHandler_x86::isCallSite");
- return false;
-}
-
-bool KindHandler_x86::isPointer(Kind kind) {
- llvm_unreachable("Unimplemented: KindHandler_x86::isPointer");
- return false;
-}
-
-bool KindHandler_x86::isLazyImmediate(Kind kind) {
- llvm_unreachable("Unimplemented: KindHandler_x86::isLazyImmediate");
- return false;
-}
-
-bool KindHandler_x86::isLazyTarget(Kind kind) {
- llvm_unreachable("Unimplemented: KindHandler_x86::isLazyTarget");
- return false;
-}
-
-void KindHandler_x86::applyFixup(int32_t reloc, uint64_t addend,
- uint8_t *location, uint64_t fixupAddress,
- uint64_t targetAddress) {
-// TODO: Add reloc funcs for X86
- return;
-}
-
} // namespace elf
} // namespace lld