summaryrefslogtreecommitdiffstats
path: root/contrib/llvm/lib/Object/ELF.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/llvm/lib/Object/ELF.cpp')
-rw-r--r--contrib/llvm/lib/Object/ELF.cpp110
1 files changed, 110 insertions, 0 deletions
diff --git a/contrib/llvm/lib/Object/ELF.cpp b/contrib/llvm/lib/Object/ELF.cpp
new file mode 100644
index 0000000..12b772d
--- /dev/null
+++ b/contrib/llvm/lib/Object/ELF.cpp
@@ -0,0 +1,110 @@
+//===- ELF.cpp - ELF object file implementation -----------------*- C++ -*-===//
+//
+// The LLVM Compiler Infrastructure
+//
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
+//
+//===----------------------------------------------------------------------===//
+
+#include "llvm/Object/ELF.h"
+
+namespace llvm {
+namespace object {
+
+#define ELF_RELOC(name, value) \
+ case ELF::name: \
+ return #name; \
+
+StringRef getELFRelocationTypeName(uint32_t Machine, uint32_t Type) {
+ switch (Machine) {
+ case ELF::EM_X86_64:
+ switch (Type) {
+#include "llvm/Support/ELFRelocs/x86_64.def"
+ default:
+ break;
+ }
+ break;
+ case ELF::EM_386:
+ case ELF::EM_IAMCU:
+ switch (Type) {
+#include "llvm/Support/ELFRelocs/i386.def"
+ default:
+ break;
+ }
+ break;
+ case ELF::EM_MIPS:
+ switch (Type) {
+#include "llvm/Support/ELFRelocs/Mips.def"
+ default:
+ break;
+ }
+ break;
+ case ELF::EM_AARCH64:
+ switch (Type) {
+#include "llvm/Support/ELFRelocs/AArch64.def"
+ default:
+ break;
+ }
+ break;
+ case ELF::EM_ARM:
+ switch (Type) {
+#include "llvm/Support/ELFRelocs/ARM.def"
+ default:
+ break;
+ }
+ break;
+ case ELF::EM_HEXAGON:
+ switch (Type) {
+#include "llvm/Support/ELFRelocs/Hexagon.def"
+ default:
+ break;
+ }
+ break;
+ case ELF::EM_PPC:
+ switch (Type) {
+#include "llvm/Support/ELFRelocs/PowerPC.def"
+ default:
+ break;
+ }
+ break;
+ case ELF::EM_PPC64:
+ switch (Type) {
+#include "llvm/Support/ELFRelocs/PowerPC64.def"
+ default:
+ break;
+ }
+ break;
+ case ELF::EM_S390:
+ switch (Type) {
+#include "llvm/Support/ELFRelocs/SystemZ.def"
+ default:
+ break;
+ }
+ break;
+ case ELF::EM_SPARC:
+ case ELF::EM_SPARC32PLUS:
+ case ELF::EM_SPARCV9:
+ switch (Type) {
+#include "llvm/Support/ELFRelocs/Sparc.def"
+ default:
+ break;
+ }
+ break;
+ case ELF::EM_WEBASSEMBLY:
+ switch (Type) {
+#include "llvm/Support/ELFRelocs/WebAssembly.def"
+ default:
+ break;
+ }
+ break;
+ default:
+ break;
+ }
+ return "Unknown";
+}
+
+#undef ELF_RELOC
+
+} // end namespace object
+} // end namespace llvm
OpenPOWER on IntegriCloud