Home | History | Annotate | Download | only in DWARF
      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