89 lines
2.3 KiB
C++
89 lines
2.3 KiB
C++
/*
|
|||
|
|
* Copyright 2009, Ingo Weinhold, [email protected].
|
||
* Copyright 2010-2013, Rene Gollent, [email protected].
|
|||
* Distributed under the terms of the MIT License.
|
|||
|
|
*/
|
||
|
|
#ifndef IMAGE_DEBUG_INFO_H
|
||
|
|
#define IMAGE_DEBUG_INFO_H
|
||
|
|
|
||
|
|||
#include <String.h>
|
|||
|
|
|
||
|
|
#include <ObjectList.h>
|
||
|
|
#include <Referenceable.h>
|
||
|
|
|
||
#include "AddressSectionTypes.h"
|
|||
#include "ImageInfo.h"
|
|||
#include "Types.h"
|
|||
|
|||
|
|
|
||
|
|
class Architecture;
|
||
|
|
class DebuggerInterface;
|
||
class FileSourceCode;
|
|||
class FunctionDebugInfo;
|
|||
class FunctionInstance;
|
|||
class GlobalTypeCache;
|
|||
class LocatableFile;
|
|||
class SpecificImageDebugInfo;
|
|||
class SymbolInfo;
|
|||
class Type;
|
|||
class TypeLookupConstraints;
|
|||
|
|||
|
|
|
||
class ImageDebugInfo : public BReferenceable {
|
|||
public:
|
|||
ImageDebugInfo(const ImageInfo& imageInfo);
|
|||
~ImageDebugInfo();
|
|||
|
|
|
||
const ImageInfo& GetImageInfo() const { return fImageInfo; }
|
|||
|
|
|
||
bool AddSpecificInfo(SpecificImageDebugInfo* info);
|
|||
status_t FinishInit(DebuggerInterface* interface);
|
|||
|
|||
status_t GetType(GlobalTypeCache* cache,
|
|||
const BString& name,
|
|||
|
|
const TypeLookupConstraints& constraints,
|
||
|
|
Type*& _type);
|
||
// returns a reference
|
|||
|
|||
|
|
bool HasType(const BString& name,
|
||
|
|
const TypeLookupConstraints& constraints)
|
||
|
|
const;
|
||
|
|
|
||
AddressSectionType GetAddressSectionType(target_addr_t address)
|
|||
|
|
const;
|
||
|
|||
int32 CountFunctions() const;
|
|||
FunctionInstance* FunctionAt(int32 index) const;
|
|||
|
|
FunctionInstance* FunctionAtAddress(target_addr_t address) const;
|
||
FunctionInstance* FunctionByName(const char* name) const;
|
|||
|
|||
FunctionInstance* MainFunction() const
|
|||
|
|
{ return fMainFunction; }
|
||
|
|
|
||
status_t AddSourceCodeInfo(LocatableFile* file,
|
|||
|
|
FileSourceCode* sourceCode) const;
|
||
|
|
|
||
private:
|
|||
typedef BObjectList<SpecificImageDebugInfo> SpecificInfoList;
|
|||
typedef BObjectList<FunctionInstance> FunctionList;
|
|||
|
|||
|
|
private:
|
||
static int _CompareFunctions(const FunctionInstance* a,
|
|||
|
|
const FunctionInstance* b);
|
||
static int _CompareAddressFunction(
|
|||
|
|
const target_addr_t* address,
|
||
const FunctionInstance* function);
|
|||
static int _CompareSymbols(const SymbolInfo* a,
|
|||
|
|
const SymbolInfo* b);
|
||
|
|||
|
|
private:
|
||
|
|
ImageInfo fImageInfo;
|
||
SpecificInfoList fSpecificInfos;
|
|||
FunctionList fFunctions;
|
|||
FunctionInstance* fMainFunction;
|
|||
};
|
|||
|
|
|
||
|
|
|
||
|
|
#endif // IMAGE_DEBUG_INFO_H
|