ELF.cpp 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. //===- ELF.cpp - ELF object file implementation -----------------*- C++ -*-===//
  2. //
  3. // The LLVM Compiler Infrastructure
  4. //
  5. // This file is distributed under the University of Illinois Open Source
  6. // License. See LICENSE.TXT for details.
  7. //
  8. //===----------------------------------------------------------------------===//
  9. #include "llvm/Object/ELF.h"
  10. namespace llvm {
  11. namespace object {
  12. #define ELF_RELOC(name, value) \
  13. case ELF::name: \
  14. return #name; \
  15. StringRef getELFRelocationTypeName(uint32_t Machine, uint32_t Type) {
  16. switch (Machine) {
  17. case ELF::EM_X86_64:
  18. switch (Type) {
  19. #include "llvm/Support/ELFRelocs/x86_64.def"
  20. default:
  21. break;
  22. }
  23. break;
  24. case ELF::EM_386:
  25. switch (Type) {
  26. #include "llvm/Support/ELFRelocs/i386.def"
  27. default:
  28. break;
  29. }
  30. break;
  31. case ELF::EM_MIPS:
  32. switch (Type) {
  33. #include "llvm/Support/ELFRelocs/Mips.def"
  34. default:
  35. break;
  36. }
  37. break;
  38. case ELF::EM_AARCH64:
  39. switch (Type) {
  40. #include "llvm/Support/ELFRelocs/AArch64.def"
  41. default:
  42. break;
  43. }
  44. break;
  45. case ELF::EM_ARM:
  46. switch (Type) {
  47. #include "llvm/Support/ELFRelocs/ARM.def"
  48. default:
  49. break;
  50. }
  51. break;
  52. case ELF::EM_HEXAGON:
  53. switch (Type) {
  54. #include "llvm/Support/ELFRelocs/Hexagon.def"
  55. default:
  56. break;
  57. }
  58. break;
  59. case ELF::EM_PPC:
  60. switch (Type) {
  61. #include "llvm/Support/ELFRelocs/PowerPC.def"
  62. default:
  63. break;
  64. }
  65. break;
  66. case ELF::EM_PPC64:
  67. switch (Type) {
  68. #include "llvm/Support/ELFRelocs/PowerPC64.def"
  69. default:
  70. break;
  71. }
  72. break;
  73. case ELF::EM_S390:
  74. switch (Type) {
  75. #include "llvm/Support/ELFRelocs/SystemZ.def"
  76. default:
  77. break;
  78. }
  79. break;
  80. case ELF::EM_SPARC:
  81. case ELF::EM_SPARC32PLUS:
  82. case ELF::EM_SPARCV9:
  83. switch (Type) {
  84. #include "llvm/Support/ELFRelocs/Sparc.def"
  85. default:
  86. break;
  87. }
  88. break;
  89. default:
  90. break;
  91. }
  92. return "Unknown";
  93. }
  94. #undef ELF_RELOC
  95. } // end namespace object
  96. } // end namespace llvm