[LLVMdev] DebugInfoBuilder?
Chris Lattner
sabre at nondot.org
Fri May 23 17:08:08 PDT 2008
On May 22, 2008, at 6:58 PM, Talin wrote:
> Evan Cheng wrote:
>> I don't think so. Contribution welcome! :-) LLVM debugging support
>> isn't anywhere near where it needs to be.
>>
> Well, here's a rough sketch of what I was thinking of:
That would be really nice!
-Chris
>
>
> class DebugInfoBuilder {
> public:
> /// Constructor
> DebugInfoBuilder();
>
> /// Return the type defined by llvm.dbg.anchor.type
> StructType * GetAnchorType() const;
>
> /// Set the reference to the module where we will insert debugging
> information.
> /// Also defines the debug info types for the module and creates
> the
> initial anchors.
> void SetModule(Module * m);
>
> /// Emit a compile unit descriptor.
> GlobalVariable * CreateCompileUnitDescriptor(
> unsigned langId,
> const sys::Path & srcPath,
> const std::string & producer);
>
> /// Emit a subprogram descriptor.
> GlobalVariable * CreateSubProgramDescriptor(
> GlobalVariable * compileUnit, /// Compile unit in which
> it
> is defined
> GlobalVariable * context, /// Context in which it is
> defined
> const std::string & name, /// Name of the subprogram
> const std::string & qualifiedName, /// Fully-qualified name
> unsigned line, /// Line number
> GlobalVariable * typeDesc, /// Type descriptor
> bool isStatic, /// True if this has static
> scope (internal to module)
> bool isDefined); /// True if this is not
> externally-defined.
>
> /// Create a type descriptor for a primitive type
> GlobalVariable * CreateBasicTypeDescriptor(
> GlobalVariable * compileUnit,
> GlobalVariable * context,
> std::string & name,
> unsigned line,
> unsigned sizeInBits,
> unsigned alignmentInBits,
> unsigned offsetInBits,
> unsigned typeEncoding);
>
> /// Create a type descriptor for an integer type
> GlobalVariable * CreateIntegerTypeDescriptor(
> std::string & name, const IntegerType * type, bool isSigned);
>
> /// Create a type descriptor for an character type
> GlobalVariable * CreateCharacterTypeDescriptor(
> std::string & name, const IntegerType * type, bool isSigned);
>
> /// Create a type descriptor for an floating-point type.
> GlobalVariable * CreateFloatTypeDescriptor(std::string & name,
> unsigned bitWidth);
>
> GlobalVariable * CreatePointerTypeDescriptor(
> GlobalVariable * compileUnit, /// Compile unit in which
> type is defined
> GlobalVariable * context, /// Context in which type
> is
> defined
> std::string & name, /// Name of the type
> GlobalVariable * referenceType, /// Descriptor for what is
> pointed to
> const PointerType * type, /// LLVM type of the
> pointer
> unsigned line); /// Line number of
> definition (0 if none)
>
> /// (etc... more to be added)
> };
>
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
More information about the llvm-dev
mailing list