ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

rossym.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.