Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenrossym.h
Go to the documentation of this file.
00001 /* 00002 * COPYRIGHT: See COPYING in the top level directory 00003 * PROJECT: ReactOS kernel 00004 * FILE: include/reactos/rossym.h 00005 * PURPOSE: Handling of rossym symbol info 00006 * 00007 * PROGRAMMERS: Ge van Geldorp (gvg@reactos.com) 00008 */ 00009 00010 #ifndef REACTOS_ROSSYM_H_INCLUDED 00011 #define REACTOS_ROSSYM_H_INCLUDED 00012 00013 #define ROSSYM_SECTION_NAME ".rossym" 00014 00015 #ifdef __cplusplus 00016 extern "C" { 00017 #endif 00018 00019 typedef struct _ROSSYM_HEADER { 00020 unsigned long SymbolsOffset; 00021 unsigned long SymbolsLength; 00022 unsigned long StringsOffset; 00023 unsigned long StringsLength; 00024 } ROSSYM_HEADER, *PROSSYM_HEADER; 00025 00026 typedef struct _ROSSYM_ENTRY { 00027 ULONG_PTR Address; 00028 ULONG FunctionOffset; 00029 ULONG FileOffset; 00030 ULONG SourceLine; 00031 } ROSSYM_ENTRY, *PROSSYM_ENTRY; 00032 00033 enum _ROSSYM_REGNAME { 00034 ROSSYM_X86_EAX = 0, 00035 ROSSYM_X86_ECX, 00036 ROSSYM_X86_EDX, 00037 ROSSYM_X86_EBX, 00038 ROSSYM_X86_ESP, 00039 ROSSYM_X86_EBP, 00040 ROSSYM_X86_ESI, 00041 ROSSYM_X86_EDI, 00042 00043 ROSSYM_X64_RAX = 0, 00044 ROSSYM_X64_RDX, 00045 ROSSYM_X64_RCX, 00046 ROSSYM_X64_RBX, 00047 ROSSYM_X64_RSI, 00048 ROSSYM_X64_RDI, 00049 ROSSYM_X64_RBP, 00050 ROSSYM_X64_RSP, 00051 Rossym_X64_R8, 00052 ROSSYM_X64_R9, 00053 ROSSYM_X64_R10, 00054 ROSSYM_X64_R11, 00055 ROSSYM_X64_R12, 00056 ROSSYM_X64_R13, 00057 ROSSYM_X64_R14, 00058 ROSSYM_X64_R15 00059 }; 00060 00061 typedef struct _ROSSYM_REGISTERS { 00062 ULONGLONG Registers[32]; 00063 } ROSSYM_REGISTERS, *PROSSYM_REGISTERS; 00064 00065 typedef struct _ROSSYM_PARAMETER { 00066 ULONGLONG Value; 00067 char *ValueName; 00068 } ROSSYM_PARAMETER, *PROSSYM_PARAMETER; 00069 00070 typedef enum _ROSSYM_LINEINFO_FLAGS { 00071 ROSSYM_LINEINFO_HAS_REGISTERS = 1 00072 } ROSSYM_LINEINFO_FLAGS; 00073 00074 typedef enum _ROSSYM_LINEINFO_TYPE { 00075 ROSSYM_LINEINFO_UNKNOWN, 00076 ROSSYM_LINEINFO_NARROW_STRING, 00077 ROSSYM_LINEINFO_WIDE_STRING, 00078 ROSSYM_LINEINFO_ANSI_STRING, 00079 ROSSYM_LINEINFO_UNICODE_STRING, 00080 ROSSYM_LINEINFO_HANDLE 00081 } ROSSYM_LINEINFO_STRINGTYPE; 00082 00083 typedef struct _ROSSYM_LINEINFO { 00084 ROSSYM_LINEINFO_FLAGS Flags; 00085 ULONG LineNumber; 00086 char *FileName; 00087 char *FunctionName; 00088 ROSSYM_REGISTERS Registers; 00089 ULONG NumParams; 00090 ROSSYM_PARAMETER Parameters[16]; 00091 } ROSSYM_LINEINFO, *PROSSYM_LINEINFO; 00092 00093 typedef struct _ROSSYM_AGGREGATE_MEMBER { 00094 PCHAR Name, Type; 00095 ULONG BaseOffset, Size; 00096 ULONG FirstBit, Bits; 00097 ULONG TypeId; 00098 } ROSSYM_AGGREGATE_MEMBER, *PROSSYM_AGGREGATE_MEMBER; 00099 00100 typedef struct _ROSSYM_AGGREGATE { 00101 ULONG NumElements; 00102 PROSSYM_AGGREGATE_MEMBER Elements; 00103 } ROSSYM_AGGREGATE, *PROSSYM_AGGREGATE; 00104 00105 typedef struct _ROSSYM_CALLBACKS { 00106 PVOID (*AllocMemProc)(ULONG_PTR Size); 00107 VOID (*FreeMemProc)(PVOID Area); 00108 BOOLEAN (*ReadFileProc)(PVOID FileContext, PVOID Buffer, ULONG Size); 00109 BOOLEAN (*SeekFileProc)(PVOID FileContext, ULONG_PTR Position); 00110 BOOLEAN (*MemGetProc)(PVOID FileContext, ULONG_PTR *Target, PVOID SourceMem, ULONG Size); 00111 } ROSSYM_CALLBACKS, *PROSSYM_CALLBACKS; 00112 00113 #ifdef __ROS_DWARF__ 00114 typedef struct _ROSSYM_OWN_FILECONTEXT { 00115 BOOLEAN (*ReadFileProc)(PVOID FileContext, PVOID Buffer, ULONG Size); 00116 BOOLEAN (*SeekFileProc)(PVOID FileContext, ULONG_PTR Position); 00117 } ROSSYM_OWN_FILECONTEXT, *PROSSYM_OWN_FILECONTEXT; 00118 00119 struct Dwarf; 00120 typedef struct Dwarf *PROSSYM_INFO; 00121 #else 00122 typedef struct _ROSSYM_INFO *PROSSYM_INFO; 00123 #endif 00124 00125 VOID RosSymInit(PROSSYM_CALLBACKS Callbacks); 00126 #ifndef __ROS_DWARF__ 00127 VOID RosSymInitKernelMode(VOID); 00128 #endif 00129 VOID RosSymInitUserMode(VOID); 00130 00131 BOOLEAN RosSymCreateFromRaw(PVOID RawData, ULONG_PTR DataSize, 00132 PROSSYM_INFO *RosSymInfo); 00133 BOOLEAN RosSymCreateFromMem(PVOID ImageStart, ULONG_PTR ImageSize, 00134 PROSSYM_INFO *RosSymInfo); 00135 BOOLEAN RosSymCreateFromFile(PVOID FileContext, PROSSYM_INFO *RosSymInfo); 00136 ULONG RosSymGetRawDataLength(PROSSYM_INFO RosSymInfo); 00137 VOID RosSymGetRawData(PROSSYM_INFO RosSymInfo, PVOID RawData); 00138 #ifdef __ROS_DWARF__ 00139 BOOLEAN RosSymGetAddressInformation(PROSSYM_INFO RosSymInfo, 00140 ULONG_PTR RelativeAddress, 00141 PROSSYM_LINEINFO RosSymLineInfo); 00142 #else 00143 BOOLEAN RosSymGetAddressInformation(PROSSYM_INFO RosSymInfo, 00144 ULONG_PTR RelativeAddress, 00145 ULONG *LineNumber, 00146 char *FileName, 00147 char *FunctionName); 00148 #endif 00149 VOID RosSymFreeInfo(PROSSYM_LINEINFO RosSymLineInfo); 00150 VOID RosSymDelete(PROSSYM_INFO RosSymInfo); 00151 BOOLEAN 00152 RosSymAggregate(PROSSYM_INFO RosSymInfo, PCHAR Type, PROSSYM_AGGREGATE Aggregate); 00153 VOID RosSymFreeAggregate(PROSSYM_AGGREGATE Aggregate); 00154 00155 #ifdef __cplusplus 00156 } 00157 #endif 00158 00159 #endif /* REACTOS_ROSSYM_H_INCLUDED */ 00160 00161 /* EOF */ 00162 Generated on Sat May 26 2012 04:32:06 for ReactOS by
1.7.6.1
|