1 //===- DWARFRelocMap.h ------------------------------------------*- 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 10 #ifndef LLVM_DEBUGINFO_DWARF_DWARFRELOCMAP_H 11 #define LLVM_DEBUGINFO_DWARF_DWARFRELOCMAP_H 12 13 #include "llvm/ADT/DenseMap.h" 14 #include <cstdint> 15 16 namespace llvm { 17 18 /// RelocAddrEntry contains relocated value and section index. 19 /// Section index is -1LL if relocation points to absolute symbol. 20 struct RelocAddrEntry { 21 uint64_t SectionIndex; 22 uint64_t Value; 23 }; 24 25 /// In place of applying the relocations to the data we've read from disk we use 26 /// a separate mapping table to the side and checking that at locations in the 27 /// dwarf where we expect relocated values. This adds a bit of complexity to the 28 /// dwarf parsing/extraction at the benefit of not allocating memory for the 29 /// entire size of the debug info sections. 30 using RelocAddrMap = DenseMap<uint64_t, RelocAddrEntry>; 31 32 } // end namespace llvm 33 34 #endif // LLVM_DEBUGINFO_DWARF_DWARFRELOCMAP_H 35