[CMAKE]
[reactos.git] / include / reactos / rossym.h
index d65f969..1f7bf2f 100644 (file)
@@ -17,33 +17,86 @@ typedef struct _ROSSYM_ENTRY {
   ULONG SourceLine;
 } ROSSYM_ENTRY, *PROSSYM_ENTRY;
 
+enum _ROSSYM_REGNAME {
+    ROSSYM_X86_EAX = 0,
+    ROSSYM_X86_ECX,
+    ROSSYM_X86_EDX,
+    ROSSYM_X86_EBX,
+    ROSSYM_X86_ESP,
+    ROSSYM_X86_EBP,
+    ROSSYM_X86_ESI,
+    ROSSYM_X86_EDI,
+
+       ROSSYM_X64_RAX = 0, 
+       ROSSYM_X64_RDX,
+       ROSSYM_X64_RCX,
+       ROSSYM_X64_RBX,
+       ROSSYM_X64_RSI,
+       ROSSYM_X64_RDI,
+       ROSSYM_X64_RBP,
+       ROSSYM_X64_RSP,
+       Rossym_X64_R8,
+       ROSSYM_X64_R9,
+       ROSSYM_X64_R10,
+       ROSSYM_X64_R11,
+       ROSSYM_X64_R12,
+       ROSSYM_X64_R13,
+       ROSSYM_X64_R14,
+       ROSSYM_X64_R15
+};
+
+typedef struct _ROSSYM_REGISTERS {
+  ULONGLONG Registers[32];
+} ROSSYM_REGISTERS, *PROSSYM_REGISTERS;
+
+typedef struct _ROSSYM_PARAMETER {
+  ULONGLONG Value;
+  char *ValueName;
+} ROSSYM_PARAMETER, *PROSSYM_PARAMETER;
+
+typedef enum _ROSSYM_LINEINFO_FLAGS {
+  ROSSYM_LINEINFO_HAS_REGISTERS = 1
+} ROSSYM_LINEINFO_FLAGS;
+
+typedef enum _ROSSYM_LINEINFO_TYPE {
+  ROSSYM_LINEINFO_UNKNOWN,
+  ROSSYM_LINEINFO_NARROW_STRING,
+  ROSSYM_LINEINFO_WIDE_STRING,
+  ROSSYM_LINEINFO_ANSI_STRING,
+  ROSSYM_LINEINFO_UNICODE_STRING,
+  ROSSYM_LINEINFO_HANDLE
+} ROSSYM_LINEINFO_STRINGTYPE;
+
+typedef struct _ROSSYM_LINEINFO {
+  ROSSYM_LINEINFO_FLAGS Flags;
+  ULONG LineNumber;
+  char *FileName;
+  char *FunctionName;
+  ROSSYM_REGISTERS Registers;
+  ULONG NumParams;
+  ROSSYM_PARAMETER Parameters[16];
+} ROSSYM_LINEINFO, *PROSSYM_LINEINFO;
+
 typedef struct _ROSSYM_CALLBACKS {
   PVOID (*AllocMemProc)(ULONG_PTR Size);
   VOID (*FreeMemProc)(PVOID Area);
   BOOLEAN (*ReadFileProc)(PVOID FileContext, PVOID Buffer, ULONG Size);
   BOOLEAN (*SeekFileProc)(PVOID FileContext, ULONG_PTR Position);
+  BOOLEAN (*MemGetProc)(PVOID FileContext, ULONG_PTR *Target, PVOID SourceMem, ULONG Size);
 } ROSSYM_CALLBACKS, *PROSSYM_CALLBACKS;
 
-typedef struct _ROSSYM_OWN_FILECONTEXT {
-  BOOLEAN (*ReadFileProc)(PVOID FileContext, PVOID Buffer, ULONG Size);
-  BOOLEAN (*SeekFileProc)(PVOID FileContext, ULONG_PTR Position);
-} ROSSYM_OWN_FILECONTEXT, *PROSSYM_OWN_FILECONTEXT;
-
 struct Dwarf;
 typedef struct Dwarf *PROSSYM_INFO;
 
 VOID RosSymInit(PROSSYM_CALLBACKS Callbacks);
-VOID RosSymInitKernelMode(VOID);
 VOID RosSymInitUserMode(VOID);
 
-BOOLEAN RosSymCreateFromMem(PVOID ImageStart, ULONG_PTR ImageSize,
-                            PROSSYM_INFO *RosSymInfo);
 BOOLEAN RosSymCreateFromFile(PVOID FileContext, PROSSYM_INFO *RosSymInfo);
-BOOLEAN RosSymGetAddressInformation(PROSSYM_INFO RosSymInfo,
-                                    ULONG_PTR RelativeAddress,
                                   ULONG *LineNumber,
-                                    char *FileName,
-                                    char *FunctionName);
+BOOLEAN RosSymGetAddressInformation
+(PROSSYM_INFO RosSymInfo,
ULONG_PTR RelativeAddress,
+ PROSSYM_LINEINFO RosSymLineInfo);
+VOID RosSymFreeInfo(PROSSYM_LINEINFO RosSymLineInfo);
 VOID RosSymDelete(PROSSYM_INFO RosSymInfo);
 
 #endif /* REACTOS_ROSSYM_H_INCLUDED */