OLD | NEW |
1 //===-- ARMELFWriterInfo.cpp - ELF Writer Info for the ARM backend --------===// | 1 //===-- ARMELFWriterInfo.cpp - ELF Writer Info for the ARM backend --------===// |
2 // | 2 // |
3 // The LLVM Compiler Infrastructure | 3 // The LLVM Compiler Infrastructure |
4 // | 4 // |
5 // This file is distributed under the University of Illinois Open Source | 5 // This file is distributed under the University of Illinois Open Source |
6 // License. See LICENSE.TXT for details. | 6 // License. See LICENSE.TXT for details. |
7 // | 7 // |
8 //===----------------------------------------------------------------------===// | 8 //===----------------------------------------------------------------------===// |
9 // | 9 // |
10 // This file implements ELF writer information for the ARM backend. | 10 // This file implements ELF writer information for the ARM backend. |
11 // | 11 // |
12 //===----------------------------------------------------------------------===// | 12 //===----------------------------------------------------------------------===// |
13 | 13 |
14 #include "ARMELFWriterInfo.h" | 14 #include "ARMELFWriterInfo.h" |
15 #include "ARMRelocations.h" | 15 #include "ARMRelocations.h" |
16 #include "llvm/Function.h" | 16 #include "llvm/Function.h" |
17 #include "llvm/CodeGen/BinaryObject.h" | 17 #include "llvm/CodeGen/BinaryObject.h" |
18 #include "llvm/Support/ErrorHandling.h" | 18 #include "llvm/Support/ErrorHandling.h" |
| 19 #include "llvm/CodeGen/MachineRelocation.h" |
19 #include "llvm/Target/TargetData.h" | 20 #include "llvm/Target/TargetData.h" |
20 #include "llvm/Target/TargetMachine.h" | 21 #include "llvm/Target/TargetMachine.h" |
21 | 22 |
22 using namespace llvm; | 23 using namespace llvm; |
23 | 24 |
24 //===----------------------------------------------------------------------===// | 25 //===----------------------------------------------------------------------===// |
| 26 // The ARMELFRelocHelper class |
| 27 //===----------------------------------------------------------------------===// |
| 28 |
| 29 class ARMELFRelocHelper : public TargetELFRelocHelper { |
| 30 public: |
| 31 virtual ~ARMELFRelocHelper() {}; |
| 32 virtual void RelocateField(BinaryObject &BO, uint32_t Offset, |
| 33 int64_t Value, unsigned Size, |
| 34 const MachineRelocation &MR) { |
| 35 assert(0 && "ARM RelocateField() unimplemented"); |
| 36 }; |
| 37 }; |
| 38 |
| 39 //===----------------------------------------------------------------------===// |
25 // Implementation of the ARMELFWriterInfo class | 40 // Implementation of the ARMELFWriterInfo class |
26 //===----------------------------------------------------------------------===// | 41 //===----------------------------------------------------------------------===// |
27 | 42 |
28 ARMELFWriterInfo::ARMELFWriterInfo(TargetMachine &TM) | 43 ARMELFWriterInfo::ARMELFWriterInfo(TargetMachine &TM) |
29 : TargetELFWriterInfo(TM.getTargetData()->getPointerSizeInBits() == 64, | 44 : TargetELFWriterInfo(TM.getTargetData()->getPointerSizeInBits() == 64, |
30 TM.getTargetData()->isLittleEndian()) { | 45 TM.getTargetData()->isLittleEndian()) { |
31 // silently OK construction | 46 // silently OK construction |
32 } | 47 } |
33 | 48 |
34 ARMELFWriterInfo::~ARMELFWriterInfo() {} | 49 ARMELFWriterInfo::~ARMELFWriterInfo() {} |
(...skipping 26 matching lines...) Expand all Loading... |
61 return 0; | 76 return 0; |
62 } | 77 } |
63 | 78 |
64 long int ARMELFWriterInfo::computeRelocation(unsigned SymOffset, | 79 long int ARMELFWriterInfo::computeRelocation(unsigned SymOffset, |
65 unsigned RelOffset, | 80 unsigned RelOffset, |
66 unsigned RelTy) const { | 81 unsigned RelTy) const { |
67 assert(0 && | 82 assert(0 && |
68 "ARMELFWriterInfo::getAbsoluteLabelMachineRelTy() not implemented"); | 83 "ARMELFWriterInfo::getAbsoluteLabelMachineRelTy() not implemented"); |
69 return 0; | 84 return 0; |
70 } | 85 } |
| 86 |
| 87 TargetELFRelocHelper *ARMELFWriterInfo::getRelocHelper() const { |
| 88 return new ARMELFRelocHelper(); |
| 89 } |
OLD | NEW |