mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-07-26 05:25:47 +00:00
Initial implementation of some source-level debugging stuff
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10684 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
99
include/llvm/Debugger/SourceLanguage.h
Normal file
99
include/llvm/Debugger/SourceLanguage.h
Normal file
@@ -0,0 +1,99 @@
|
||||
//===- SourceLanguage.h - Interact with source languages --------*- C++ -*-===//
|
||||
//
|
||||
// The LLVM Compiler Infrastructure
|
||||
//
|
||||
// This file was developed by the LLVM research group and is distributed under
|
||||
// the University of Illinois Open Source License. See LICENSE.TXT for details.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This file defines the abstract SourceLanguage interface, which is used by the
|
||||
// LLVM debugger to parse source-language expressions and render program objects
|
||||
// into a human readable string. In general, these classes perform all of the
|
||||
// analysis and interpretation of the language-specific debugger information.
|
||||
//
|
||||
// This interface is designed to be completely stateless, so all methods are
|
||||
// const.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef LLVM_DEBUGGER_SOURCELANGUAGE_H
|
||||
#define LLVM_DEBUGGER_SOURCELANGUAGE_H
|
||||
|
||||
#include <string>
|
||||
|
||||
namespace llvm {
|
||||
class GlobalVariable;
|
||||
class SourceFileInfo;
|
||||
class SourceFunctionInfo;
|
||||
class ProgramInfo;
|
||||
class RuntimeInfo;
|
||||
|
||||
struct SourceLanguage {
|
||||
virtual ~SourceLanguage() {}
|
||||
|
||||
/// getSourceLanguageName - This method is used to implement the 'show
|
||||
/// language' command in the debugger.
|
||||
virtual const char *getSourceLanguageName() const = 0;
|
||||
|
||||
//===------------------------------------------------------------------===//
|
||||
// Methods used to implement debugger hooks.
|
||||
//
|
||||
|
||||
/// printInfo - Implementing this method allows the debugger to use
|
||||
/// language-specific 'info' extensions, e.g., 'info selectors' for objc.
|
||||
/// This method should return true if the specified string is recognized.
|
||||
///
|
||||
virtual bool printInfo(const std::string &What) const {
|
||||
return false;
|
||||
}
|
||||
|
||||
/// lookupFunction - Given a textual function name, return the
|
||||
/// SourceFunctionInfo descriptor for that function, or null if it cannot be
|
||||
/// found. If the program is currently running, the RuntimeInfo object
|
||||
/// provides information about the current evaluation context, otherwise it
|
||||
/// will be null.
|
||||
///
|
||||
virtual SourceFunctionInfo *lookupFunction(const std::string &FunctionName,
|
||||
ProgramInfo &PI,
|
||||
RuntimeInfo *RI = 0) const {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
//===------------------------------------------------------------------===//
|
||||
// Methods used to parse various pieces of program information.
|
||||
//
|
||||
|
||||
/// createSourceFileInfo - This method can be implemented by the front-end
|
||||
/// if it needs to keep track of information beyond what the debugger
|
||||
/// requires.
|
||||
virtual SourceFileInfo *
|
||||
createSourceFileInfo(const GlobalVariable *Desc, ProgramInfo &PI) const;
|
||||
|
||||
/// createSourceFunctionInfo - This method can be implemented by the derived
|
||||
/// SourceLanguage if it needs to keep track of more information than the
|
||||
/// SourceFunctionInfo has.
|
||||
virtual SourceFunctionInfo *
|
||||
createSourceFunctionInfo(const GlobalVariable *Desc, ProgramInfo &PI) const;
|
||||
|
||||
|
||||
//===------------------------------------------------------------------===//
|
||||
// Static methods used to get instances of various source languages.
|
||||
//
|
||||
|
||||
/// get - This method returns a source-language instance for the specified
|
||||
/// Dwarf 3 language identifier. If the language is unknown, an object is
|
||||
/// returned that can support some minimal operations, but is not terribly
|
||||
/// bright.
|
||||
static const SourceLanguage &get(unsigned ID);
|
||||
|
||||
/// get*Instance() - These methods return specific instances of languages.
|
||||
///
|
||||
static const SourceLanguage &getCFamilyInstance();
|
||||
static const SourceLanguage &getCPlusPlusInstance();
|
||||
static const SourceLanguage &getUnknownLanguageInstance();
|
||||
};
|
||||
}
|
||||
|
||||
#endif
|
Reference in New Issue
Block a user