MCDwarf.h revision 3bce5adb32fbbe5c5549b902f4d65737f40c1499
1//===- MCDwarf.h - Machine Code Dwarf support -------------------*- 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// This file contains the declaration of the MCDwarfFile to support the dwarf 11// .file directive. 12// TODO: add the support needed for the .loc directive. 13// 14//===----------------------------------------------------------------------===// 15 16#ifndef LLVM_MC_MCDWARF_H 17#define LLVM_MC_MCDWARF_H 18 19#include "llvm/ADT/StringRef.h" 20 21namespace llvm { 22 class MCContext; 23 class raw_ostream; 24 25 /// MCDwarfFile - Instances of this class represent the name of the dwarf 26 /// .file directive and its associated dwarf file number in the MC file, 27 /// and MCDwarfFile's are created and unique'd by the MCContext class where 28 /// the file number for each is its index into the vector of DwarfFiles (note 29 /// index 0 is not used and not a valid dwarf file number). 30 class MCDwarfFile { 31 // Name - the base name of the file without its directory path. 32 // The StringRef references memory allocated in the MCContext. 33 StringRef Name; 34 35 // DirIndex - the index into the list of directory names for this file name. 36 unsigned DirIndex; 37 38 private: // MCContext creates and uniques these. 39 friend class MCContext; 40 MCDwarfFile(StringRef name, unsigned dirIndex) 41 : Name(name), DirIndex(dirIndex) {} 42 43 MCDwarfFile(const MCDwarfFile&); // DO NOT IMPLEMENT 44 void operator=(const MCDwarfFile&); // DO NOT IMPLEMENT 45 public: 46 /// getName - Get the base name of this MCDwarfFile. 47 StringRef getName() const { return Name; } 48 49 /// print - Print the value to the stream \arg OS. 50 void print(raw_ostream &OS) const; 51 52 /// dump - Print the value to stderr. 53 void dump() const; 54 }; 55 56 inline raw_ostream &operator<<(raw_ostream &OS, const MCDwarfFile &DwarfFile){ 57 DwarfFile.print(OS); 58 return OS; 59 } 60} // end namespace llvm 61 62#endif 63